Provides forward and reverse geocoding, bounding box extraction, nearby place discovery, and administrative boundary lookup using OpenStreetMap data via the Nominatim API. It also supports batch geocoding, route waypoint processing, and distance matrix calculations.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@chuk-mcp-geocoderfind the coordinates and address for the Empire State Building"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
chuk-mcp-geocoder
Geocoding & Place Discovery MCP Server via Nominatim/OpenStreetMap.
Provides forward/reverse geocoding, bounding box extraction, nearby places discovery, batch geocoding, route waypoints, and administrative boundary lookup — designed to work alongside other MCP geospatial servers (DEM, STAC, etc.).
This is a demonstration project provided as-is for learning and testing purposes.
Tools
Tool | Description |
| Place name to coordinates (lat, lon, bbox, address) |
| Coordinates to place name and address |
| Place name to |
| Find places near a coordinate at multiple scales |
| Administrative hierarchy (country, state, county, city, suburb) |
| Geocode multiple place names in one call |
| Geocode waypoints in order and compute route distances |
| Compute haversine distance matrix between multiple points |
| Server status and cache statistics |
| Full capabilities listing with LLM guidance |
Installation
Using uvx (Recommended - No Installation Required!)
The easiest way to use the server is with uvx, which runs it without installing:
This automatically downloads and runs the latest version. Perfect for Claude Desktop!
Using uv (Recommended for Development)
Using pip (Traditional)
Usage
With Claude Desktop
Option 1: Use the Public Server (Easiest)
Connect to the hosted public server at chuk-mcp-geocoder.fly.dev:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
Option 2: Streamable HTTP URL (Local)
Run the server locally and connect via HTTP:
Then start the server:
Option 3: Run Locally with uvx
Option 4: Run Locally with pip
Standalone
Run the server directly:
Or with uv/Python:
STDIO mode is for MCP clients like Claude Desktop and mcp-cli. HTTP mode runs a web server on http://localhost:8010 for HTTP-based MCP clients.
Usage with MCP CLI
Then ask:
"Get the elevation profile for Mersea Island"
The LLM will use bbox_from_place or geocode to resolve the location, then pass coordinates to the DEM server.
Configuration
Environment Variable | Description | Default |
| Contact email for Nominatim API | (none) |
| Custom Nominatim instance URL |
|
| Force stdio transport mode | (auto-detect) |
Development
Setup
Running Tests
Code Quality
Building
Architecture
Follows the same 5-layer pattern as chuk-mcp-dem:
core/nominatim.py — Async HTTP client with rate limiting and LRU cache
core/geocoder.py — Async manager with validation and typed dataclass results
models/responses.py — Pydantic v2 response models (
extra="forbid",to_text())constants.py — All configuration, messages, and metadata
tools/*/api.py — MCP tool registration with
@mcp.tool()decorators
Public Server
A public instance is hosted at chuk-mcp-geocoder.fly.dev for easy access:
URL:
https://chuk-mcp-geocoder.fly.dev/mcpProtocol: MCP over HTTPS (Streamable HTTP)
Free to use: No API key required
Always up-to-date: Running the latest version
Simply add it to your Claude Desktop config:
Data Source
All geocoding data comes from OpenStreetMap via the Nominatim API.
Data license: ODbL 1.0
API rate limit: 1 request/second (public API)
Results are cached in-memory (1 hour TTL)
License
Apache-2.0