by chrishayuk
chuk-mcp-geocoder — fast geocoding API using Nominatim & OpenStreetMap for forward & reverse geocoding, place search, bo
Provides geocoding services to convert addresses to coordinates and vice versa, plus find nearby places using OpenStreetMap data.
chuk-mcp-geocoder is a community-built MCP server published by chrishayuk that provides AI assistants with tools and capabilities via the Model Context Protocol. chuk-mcp-geocoder — fast geocoding API using Nominatim & OpenStreetMap for forward & reverse geocoding, place search, bo It is categorized under developer tools.
You can install chuk-mcp-geocoder in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.
Apache-2.0
chuk-mcp-geocoder is released under the Apache-2.0 license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.
Add new capabilities to Claude beyond text generation
Example
Access external data sources, execute code, interact with tools and services
Transform Claude from chatbot to action-taking agent
Provide Claude with access to relevant context and data
Example
Load project documentation, access knowledge bases, query databases
Get more accurate, context-aware responses
Automate multi-step workflows combining AI and external tools
Example
Research → Summarize → Create document → Send notification
Complete complex tasks end-to-end without manual steps
Share your MCP server with the developer community
According to our notes, chuk-mcp-geocoder benefits from clear Model Context Protocol framing — fewer ambiguous “AI plugin” claims.
We wired chuk-mcp-geocoder into a staging workspace; the listing’s GitHub and npm pointers saved time versus hunting across READMEs.
We wired chuk-mcp-geocoder into a staging workspace; the listing’s GitHub and npm pointers saved time versus hunting across READMEs.
We evaluated chuk-mcp-geocoder against two servers with overlapping tools; this profile had the clearer scope statement.
chuk-mcp-geocoder is a well-scoped MCP server in the explainx.ai directory — install snippets and categories matched our Claude Code setup.
chuk-mcp-geocoder has been reliable for tool-calling workflows; the MCP profile page is a good permalink for internal docs.
chuk-mcp-geocoder is a well-scoped MCP server in the explainx.ai directory — install snippets and categories matched our Claude Code setup.
Useful MCP listing: chuk-mcp-geocoder is the kind of server we cite when onboarding engineers to host + tool permissions.
chuk-mcp-geocoder has been reliable for tool-calling workflows; the MCP profile page is a good permalink for internal docs.
chuk-mcp-geocoder has been reliable for tool-calling workflows; the MCP profile page is a good permalink for internal docs.
showing 1-10 of 60
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.
| Tool | Description |
|---|---|
geocode | Place name to coordinates (lat, lon, bbox, address) |
reverse_geocode | Coordinates to place name and address |
bbox_from_place | Place name to [west, south, east, north] bbox for DEM/STAC tools |
nearby_places | Find places near a coordinate at multiple scales |
admin_boundaries | Administrative hierarchy (country, state, county, city, suburb) |
batch_geocode | Geocode multiple place names in one call |
route_waypoints | Geocode waypoints in order and compute route distances |
distance_matrix | Compute haversine distance matrix between multiple points |
geocoder_status | Server status and cache statistics |
geocoder_capabilities | Full capabilities listing with LLM guidance |
The easiest way to use the server is with uvx, which runs it without installing:
uvx chuk-mcp-geocoder
This automatically downloads and runs the latest version. Perfect for Claude Desktop!
# 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 --dev
pip install chuk-mcp-geocoder
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"
}
}
}
Run the server locally and connect via HTTP:
{
"mcpServers": {
"geocoder": {
"url": "http://localhost:8010/mcp"
}
}
}
Then start the server:
uvx chuk-mcp-geocoder http
{
"mcpServers": {
"geocoder": {
"command": "uvx",
"args": ["chuk-mcp-geocoder"]
}
}
}
{
"mcpServers": {
"geocoder": {
"command": "chuk-mcp-geocoder"
}
}
}
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 http
Or 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 9000
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.
uv run mcp-cli --server geocoder,dem,stac
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.
| Environment Variable | Description | Default |
|---|---|---|
NOMINATIM_EMAIL | Contact email for Nominatim API | (none) |
NOMINATIM_BASE_URL | Custom Nominatim instance URL | https://nominatim.openstreetmap.org |
MCP_STDIO | Force stdio transport mode | (auto-detect) |
# 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]"
make test # Run tests
make test-cov # Run tests with coverage
make coverage-report # Show coverage report
make lint # Run linters
make format # Auto-format code
make typecheck # Run type checking
make security # Run security checks
make check # Run all checks
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 release
Follows the same 5-layer pattern as chuk-mcp-dem:
extra="forbid", to_text())@mcp.tool() decoratorsA public instance is hosted at geocoder.chukai.io for easy access:
https://geocoder.chukai.io/mcpSimply add it to your Claude Desktop config:
{
"mcpServers": {
"geocoder": {
"url": "https://geocoder.chukai.io/mcp"
}
}
}
All geocoding data comes from OpenStreetMap via the Nominatim API.
Apache-2.0
Prerequisites
Time Estimate
15-60 minutes depending on server complexity
Steps
Troubleshooting
✓ Do
✗ Don't
💡 Pro Tips
Architecture
Model Context Protocol standardizes how AI hosts (Claude, Cursor) communicate with external tools and data sources through server implementations.
Protocols
Compatibility
✓ Use when
Use when you need Claude to access external data, execute actions, or integrate with tools. Best for extending AI capabilities beyond conversation.
✗ Avoid when
Avoid when native integrations exist (use official APIs directly), for real-time critical systems, or when security/compliance requires zero external dependencies.