Geo MCP
Geo MCP gives coding agents two read-only geocoding tools backed by Photon and OpenStreetMap:
search_placesfinds addresses, settlements, streets, and named features.reverse_geocodefinds the nearest place for a latitude and longitude.
The hosted Streamable HTTP endpoint is:
https://app.chibigeo.com/mcp
It uses your existing ChibiGeo account, plan, quota, and ck_… API key. Tool
discovery is public; a lookup requires the key and consumes one normal ChibiGeo
request. Geo MCP does not provide routing, POI discovery, maps, batch requests,
or an embedded LLM.
Create a suitable key
Create a dedicated key in the ChibiGeo dashboard. A server-side MCP client
normally sends no browser Origin, so do not add an Origin allowlist to this
key. Fixed-IP allowlists are suitable only when the MCP client has a stable,
known outbound IP.
Put the key in your environment instead of committing it:
export CHIBIGEO_API_KEY='ck_your_key_here'
Codex
Current Codex releases can read a bearer token from an environment variable:
codex mcp add chibigeo \
--url https://app.chibigeo.com/mcp \
--bearer-token-env-var CHIBIGEO_API_KEY
Verify with codex mcp get chibigeo.
Claude Code
Add this project-level .mcp.json (or use the equivalent user-level config):
{
"mcpServers": {
"chibigeo": {
"type": "http",
"url": "https://app.chibigeo.com/mcp",
"headers": {
"Authorization": "Bearer ${CHIBIGEO_API_KEY}"
}
}
}
}
Claude Code expands the environment variable when it reads the configuration.
Use /mcp or claude mcp get chibigeo to verify the connection.
Cursor
Add this to .cursor/mcp.json for one project or ~/.cursor/mcp.json globally:
{
"mcpServers": {
"chibigeo": {
"url": "https://app.chibigeo.com/mcp",
"headers": {
"Authorization": "Bearer ${env:CHIBIGEO_API_KEY}"
}
}
}
}
Cursor resolves ${env:CHIBIGEO_API_KEY} from the environment. Enable the
server under Customize → MCP and inspect MCP Logs if it does not connect.
Tool contracts
search_places
query is required and limited to 256 characters. Optional inputs are
language, limit (1–10, default 5), focus, bounding_box, one
country_code, and one Photon place_type (house, street, locality,
district, city, county, state, country, or other).
The result contains places in Photon rank order. Each Place uses named
latitude/longitude and optional label, address, bounds, kind, and OSM source
fields. No match is a successful result with places: [].
reverse_geocode
latitude and longitude are required. Optional inputs are language and
radius_km from 0 to 100. It requests one result. No match is a successful
result with place: null.
Both results include © OpenStreetMap contributors and the OpenStreetMap
copyright URL. Geo MCP never returns raw Photon GeoJSON, arbitrary extra
fields, or an invented confidence score.
Errors and privacy
Expected failures are returned with stable codes such as missing_api_key,
invalid_api_key, key_restricted, rate_limited, quota_exceeded,
subscription_past_due, upstream_timeout, and upstream_unavailable.
Account and quota details remain in the ChibiGeo dashboard.
Search text, coordinates, and geocoding results are processed transiently and
are not stored or logged. The adapter does not cache or retry lookups. API keys
must be sent only in Authorization: Bearer … or X-Api-Key; URL credentials
are not accepted by Geo MCP.
Geo MCP supports MCP revisions 2026-07-28 and 2025-11-25. OAuth and official
ChatGPT custom-app support are not part of this beta.