Geocoding MCP server with GeoPY!
Geocoding MCP server with GeoPY!
Install all required dependencies:
# Using uv
uv sync
All dependencies are specified in requirements.txt
for easy installation.
This MCP server provides the following geocoding tools to Large Language Models (LLMs):
Takes a user-provided address or place name and returns the best match’s latitude, longitude, and formatted address.
Handles errors gracefully and returns None if the location is not found or if an error occurs.
Clone the repository:
git clone https://github.com/webcoderz/MCP-Geo.git
cd MCP-Geo
You can install this MCP server in either Claude Desktop or elsewhere. Choose the option that best suits your needs.
Install using FastMCP:
fastmcp install geo.py --name "MCP Geo"
To use this server anywhere else:
{
"mcp-geo": {
"command": "uv",
"args": [
"--directory",
"MCP-Geo",
"run",
"geo.py"
],
"env": {
"NOMINATIM_URL": "${NOMINATIM_URL}",
"SCHEME": "http",
"GEOCODER_PROVIDER": "nominatim"
}
}
}
🔒 Safety Features • Rate Limiting: Each geocoding call is rate-limited (e.g., 1-second delay) to avoid excessive requests that violate usage limits. • Error Handling: Catches geopy exceptions (timeouts, service errors) and returns safe None results instead of crashing.
📚 Development Documentation
If you’d like to extend or modify this server: • Check geo.py for how each tool is implemented and how geopy is integrated. • Adjust environment variables to switch providers (Nominatim, ArcGIS, Bing, etc.). • Look at geopy’s official docs for advanced usage like bounding boxes, language settings, or advanced data extraction.
⚙️ Environment Variables
Configure the server using environment variables:
Variable | Description | Default |
---|---|---|
GEOCODER_PROVIDER (optional) | "nominatim", "arcgis", or "bing" | nominatim |
NOMINATIM_URL (optional) | Domain for Nominatim | nominatim.openstreetmap.org |
SCHEME (optional) | http/https | http |
ARC_USERNAME (optional for ArcGIS) | ArcGIS username | None |
ARC_PASSWORD (optional for ArcGIS) | ArcGIS password | None |
BING_API_KEY (required for Bing) | Your Bing Maps key. | None |
These can be set in your shell or in the MCP settings file for your environment. If more are needed just edit geo.py and add them in to whichever geocoder you are using.