Geodata

io.github.CloudCorpRecordsPublished by GitHub account CloudCorpRecordsv0.1.0Updated Nov 4, 2026

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

VerifiedSTDIODesktop only

Overview

Geodata's local MCP server; no sign-in required; STDIO; 8 tools.

No AI overview yet: these facts come from the registry entry and the server itself.

Installation

In SourceWeft

  1. Open Geodata in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

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:

bash
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

bash
npx -y @reneturcios/geodata mcp

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

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

Docker

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

Development

bash
npm installnpm 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

Source: README.md at commit 9cbf789

Tools

8

get_country

Full country data by ISO2/ISO3 code — name, capital, region, population, currency, live USD rate, timezones, phone code.

Parametersbasecoderequired

list_countries

Paginated list of all 250+ countries.

Parametersbasepagelimit

search_countries

Search countries by partial name.

Parametersqueryrequired

get_states

All states/provinces for a country.

Parameterscountryrequired

get_cities

All cities for a state by numeric state ID.

Parametersstate_idrequired

get_currency_rate

Live USD exchange rate for a country's currency (updated every 4 hours).

Parametersbasecountryrequired

geolocate_ip

Country, region, city, coordinates, timezone, and EU membership for any IPv4/IPv6 address.

Parametersiprequired

Version history

1
  1. v0.1.0LatestNov 4, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts