maps-mcp
Planned integration with Google Maps Platform for Places (New), Routes, Geocoding, and Address Validation, with later support for Solar, Area Insights, Route Optimization, and Isochrones.
Planned integration with OpenStreetMap via Nominatim for geocoding, reverse geocoding, and lookup, and via Overpass for POI and feature queries.
Planned integration with Photon as an open geocoder provider for geocoding and place lookup.
Click on "Deploy 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., "@maps-mcp ping the maps server and show which providers are enabled"
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.
maps-mcp
An MCP server that gives AI assistants map capabilities (geocoding, places, routing, distance matrices, isochrones and static maps) from several providers behind one coherent tool surface.
Status: early development. The server skeleton runs over stdio and streamable HTTP and exposes a
pingtool. No provider adapters yet. The backlog is in Issues and the design questions are in Discussions.
Planned provider coverage
Area | Providers |
Google Maps Platform | Places (New), Routes, Geocoding, Address Validation (later: Solar, Area Insights, Route Optimization, Isochrones) |
OpenStreetMap | Nominatim (geocode, reverse, lookup), Overpass (POI and feature queries) |
Open-source routing engines | OSRM, Valhalla, OpenRouteService, GraphHopper |
Other open geocoders and tiles | Photon, Pelias, static map rendering |
Related MCP server: mapsi-mcp
Approach
Stack: Python 3.11+ and FastMCP 4.1.4 (
fastmcp, built on the officialmcpPython SDK). Tools and provider calls areasyncthroughout.Transports: stdio (default, for local MCP clients) and streamable HTTP (for remote use), both from the start.
One tool surface: provider-agnostic tools (
geocode,search_places,get_directions, ...) with an explicitprovideroption and configurable fallbacks. This is still an open design question, so join the discussion.Policy-aware: each adapter respects the provider's usage policy and terms (rate limits, caching, attribution).
Scrum, epics first: work is organised as epics, stories and spikes. See CONTRIBUTING.md.
Running the server
uv run maps-mcp # stdio (default)
uv run maps-mcp --transport http # streamable HTTP on http://127.0.0.1:8000/mcp
uv run maps-mcp --transport http --host 0.0.0.0 --port 9000
uv run maps-mcp --versionOption | Environment variable | Default | Notes |
|
|
|
|
|
|
| HTTP only. Local only by default |
|
|
| HTTP only |
Command-line options win over environment variables. The HTTP endpoint is served at /mcp.
Security: the HTTP transport has no authentication yet (tracked in #84). It binds to
127.0.0.1by default. Do not expose it beyond localhost or a trusted network until auth lands.
The ping tool
ping takes no arguments and returns the server version and the enabled providers, identically on both transports:
{ "version": "0.1.0", "providers": [] }providers is empty until the provider registry lands.
Connecting MCP clients
Replace /absolute/path/to/maps-mcp with your checkout.
Claude Code, stdio:
claude mcp add maps-mcp -- uv run --directory /absolute/path/to/maps-mcp maps-mcpClaude Desktop, stdio (~/Library/Application Support/Claude/claude_desktop_config.json on macOS). Claude Desktop does not inherit your shell PATH, so use the absolute path from which uv:
{
"mcpServers": {
"maps-mcp": {
"command": "/opt/homebrew/bin/uv",
"args": ["run", "--directory", "/absolute/path/to/maps-mcp", "maps-mcp"]
}
}
}Claude Code, streamable HTTP (start the server first with uv run maps-mcp --transport http):
claude mcp add --transport http maps-mcp http://127.0.0.1:8000/mcpor in a project .mcp.json, here for a hosted deployment:
{
"mcpServers": {
"maps-mcp": {
"type": "http",
"url": "https://maps-mcp.example.com/mcp"
}
}
}Claude Desktop, streamable HTTP: add a remote server under Settings, Connectors, Add custom connector. That route goes through Anthropic's cloud, so the URL must be publicly reachable (and, until #84 lands, unauthenticated, so do not do this with real deployments yet). For a server on your own machine, bridge it to stdio with mcp-remote:
{
"mcpServers": {
"maps-mcp": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://127.0.0.1:8000/mcp"]
}
}
}MCP Inspector
# stdio: the Inspector launches the server itself
npx @modelcontextprotocol/inspector uv run maps-mcp
# streamable HTTP: start the server in one terminal ...
uv run maps-mcp --transport http
# ... then open the Inspector, pick "Streamable HTTP" and enter http://127.0.0.1:8000/mcp
npx @modelcontextprotocol/inspectorFor a non-interactive check, use the Inspector CLI mode:
npx @modelcontextprotocol/inspector --cli .venv/bin/maps-mcp --method tools/call --tool-name ping
npx @modelcontextprotocol/inspector --cli http://127.0.0.1:8000/mcp --transport http --method tools/call --tool-name pingDevelopment
Requires Python 3.11+ and uv (brew install uv on macOS, see the uv docs for other platforms).
uv sync # install the project and dev tools into .venv
uv run ruff check . # lint (add --fix to autofix)
uv run ruff format . # format
uv run mypy # type-check (strict)
uv run pytest # tests
uv run maps-mcp # run over stdio (see "Running the server" for HTTP)Before opening a PR, make sure all of these are clean:
uv run ruff check . && uv run ruff format --check . && uv run mypy && uv run pytestAdd dependencies with uv add <pkg> (or uv add --dev <pkg>) and commit the updated uv.lock.
Contributing
Start with Discussions for ideas and design questions, then pick up an issue labelled ready. Details are in CONTRIBUTING.md.
License
MIT. The licence choice is open for discussion before the first release.
Available Tools
1 toolpingPingA
Check that the server is up. Returns the server version and the enabled providers.
Inputs: no named parameters. Returns: version, providers
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 1 tool
There is only one tool, so there is no possibility of confusing it with another. Its purpose (health check) is stated unambiguously.
The single name `ping` is a clean, lowercase verb with no competing conventions to clash with. There is no multi-tool pattern to evaluate, so consistency is only trivially satisfied.
A server named maps-mcp exposes exactly one trivial health-check tool. This is an extreme mismatch between the implied mapping domain and the actual one-tool surface.
The surface contains no mapping operations at all — no geocoding, routing, place search, or map retrieval. Only a liveness probe exists, leaving any real workflow impossible.
Maintenance
Related MCP Connectors
Routing, geocoding, places, matrix and map tools for location-aware AI workflows.
Geocoding, routing, isochrones, traffic, weather, and place search for AI agents. 19 MCP tools.
Maps, geocoding and time zones for AI coding agents, on OpenStreetMap, with hard prepaid spend caps.
Geocode, reverse-geocode, autocomplete, route and search places.
Related MCP Servers
- AlicenseAqualityDmaintenanceProduction-ready MCP server for Google Maps Platform APIs, providing 11 tools for directions, places, geocoding, traffic, and road data to empower AI agents with location intelligence.1134 PyPI4Apache 2.0
- AlicenseAqualityDmaintenanceGeospatial API tools for AI agents — geocoding, reverse geocoding, routing, isochrone, distance matrix, static maps, H3 hexagons, elevation, GPS map-matching, point-in-polygon, address normalisation, timezone lookup, and batch geocoding. Built on OpenStreetMap infrastructure. Cost-effective alternative to Google Maps API.1834 npmMIT

Magic Lane MCP Serverofficial
AlicenseBqualityCmaintenanceEnables AI agents to become geospatially intelligent assistants with tools for location search, smart routing, round trip planning, reverse geocoding, isochrone analysis, route visualization, geofence management, and interactive map display.817 npm8Apache 2.0- AlicenseAqualityDmaintenanceA Model Context Protocol (MCP) server for Google Maps — routing, place discovery, and commute comparison over stdio.41ISC