MCP-Geo
Can be used as a geocoding provider for the server through the GEOCODER_PROVIDER environment variable
Default geocoding provider through Nominatim (nominatim.openstreetmap.org) to provide geocoding and reverse geocoding capabilities
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP-Geogeocode the Eiffel Tower"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP-Geo
Geocoding MCP server with GeoPY!
📋 System Requirements
Python 3.6+
Related MCP server: IP2Location IP Geolocation MCP Server
📦 Dependencies
Install all required dependencies:
# Using uv
uv syncRequired Packages
fastmcp: Framework for building Model Context Protocol servers
geoPy: Python library for accessing and geocoding/reverse geocoding locations.
All dependencies are specified in requirements.txt for easy installation.
📑 Table of Contents
🛠️ MCP Tools
This MCP server provides the following geocoding tools to Large Language Models (LLMs):
geocode_location
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.
reverse_geocode
Takes a latitude and longitude and returns the nearest address.
Useful for finding descriptive information about a point on the map.
geocode_with_details
Similar to geocode_location but returns additional data such as bounding boxes and more detailed address info, if supported by the geocoder.
geocode_multiple_locations
Accepts a list of address strings and returns a list of geocoding results (lat/lon/address) for each address.
Rate-limited to avoid hitting geocoding service quotas.
reverse_geocode_multiple_locations
Accepts a list of [lat, lon] pairs to perform reverse geocoding for each.
Returns a list of dictionaries containing lat, lon, and address or None for unsuccessful lookups, also rate-limited.
distance_between_addresses
Calculate the distance between two addresses or place names.
accepts 2 addresses and a unit of measurement (miles/kilometer)
Returns the distance in the specified unit, or None if either address could not be geocoded.
distance_between_coords
Calculate the distance between two lat/lon pairs.
accepts 2 pairs of latitude and longitude and a unit of measurement (kilometer/miles)
Returns the distance in the specified unit.
🚀 Getting Started
Clone the repository:
git clone https://github.com/webcoderz/MCP-Geo.git
cd MCP-Geo📦 Installation Options
You can install this MCP server in either Claude Desktop or elsewhere. Choose the option that best suits your needs.
Option 1: Install for Claude Desktop
Install using FastMCP:
fastmcp install geo.py --name "MCP Geo"Option 2: Install elsewhere
To use this server anywhere else:
Add the following configuration to the settings file:
{
"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 |
| "nominatim", "arcgis", or "bing" | nominatim |
| Domain for Nominatim | nominatim.openstreetmap.org |
| http/https | http |
| ArcGIS username | None |
| ArcGIS password | None |
| 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.
This server cannot be deployed
Maintenance
Related MCP Connectors
Geo MCP — geographic utilities from free public APIs
Nominatim MCP — wraps OpenStreetMap Nominatim geocoding API (free, no auth)
Official IPinfo MCP Server - IP intelligence tools for AI assistants
Geo-based flight search MCP server. Find more flights between any two places on earth
Related MCP Servers
- -licenseNot gradedqualityAmaintenanceMCP Server for the Google Maps API.11,86890,196MIT
- AlicenseAqualityCmaintenanceIP Geolocation MCP server using IP2Location.io API to ease the query of geolocation information.115PythonMIT
- AlicenseAqualityCmaintenanceAn MCP server providing geocoding and place discovery services via Nominatim and OpenStreetMap. It enables users to perform forward and reverse geocoding, extract bounding boxes, and find nearby places or administrative hierarchies.10Apache 2.0
- AlicenseNot gradedqualityDmaintenanceAn MCP server for forward geocoding via the Nominatim API (OpenStreetMap) with no API key required.21MIT