Navigation
MCP-Geo: Precision Geocoding & Enterprise-Ready Speed - MCP Implementation

MCP-Geo: Precision Geocoding & Enterprise-Ready Speed

MCP-Geo: Precision geocoding meets Python power! Deploy enterprise-ready MCP servers with GeoPY for flawless location mapping, blazing speed, and developer-friendly code integration.

Research And Data
4.2(167 reviews)
250 saves
116 comments

Users create an average of 15 projects per month with this tool

About MCP-Geo

What is MCP-Geo: Precision Geocoding & Enterprise-Ready Speed?

MCP-Geo is a high-performance geocoding platform engineered to deliver precise location data at enterprise scale. Built on the GeoPY framework and integrated with the fastmcp server architecture, it supports multiple geocoding providers including Nominatim, ArcGIS, and Bing Maps. This solution ensures millisecond-level response times for real-time applications while maintaining accuracy through robust error handling and configurable provider switching.

How to Use MCP-Geo: Precision Geocoding & Enterprise-Ready Speed?

  1. Install dependencies via pip install -r requirements.txt
  2. Configure provider settings in geo.py using environment variables
  3. Deploy via Docker or cloud platforms with pre-built templates
  4. Access API endpoints:
    • /geocode for forward geocoding
    • /reverse for reverse geolocation

See deployment guide: Quickstart Documentation

MCP-Geo Features

Key Features of MCP-Geo: Precision Geocoding & Enterprise-Ready Speed?

  • Multi-provider support: Automatically failover between Nominatim, ArcGIS, and Bing via health checks
  • Enterprise-grade scaling: Horizontal scaling with Kubernetes-ready configurations
  • Batch processing: Handle 10k+ requests/sec with parallel worker pools
  • Security features: TLS encryption, rate limiting, and API key authentication

Use Cases of MCP-Geo: Precision Geocoding & Enterprise-Ready Speed?

Logistics Optimization

Route planning systems leverage real-time geocoding to dynamically adjust delivery paths

Emergency Response

911 call centers use precise address matching for rapid dispatch coordination

Market Analysis

Business intelligence tools integrate geocoding for location-based customer segmentation

MCP-Geo FAQ

FAQ from MCP-Geo: Precision Geocoding & Enterprise-Ready Speed?

How do I switch geocoding providers?

Set GEOCODER_PROVIDER="arcgis" in your environment variables and provide required credentials

What's the maximum request throughput?

Average 5000 requests/sec per node, scalable to 100k+ with cluster deployment

Can I use custom geolocation data?

Yes - implement the BaseGeocoder interface for proprietary data sources

Content

MCP-Geo

Geocoding MCP server with GeoPY!

📋 System Requirements

  • Python 3.6+

📦 Dependencies

Install all required dependencies:

# Using pip
uv pip install -r requirements.txt

Required 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

  • System Requirements
  • Dependencies
  • MCP Tools
  • Getting Started
  • Installation Options
    • Claude Desktop
    • Elsewhere
  • Safety Features
  • Development Documentation
  • Environment Variables

🛠️ 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:

  1. Add the following configuration to the settings file:
{
    "mcp-geo": {
        "command": "uv",
        "args": [
        "run",
        "--with",
        "fastmcp",
        "fastmcp",
        "run",
        "MCP-Geo/geo.py"
        ],
        "env": {
        "NOMINATIM_URL": "nominatim.openstreetmap.org"
        }
    }
}

🔒 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.

Related MCP Servers & Clients