chuk-mcp-geocoder
Provides geocoding, reverse geocoding, place discovery, and administrative boundary lookup using OpenStreetMap data via the Nominatim API.
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 of the Eiffel Tower"
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 |
Related MCP server: Geo MCP Worker
Installation
Using uvx (Recommended - No Installation Required!)
The easiest way to use the server is with uvx, which runs it without installing:
uvx chuk-mcp-geocoderThis automatically downloads and runs the latest version. Perfect for Claude Desktop!
Using uv (Recommended for Development)
# Install from PyPI
uv pip install chuk-mcp-geocoder
# Or clone and install from source
git clone <repository-url>
cd chuk-mcp-geocoder
uv sync --devUsing pip (Traditional)
pip install chuk-mcp-geocoderUsage
With Claude Desktop
Option 1: Use the Public Server (Easiest)
Connect to the hosted public server at geocoder.chukai.io:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"geocoder": {
"url": "https://geocoder.chukai.io/mcp"
}
}
}Option 2: Streamable HTTP URL (Local)
Run the server locally and connect via HTTP:
{
"mcpServers": {
"geocoder": {
"url": "http://localhost:8010/mcp"
}
}
}Then start the server:
uvx chuk-mcp-geocoder httpOption 3: Run Locally with uvx
{
"mcpServers": {
"geocoder": {
"command": "uvx",
"args": ["chuk-mcp-geocoder"]
}
}
}Option 4: Run Locally with pip
{
"mcpServers": {
"geocoder": {
"command": "chuk-mcp-geocoder"
}
}
}Standalone
Run the server directly:
# With uvx (recommended - always latest version)
uvx chuk-mcp-geocoder
# With uvx in HTTP mode
uvx chuk-mcp-geocoder http
# Or if installed locally
chuk-mcp-geocoder
chuk-mcp-geocoder httpOr with uv/Python:
# STDIO mode (default, for MCP clients)
uv run chuk-mcp-geocoder
# or: python -m chuk_mcp_geocoder.server
# HTTP mode (for web access and streamable HTTP)
uv run chuk-mcp-geocoder http
# or: python -m chuk_mcp_geocoder.server http
# HTTP mode with custom host/port
uv run chuk-mcp-geocoder http --host 0.0.0.0 --port 9000STDIO 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
uv run mcp-cli --server geocoder,dem,stacThen 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
# Clone the repository
git clone <repository-url>
cd chuk-mcp-geocoder
# Install with uv (recommended)
uv sync --dev
# Or with pip
pip install -e ".[dev]"Running Tests
make test # Run tests
make test-cov # Run tests with coverage
make coverage-report # Show coverage reportCode Quality
make lint # Run linters
make format # Auto-format code
make typecheck # Run type checking
make security # Run security checks
make check # Run all checksBuilding
make build # Build package
make publish-test # Upload to TestPyPI for testing
make publish-manual # Manually upload to PyPI (requires PYPI_TOKEN)
make publish # Create tag and trigger GitHub Actions releaseArchitecture
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 geocoder.chukai.io for easy access:
URL:
https://geocoder.chukai.io/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:
{
"mcpServers": {
"geocoder": {
"url": "https://geocoder.chukai.io/mcp"
}
}
}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
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/chrishayuk/chuk-mcp-geocoder'
If you have feedback or need assistance with the MCP directory API, please join our Discord server