developer-tools

chuk-mcp-geocoder

by chrishayuk

chuk-mcp-geocoder — fast geocoding API using Nominatim & OpenStreetMap for forward & reverse geocoding, place search, bo

An MCP server providing geocoding and place discovery services via Nominatim and OpenStreetMap. It enables users to perform forward and reverse geocoding, extract bounding boxes, and find nearby places or administrative hierarchies.

github stars

0

Uses free OpenStreetMap dataNo API key required

best for

  • / Location-based applications and services
  • / Mapping and GIS development
  • / Address validation and standardization
  • / Geographic data analysis

capabilities

  • / Convert addresses to latitude/longitude coordinates
  • / Convert coordinates to human-readable addresses
  • / Extract bounding boxes for locations
  • / Find nearby places and points of interest
  • / Retrieve administrative hierarchies for locations

what it does

Provides geocoding services to convert addresses to coordinates and vice versa, plus find nearby places using OpenStreetMap data.

about

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.

how to install

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.

license

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.

readme

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.

Python 3.11+

Tools

ToolDescription
geocodePlace name to coordinates (lat, lon, bbox, address)
reverse_geocodeCoordinates to place name and address
bbox_from_placePlace name to [west, south, east, north] bbox for DEM/STAC tools
nearby_placesFind places near a coordinate at multiple scales
admin_boundariesAdministrative hierarchy (country, state, county, city, suburb)
batch_geocodeGeocode multiple place names in one call
route_waypointsGeocode waypoints in order and compute route distances
distance_matrixCompute haversine distance matrix between multiple points
geocoder_statusServer status and cache statistics
geocoder_capabilitiesFull 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:

uvx chuk-mcp-geocoder

This 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 --dev

Using pip (Traditional)

pip install chuk-mcp-geocoder

Usage

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 http

Option 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 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.

Usage with MCP CLI

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.

Configuration

Environment VariableDescriptionDefault
NOMINATIM_EMAILContact email for Nominatim API(none)
NOMINATIM_BASE_URLCustom Nominatim instance URLhttps://nominatim.openstreetmap.org
MCP_STDIOForce 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 report

Code Quality

make lint      # Run linters
make format    # Auto-format code
make typecheck # Run type checking
make security  # Run security checks
make check     # Run all checks

Building

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

Architecture

Follows the same 5-layer pattern as chuk-mcp-dem:

  1. core/nominatim.py — Async HTTP client with rate limiting and LRU cache
  2. core/geocoder.py — Async manager with validation and typed dataclass results
  3. models/responses.py — Pydantic v2 response models (extra="forbid", to_text())
  4. constants.py — All configuration, messages, and metadata
  5. 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/mcp
  • Protocol: 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

FAQ

What is the chuk-mcp-geocoder MCP server?
chuk-mcp-geocoder is a Model Context Protocol (MCP) server profile on explainx.ai. MCP lets AI hosts (e.g. Claude Desktop, Cursor) call tools and resources through a standard interface; this page summarizes categories, install hints, and community ratings.
How do MCP servers relate to agent skills?
Skills are reusable instruction packages (often SKILL.md); MCP servers expose live capabilities. Teams frequently combine both—skills for workflows, MCP for APIs and data. See explainx.ai/skills and explainx.ai/mcp-servers for parallel directories.
How are reviews shown for chuk-mcp-geocoder?
This profile displays 10 aggregated ratings (sample rows for discoverability plus signed-in user reviews). Average score is about 4.5 out of 5—verify behavior in your own environment before production use.
MCP server reviews

Ratings

4.510 reviews
  • Shikha Mishra· Oct 10, 2024

    chuk-mcp-geocoder is among the better-indexed MCP projects we tried; the explainx.ai summary tracks the official description.

  • Piyush G· Sep 9, 2024

    We evaluated chuk-mcp-geocoder against two servers with overlapping tools; this profile had the clearer scope statement.

  • Chaitanya Patil· Aug 8, 2024

    Useful MCP listing: chuk-mcp-geocoder is the kind of server we cite when onboarding engineers to host + tool permissions.

  • Sakshi Patil· Jul 7, 2024

    chuk-mcp-geocoder reduced integration guesswork — categories and install configs on the listing matched the upstream repo.

  • Ganesh Mohane· Jun 6, 2024

    I recommend chuk-mcp-geocoder for teams standardizing on MCP; the explainx.ai page compares cleanly with sibling servers.

  • Oshnikdeep· May 5, 2024

    Strong directory entry: chuk-mcp-geocoder surfaces stars and publisher context so we could sanity-check maintenance before adopting.

  • Dhruvi Jain· Apr 4, 2024

    chuk-mcp-geocoder has been reliable for tool-calling workflows; the MCP profile page is a good permalink for internal docs.

  • Rahul Santra· Mar 3, 2024

    According to our notes, chuk-mcp-geocoder benefits from clear Model Context Protocol framing — fewer ambiguous “AI plugin” claims.

  • Pratham Ware· Feb 2, 2024

    We wired chuk-mcp-geocoder into a staging workspace; the listing’s GitHub and npm pointers saved time versus hunting across READMEs.

  • Yash Thakker· Jan 1, 2024

    chuk-mcp-geocoder is a well-scoped MCP server in the explainx.ai directory — install snippets and categories matched our Claude Code setup.