io.github.CloudCorpRecords/geodata

Official registry Other

Geographic data by API key: countries, states, cities, currency rates and IP geolocation.

What can you do with io.github.CloudCorpRecords/geodata?

  • get_country — full country data by ISO2/ISO3 code:
  • list_countries — the paginated catalogue of all 250+
  • search_countries — countries matching a partial query
  • get_states — all states/provinces for a country code.
  • get_cities — all cities for a state, addressed by its
  • get_currency_rate — the live USD exchange rate for a
  • geolocate_ip — country, region, city, coordinates,
  • global_search — one query searched across countries,

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

NPM package @reneturcios/geodata
Claude Code
claude mcp add geodata -- npx -y @reneturcios/geodata@0.1.0 mcp
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "geodata": {
            "command": "npx",
            "args": [
                "-y",
                "@reneturcios/geodata@0.1.0",
                "mcp"
            ]
        }
    }
}
OCI package ghcr.io/cloudcorprecords/geodata:0.1.0
Claude Code
claude mcp add geodata -- docker run -i --rm ghcr.io/cloudcorprecords/geodata:0.1.0 mcp
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "geodata": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "ghcr.io/cloudcorprecords/geodata:0.1.0",
                "mcp"
            ]
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. geodata
  2. Configuration
  3. Tools
  4. CLI
  5. MCP server
  6. Docker
  7. Development
  8. License

geodata

Country, state and city data, live currency rates and IP geolocation, behind one API key. geodata is a thin client for the ApogeoAPI REST API: you bring an API key, and eight tools cover the whole lookup surface — a single country in full detail, the paginated country catalogue, name search, the states and cities underneath a country, the current exchange rate for a country's currency, where an IP address lives, and one search box that spans all three levels.

Every successful call returns the upstream JSON exactly as the API sent it. Nothing is reshaped, renamed or summarised on the way through, so what your client sees is what the service returned.

Configuration

Two environment variables control the client:

  • APOGEOAPI_KEY (required) — your API key, sent on every request as the X-API-Key header. When it is not set, every tool fails with APOGEOAPI_KEY is not set and no request is made.
  • APOGEOAPI_BASE_URL (optional) — API base URL. Defaults to https://api.apogeoapi.com.

Tools

  • get_country — full country data by ISO2/ISO3 code: name, capital, region, population, currency, live USD rate, timezones and phone code. An optional base (for example EUR) changes the currency base for rates.
  • list_countries — the paginated catalogue of all 250+ countries. Optional page, limit and base are sent as query parameters when present.
  • search_countries — countries matching a partial query name.
  • get_states — all states/provinces for a country code.
  • get_cities — all cities for a state, addressed by its numeric state_id.
  • get_currency_rate — the live USD exchange rate for a country's currency (updated every 4 hours), with an optional base.
  • geolocate_ip — country, region, city, coordinates, timezone and EU membership for an IPv4/IPv6 ip.
  • global_search — one query searched across countries, states and cities at once.

Validation fails before any request with a specific message: code must be a non-empty string, country must be a non-empty string, query must be a non-empty string, ip must be a non-empty string, or state_id must be a positive integer. An upstream non-2xx reply fails with apogeoapi error: HTTP <status> and an unreachable API with apogeoapi unreachable.

Endpoint provenance

Four request paths are pinned by the vendor site's worked examples:

  • GET /v1/countries/{code} (with optional ?base=)
  • GET /v1/countries
  • GET /v1/countries/{country}/currency-rate
  • GET /v1/ip/{ip}

The remaining four paths are reconstructions, labelled as such: they follow the site's documented collection pattern but are not pinned by a worked example.

  • GET /v1/countries?search=<query> — reconstruction (used by search_countries)
  • GET /v1/countries/{country}/states — reconstruction (used by get_states)
  • GET /v1/states/{state_id}/cities — reconstruction (used by get_cities)
  • GET /v1/search?q=<query> — reconstruction (used by global_search)

For list_countries, the collection endpoint and its query style are pinned, while the page / limit / base parameter names are a reconstruction.

CLI

Each tool is a subcommand taking one JSON argument string:

export APOGEOAPI_KEY="<your key>"
npx @reneturcios/geodata get_country '{"code":"US"}'
npx @reneturcios/geodata get_country '{"code":"FR","base":"EUR"}'
npx @reneturcios/geodata list_countries '{"page":1,"limit":50}'
npx @reneturcios/geodata search_countries '{"query":"united"}'
npx @reneturcios/geodata get_states '{"country":"US"}'
npx @reneturcios/geodata get_cities '{"state_id":42}'
npx @reneturcios/geodata get_currency_rate '{"country":"DE"}'
npx @reneturcios/geodata geolocate_ip '{"ip":"8.8.8.8"}'
npx @reneturcios/geodata global_search '{"query":"paris"}'
npx @reneturcios/geodata --version

Output is the tool's result text (the upstream JSON on success). Exit codes: 0 on success, 1 on a runtime error (including a validation, missing-key or upstream failure), 2 on a usage error.

MCP server

npx -y @reneturcios/geodata mcp

MCP client config (provide the key through the client's environment):

{
  "mcpServers": {
    "geodata": {
      "command": "npx",
      "args": ["-y", "@reneturcios/geodata", "mcp"],
      "env": {
        "APOGEOAPI_KEY": "<your key>"
      }
    }
  }
}

Docker

docker run -i -e APOGEOAPI_KEY="<your key>" ghcr.io/cloudcorprecords/geodata
docker run --rm -e APOGEOAPI_KEY="<your key>" ghcr.io/cloudcorprecords/geodata get_country '{"code":"US"}'

Development

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (fake fetch only, no network)
npm run dev     # run the CLI from source

License

MIT — Copyright (c) 2026 Rene Turcios

Frequently asked questions

What is io.github.CloudCorpRecords/geodata?

Geographic data by API key: countries, states, cities, currency rates and IP geolocation.

How do I install io.github.CloudCorpRecords/geodata?

It runs on your machine. In Claude Code: claude mcp add geodata -- npx -y @reneturcios/geodata@0.1.0 mcp. For other clients, paste the JSON configuration from this page into their MCP settings.

Does io.github.CloudCorpRecords/geodata need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is io.github.CloudCorpRecords/geodata open source?

Yes. Its code is on GitHub under the MIT license.

Who maintains io.github.CloudCorpRecords/geodata?

It is published by CloudCorpRecords. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.