apogeoapi-mcp
@apogeoapi/mcp
MCP (Model Context Protocol) server for ApogeoAPI — geographic data, live exchange rates, and IP geolocation for Claude Desktop, Cursor, and any MCP-compatible AI assistant.
What it does
This server exposes ApogeoAPI's REST endpoints as tools that AI assistants can call directly. Ask Claude "What is the current USD rate for Argentina?" or "Geolocate IP 8.8.8.8" and it will call the right tool automatically.
Related MCP server: Geodb Cities MCP Server
Available tools
Tool | Description | Plan required |
| Full country data by ISO2/ISO3 code — name, capital, region, population, currency, live USD rate, timezones, phone code | Free |
| Paginated list of all 250+ countries | Free |
| Search countries by partial name | Free |
| All states/provinces for a country | Basic+ |
| All cities for a state by numeric state ID | Basic+ |
| Live USD exchange rate for a country's currency (updated every 4 hours) | Basic+ |
| Country, region, city, coordinates, timezone, and EU membership for any IPv4/IPv6 | Basic+ |
| Search across countries, states, and cities in one query | Free |
Installation
Claude Desktop
Add the following to your claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"apogeoapi": {
"command": "npx",
"args": ["-y", "@apogeoapi/mcp"],
"env": {
"APOGEOAPI_KEY": "apogeoapi_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}Restart Claude Desktop after saving the file. The ApogeoAPI tools will appear in Claude's tool list.
Cursor
Add the same block under mcpServers in Cursor's MCP configuration file (~/.cursor/mcp.json).
Manual build
git clone https://github.com/APOGEOAPI/apogeoapi-mcp.git
cd apogeoapi-mcp
npm install
npm run buildThen reference the built file directly:
{
"mcpServers": {
"apogeoapi": {
"command": "node",
"args": ["/absolute/path/to/mcp-server/dist/index.js"],
"env": {
"APOGEOAPI_KEY": "apogeoapi_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}Getting an API key
Create a free account at app.apogeoapi.com
Go to API Keys and generate a new key
Paste the key into the
APOGEOAPI_KEYenvironment variable above
No credit card required for the Free plan (1,000 req/month).
Plan requirements
Feature | Free | Basic ($19/mo) | Starter ($29/mo) | Professional ($79/mo) |
Countries (list, search, get) | Yes | Yes | Yes | Yes |
Global search | Yes | Yes | Yes | Yes |
States & cities | No | Yes | Yes | Yes |
Live currency rates | No | Yes | Yes | Yes |
IP geolocation | No | Yes | Yes | Yes |
Monthly requests | 1,000 | 15,000 | 100,000 | 500,000 |
Upgrade at app.apogeoapi.com/dashboard/billing.
Environment variables
Variable | Required | Description |
| Yes | Your API key from the dashboard |
| No | Override the API base URL (default: |
License
MIT
Available Tools
8 toolsgeolocate_ipA
Geolocate an IPv4 or IPv6 address — returns country, region, city, coordinates, timezone, and EU membership. Requires Starter plan or above.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | IPv4 or IPv6 address to geolocate (e.g. 8.8.8.8 or 2001:4860:4860::8888) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates the operation's purpose and output format, and importantly discloses the subscription requirement ('Requires Starter plan or above'), which is crucial behavioral context not captured elsewhere. It doesn't mention rate limits, error conditions, or authentication details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two tightly packed sentences. The first sentence covers purpose, input, and output. The second sentence provides critical subscription requirement. Every word earns its place with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter lookup tool with no output schema, the description provides excellent context about what data is returned and subscription requirements. It could be more complete by mentioning response format or error cases, but given the tool's simplicity and lack of annotations, it's substantially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the single 'address' parameter with examples. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Geolocate') and resource ('IPv4 or IPv6 address'), and distinguishes it from siblings by focusing on IP-based geolocation rather than country/city/currency lookups. It specifies the exact data returned (country, region, city, coordinates, timezone, EU membership).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool (for IP geolocation with detailed location data) and implicitly distinguishes it from siblings that handle broader geographic queries. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_citiesB
Get all cities for a state/province by state ID. Requires Starter plan or above.
| Name | Required | Description | Default |
|---|---|---|---|
| state_id | Yes | Numeric state ID (from get_states response) | |
| page | No | ||
| limit | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions a plan requirement ('Starter plan or above'), which is useful context about access control. However, it lacks critical behavioral details: whether this is a read-only operation, if it supports pagination (implied by 'page' parameter but not explained), rate limits, error handling, or what the output looks like (no output schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two short sentences with zero wasted words. It front-loads the core purpose and follows with a critical constraint. Every sentence earns its place by providing essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, no annotations, no output schema), the description is incomplete. It covers the basic purpose and a plan requirement but misses parameter explanations, behavioral traits like pagination or safety, and output details. For a data retrieval tool with multiple parameters, this leaves significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only 'state_id' has a description), so the description must compensate. It mentions 'state ID' but doesn't clarify its source ('from get_states response' is in the schema, not the description). It doesn't explain 'page', 'limit', or 'fields' parameters at all, leaving three of four parameters semantically undocumented in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('cities'), specifying they are retrieved 'for a state/province by state ID'. It distinguishes from siblings like 'get_states' by focusing on cities rather than states, though it doesn't explicitly contrast with 'list_countries' or 'search_countries' which might also return location data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing cities for a specific state, but provides no explicit guidance on when to use this tool versus alternatives like 'global_search' or 'search_countries'. The 'Requires Starter plan or above' is a prerequisite, not a usage guideline. No when-not-to-use or alternative tool recommendations are included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_countryA
Get full data for a country by ISO2 or ISO3 code — includes name, capital, region, population, currency, live USD exchange rate, timezones, and phone code.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ISO2 (e.g. AR) or ISO3 (e.g. ARG) country code | |
| fields | No | Detail level: basic (fast), standard (default), full (all fields) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool retrieves data including a 'live USD exchange rate', implying real-time or updated information, which is useful behavioral context. However, it doesn't disclose other traits like rate limits, authentication needs, error handling, or whether it's a read-only operation (though implied by 'Get'), leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the purpose and key details (ISO codes, data fields). Every part earns its place by clarifying scope and content without redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description does a decent job for a simple lookup tool by specifying the data returned. However, it could be more complete by mentioning potential errors (e.g., invalid codes), response format, or limitations, especially since it lacks structured output documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (code and fields) with descriptions and enum values. The description adds marginal value by mentioning ISO2/ISO3 codes and listing some data fields, but doesn't provide additional syntax, format details, or constraints beyond what the schema specifies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'full data for a country', specifying it retrieves comprehensive information including name, capital, region, population, currency, exchange rate, timezones, and phone code. It distinguishes from siblings like list_countries (which likely lists countries without details) and search_countries (which likely searches by name rather than code).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating 'by ISO2 or ISO3 code', suggesting this tool is for looking up specific countries when codes are known. However, it doesn't explicitly state when to use this versus alternatives like list_countries (for browsing) or search_countries (for name-based searches), nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_currency_rateA
Get the live USD exchange rate for a country's currency. Updated every 4 hours. Requires Starter plan or above.
| Name | Required | Description | Default |
|---|---|---|---|
| country_code | Yes | ISO2 or ISO3 country code (e.g. AR, BR, JP) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively adds context beyond the input schema by specifying update frequency ('Updated every 4 hours') and access requirements ('Requires Starter plan or above'), which are crucial for understanding rate limits and authentication needs. It doesn't contradict any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by two concise sentences that add valuable context (update frequency and plan requirements). Every sentence earns its place with no wasted words, making it highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is largely complete. It covers purpose, behavioral traits, and usage hints. However, it could be slightly more complete by explicitly mentioning the return value (e.g., exchange rate as a number) or error cases, though this is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the parameter 'country_code' well-documented in the schema as an ISO2 or ISO3 code. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline of 3 without compensating further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get the live USD exchange rate') and resource ('for a country's currency'), distinguishing it from sibling tools like geolocate_ip or get_country that handle different data types. It precisely defines what the tool does without being vague or tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning 'live USD exchange rate' and 'Updated every 4 hours', suggesting when to use it for current rates. However, it lacks explicit guidance on when to choose this tool over alternatives (e.g., if historical rates are needed) or any exclusions, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statesB
Get all states/provinces for a country. Requires Starter plan or above.
| Name | Required | Description | Default |
|---|---|---|---|
| country_code | Yes | ISO2 or ISO3 country code | |
| page | No | ||
| limit | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions a plan requirement ('Starter plan or above'), which is useful context, but fails to describe other key behaviors such as pagination handling (implied by 'page' and 'limit' parameters), rate limits, error conditions, or the format of returned data. This is inadequate for a tool with multiple parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences that are front-loaded and waste no words. The first sentence states the core purpose, and the second adds essential context about plan requirements, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 parameters, low schema coverage, no annotations, no output schema), the description is incomplete. It lacks details on parameter usage, return values, error handling, and behavioral traits beyond the plan requirement. For a data retrieval tool with pagination and field options, this leaves significant gaps for an AI agent to understand how to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low at 25%, with only 'country_code' having a description in the schema. The description does not add any parameter-specific information beyond what the schema provides, such as explaining the 'fields' enum options or pagination behavior. However, it implicitly supports the 'country_code' parameter by mentioning 'for a country', offering minimal compensation. This meets the baseline for partial coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get all states/provinces for a country.' It specifies the verb ('Get') and resource ('states/provinces'), and includes a scope ('for a country'). However, it does not explicitly differentiate from sibling tools like 'get_cities' or 'get_country', which reduces it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context: 'Requires Starter plan or above' indicates a prerequisite, but it does not specify when to use this tool versus alternatives like 'get_cities' or 'list_countries'. The guidance is implied rather than explicit, leaving gaps in distinguishing from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
global_searchB
Search across countries, states, and cities in a single query. Returns the best matches from all geographic entity types.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search term (e.g. "Buenos Aires", "Pampas", "Cordoba") | |
| limit | No | Max results (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden of behavioral disclosure. It mentions the tool returns 'best matches' but doesn't explain ranking criteria, error conditions, rate limits, authentication needs, or what happens with ambiguous queries. For a search tool with zero annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste - first explains what the tool does, second explains what it returns. Perfectly front-loaded and appropriately sized for the functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no annotations and no output schema, the description provides basic functionality but lacks details about result format, ranking methodology, error handling, or performance characteristics. It's minimally adequate but has clear gaps given the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches across multiple geographic entity types (countries, states, cities) and returns best matches, which is a specific verb+resource combination. However, it doesn't explicitly differentiate from siblings like 'search_countries' or 'get_cities' that might search specific entity types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool should be used for cross-type geographic searches, but doesn't provide explicit guidance on when to choose this versus alternatives like 'search_countries' or 'get_cities'. No when-not-to-use scenarios or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_countriesA
List all countries with pagination. Returns basic info by default — add fields=full for all data.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| limit | No | Results per page (default: 50, max: 100) | |
| fields | No | Detail level |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses pagination behavior and that it returns basic info by default, which is useful. However, it lacks details on rate limits, authentication needs, error handling, or response format structure, leaving gaps for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with zero waste. It front-loads the core purpose and efficiently adds key usage detail about the 'fields' parameter, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with 3 parameters and no output schema, the description is adequate but incomplete. It covers pagination and detail levels, but lacks information on response format, error cases, or performance considerations, which could help an agent use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds value by explaining the 'fields' parameter's effect ('basic info by default — add fields=full for all data'), but doesn't provide additional context beyond what the schema already covers for 'page' and 'limit'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and resource 'countries', specifying it includes pagination. It distinguishes from siblings like 'get_country' (singular) and 'search_countries' (filtered search), but doesn't explicitly contrast with all siblings like 'get_cities' or 'get_states'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving all countries with pagination, but doesn't explicitly state when to use this vs. alternatives like 'search_countries' for filtered results or 'get_country' for single-country details. No guidance on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_countriesB
Search countries by name (e.g. "arg" finds Argentina). Returns paginated matches.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query (partial name match) | |
| page | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'Returns paginated matches' which is useful, but doesn't cover other important aspects like rate limits, authentication requirements, error conditions, or what happens with empty/no results. For a search tool with zero annotation coverage, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place: the first explains the core functionality with an example, the second explains the return behavior. No wasted words, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 3 parameters, no annotations, and no output schema, the description provides basic but incomplete context. It covers the search functionality and pagination at a high level but lacks details about return format, error handling, and parameter usage. This is minimally adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only the 'q' parameter has a description). The description adds that searches use 'partial name match' and provides an example, which helps clarify the 'q' parameter. However, it doesn't explain the semantics of 'page' and 'limit' parameters beyond mentioning 'paginated matches' generally. The description provides some value but doesn't fully compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search countries by name' with a specific verb ('Search') and resource ('countries'), plus an example ('arg' finds Argentina). However, it doesn't explicitly differentiate from sibling tools like 'list_countries' or 'global_search', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'list_countries' (which might list all countries without search) or 'global_search' (which might search across multiple entity types). The description mentions pagination but doesn't specify when to use pagination parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
8 tool updates
v1.0.0- First observed
geolocate_ip - First observed
get_cities - First observed
get_country - First observed
get_currency_rate - First observed
get_states - First observed
global_search - First observed
list_countries - First observed
search_countries
TDQS
Each tool has a clearly distinct purpose with no overlap: geolocate_ip handles IP addresses, get_cities and get_states retrieve subnational divisions, get_country and search_countries focus on country data, get_currency_rate provides exchange rates, list_countries enumerates all countries, and global_search offers cross-entity search. The descriptions reinforce these boundaries, making tool selection unambiguous.
All tools follow a consistent verb_noun naming pattern with snake_case throughout: geolocate_ip, get_cities, get_country, get_currency_rate, get_states, global_search, list_countries, and search_countries. The verbs (geolocate, get, global_search, list, search) are well-chosen and predictable, creating a cohesive and readable set.
With 8 tools, the count is well-scoped for a geographic/geolocation API server. Each tool serves a specific and necessary function, such as retrieving countries, states, cities, currency rates, or performing searches, without redundancy. This number allows comprehensive coverage without being overwhelming.
The tool set provides complete coverage for geographic data retrieval: it includes CRUD-like operations for countries (list, get, search), subnational divisions (states and cities), IP geolocation, currency rates, and a global search. There are no obvious gaps, as all major geographic entities and related data are accessible, enabling agents to handle diverse queries effectively.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
140+ data APIs for agents: finance, banking validation, geo, weather, text. One API key.
IP Geolocation: This API provides fast, reliable, and developer-friendly IP geolocation, ASN.
Real-time data API for AI Agents: stocks, weather, forex, logistics, search, scrape, news, IP.
IP geolocation, ASN and network data, plus VPN, proxy and Tor detection. ASN tools need no key.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables exploration of geographical data including countries, cities, states/provinces, and regions through a SQLite database. Supports searches by name, location coordinates, currency, and regional groupings with comprehensive statistical queries.6-
- AlicenseBqualityCmaintenanceProvides access to the GeoDB Cities API for retrieving global geographic data including city details, populations, and local time. It enables users to find nearby locations, calculate distances between places, and browse administrative divisions across countries.18MIT
- AlicenseAqualityFmaintenanceMCP server providing structured geographic data for AI agents. Access 261 countries and millions of cities via Bamwor API.5612MIT

ThinAir Geoofficial
AlicenseAqualityCmaintenanceLocation & routing intelligence for AI agents — geocoding, truck routing, traffic, weather, and place search.3019681MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/APOGEOAPI/apogeoapi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server