Skip to content

MCP server

A remote MCP server (Streamable HTTP) whose tools are the API's ops, with descriptions written for a model choosing a tool.

Endpoint: https://geo-coder-service.vercel.app/mcp. Authenticate with an API key header, or with OAuth at https://geo-coder-service.vercel.app/mcp?auth=required for apps that sign you in. Without either, the public tools still work.

Claude Code

claude mcp add --transport http geocode https://geo-coder-service.vercel.app/mcp \  --header "Authorization: Bearer $GEOCODE_API_KEY"

Or install the plugin, which adds the server plus skills, and signs you in in the browser on first use.

Claude.ai and ChatGPT connectors

Add a custom connector with the URL https://geo-coder-service.vercel.app/mcp?auth=required. The app opens a sign-in page; approve access and the tools appear in the chat.

Cursor, Windsurf and JSON configs

mcp.json
{  "mcpServers": {    "geocode": {      "url": "https://geo-coder-service.vercel.app/mcp",      "headers": {        "Authorization": "Bearer ${GEOCODE_API_KEY}"      }    }  }}

Codex

~/.codex/config.toml
[mcp_servers.geocode]
url = "https://geo-coder-service.vercel.app/mcp"
http_headers = { "Authorization" = "Bearer geo_…" }

Or run npx @meterapp/geocode install to write the config for Claude Code, Codex and Cursor in one go.

stdio (any host)

For hosts that only launch a command, the CLI is also a stdio MCP server with the same tools:

{  "mcpServers": {    "geocode": {      "command": "npx",      "args": [        "-y",        "@meterapp/geocode",        "mcp"      ],      "env": {        "GEOCODE_API_KEY": "geo_…"      }    }  }}

Tools

One tool per op, same name and input as the REST API. Read-only tools carry readOnlyHint, so hosts can run them without asking.

ToolCost
search_boundariesFree
get_boundary1 unit
export_boundary1 unit
reverse_boundaries1 unit
list_childrenFree
contains_points1 unit per 1,000 points (up to 10,000 per call)
union_boundaries1 unit per boundary (up to 50)
create_area50 units
get_accountFree
update_profileFree
get_usageFree
list_api_keysFree
create_api_keyFree
revoke_api_keyFree
get_email_preferencesFree
update_email_preferencesFree
list_feedbackFree
get_feedbackFree
request_featureFree
report_issueFree
upvote_feedbackFree
remove_feedback_voteFree
comment_on_feedbackFree
get_pricingFree

Things to ask

  • “Get the boundary of Kreuzberg as GeoJSON and save it to kreuzberg.geojson.”
  • “Which county and city is 37.80, −122.27 in?”
  • “List the counties of Colorado with their populations.”
  • “Build one polygon for Alameda and Contra Costa counties minus Oakland.”
  • “Which of the stores in stores.csv are inside Berlin?”

The server's instructions tell the model the workflow (search, then get; never guess an id; batch points) and what each call costs. A machine-readable server card is at /.well-known/mcp.json.