MCP Server

Hardiness zones, countries, and raw climate values as tools your agent can call directly. Endpoint: https://coords.zone/mcp.

Claude Code

One command, no config file:

claude mcp add --transport http coords-zone https://coords.zone/mcp

With an API key, so the calls count against your account rather than the anonymous quota:

claude mcp add --transport http coords-zone https://coords.zone/mcp \
  --header "Authorization: Bearer czk_your_key_here"

Check it connected with /mcp inside Claude Code, or claude mcp list from the shell.

Claude Desktop, Cursor, and other clients

Most clients take the same JSON. Drop it into the client's MCP config — claude_desktop_config.json for Claude Desktop, .cursor/mcp.json for Cursor:

{
  "mcpServers": {
    "coords-zone": {
      "type": "http",
      "url": "https://coords.zone/mcp"
    }
  }
}

With an API key:

{
  "mcpServers": {
    "coords-zone": {
      "type": "http",
      "url": "https://coords.zone/mcp",
      "headers": {
        "Authorization": "Bearer czk_your_key_here"
      }
    }
  }
}

Tools

All three take lat and lng as numbers in decimal degrees, and return the same fields as the REST endpoint of the same name — see the API reference for the response schemas.

Name Returns
get_zone USDA hardiness zone, plus the local zone where the country has its own system
get_country Country name, ISO code, and the zone scale used there
get_climate Raw temperature extremes and first/last frost dates

Authentication & quotas

Authentication is the same Authorization: Bearer czk_… header as the REST API, and the server works without one — an unauthenticated agent rides the anonymous free tier. Create a key on your dashboard.

Only tools/call counts against your quota: connecting, discovering the server, and listing tools are all free. A call that runs out of quota comes back as a tool error naming the page to sign up or upgrade on, rather than as an HTTP error — MCP clients treat a non-200 as a transport failure and drop the body, so the link would never reach the agent.

Leave the key's allowed domains blank. That allowlist matches the browser's Origin header, which an MCP client never sends — setting it will reject every call your agent makes.

Protocol details

  • Streamable HTTP transport at POST https://coords.zone/mcp.
  • Protocol revisions 2026-07-28 and 2025-11-25 are both accepted; a client that declares no revision is taken for a pre-2026 one and served rather than turned away. Responses carry the 2026-07-28 fields in every revision — they are additive, and a client that doesn't know them ignores them.
  • Stateless: there is no session id, and server/discover, tools/list and tools/call all work without a prior handshake.
  • Responses are SSE-framed, one message per request.

Check it by hand

curl -s https://coords.zone/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'