mcp_geoip2

mamorett/mcp_geoip2

3.2

If you are the rightful owner of mcp_geoip2 and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

MCP server for IP geolocation using the geoip2 library.

GeoIP MCP Server

A Model Context Protocol (MCP) server providing IP geolocation and ASN lookup services using MaxMind GeoIP2 databases.


Features

  • Single & Bulk IP Geolocation: Lookup for IPv4 and IPv6 addresses, with batch concurrency (configurable via GEOIP_CONCURRENCY).
  • ASN Information: Retrieve Autonomous System Number and organization.
  • Country-only Lookup: Efficient country-level lookup tool.
  • Comprehensive Location Data: Country, city, subdivision, postal code, latitude/longitude, and network info.
  • Distance Calculation: Compute distance between two coordinates.
  • Caching: In-memory cache for fast repeated lookups (configurable via GEOIP_CACHE_TTL).
  • Flexible Output: JSON, summary, and CSV formats.
  • Health Checks & Performance Monitoring: Tools for server and database health.
  • Prometheus Metrics: Optional exporter via PROMETHEUS_PORT.
  • MCP Protocol: Compatible with MCP clients.

Setup

Option 1: Automatic Download (Recommended)

The server can automatically download and update the required databases if you provide a MaxMind License Key.

  1. Get a License Key: Register for a free MaxMind account at https://www.maxmind.com/en/geolite2/signup and generate a license key.
  2. Set Environment Environment Variable:
    export MAXMIND_LICENSE_KEY="your_license_key_here"
    
  3. Run the Server: The server will download the databases to ~/.local/share/mcp_geoip2/ on startup.

Option 2: Manual Installation

  1. Download Databases: Download GeoLite2-City.mmdb, GeoLite2-ASN.mmdb, and optionally GeoLite2-Country.mmdb from MaxMind.
  2. Place Files: Move the .mmdb files to the default data directory:
    mkdir -p ~/.local/share/mcp_geoip2/
    mv *.mmdb ~/.local/share/mcp_geoip2/
    

Configuration (Optional)

You can override the default paths if needed:

export GEOIP_CITY_DB="/path/to/GeoLite2-City.mmdb"
export GEOIP_ASN_DB="/path/to/GeoLite2-ASN.mmdb"
export GEOIP_COUNTRY_DB="/path/to/GeoLite2-Country.mmdb"
export GEOIP_CACHE_TTL=3600
export GEOIP_CONCURRENCY=20
export PROMETHEUS_PORT=9000

Usage

Run with uvx (Recommended)

You can run the server directly without installing dependencies manually:

uvx geoip2-mcp-server
# OR
uvx mcp_geoip2

Local Dev Setup

# 1. Install dependencies
pip install -r requirements.txt

# 2. Run the server
python -m geoip2_mcp_server.server

The server communicates via MCP protocol (stdio by default).


Available Tools

1. geolocate_ip

Get geolocation for a single IP.

Parameters:

  • ip_address (string, required)
  • include_asn (boolean, default: true)
  • output_format (json|summary|csv, default: json)
  • use_cache (boolean, default: true)

2. geolocate_multiple_ips

Batch geolocation for multiple IPs (concurrent, configurable).

Parameters:

  • ip_addresses (array of strings, required)
  • include_asn (boolean, default: true)
  • output_format (json|summary|csv, default: json)
  • use_cache (boolean, default: true)

3. get_asn_info

Get ASN info for an IP.

Parameters:

  • ip_address (string, required)

4. calculate_distance

Calculate distance between two coordinates.

Parameters:

  • lat1, lon1 (float, required): Point 1
  • lat2, lon2 (float, required): Point 2
  • unit (km|mi, default: km)

5. server_management

Server operations.

Parameters:

  • action (clear_cache|get_stats|reload_databases, required)

6. geolocate_country

Country-only geolocation for a single IP.

Parameters:

  • ip_address (string, required)
  • output_format (json|summary|csv, default: json)
  • use_cache (boolean, default: true)

Example Output

{
  "ip_address": "203.0.113.0",
  "location": {
    "country": {"iso_code": "US", "name": "United States"},
    "city": {"name": "Minneapolis"},
    "location": {"latitude": 44.9733, "longitude": -93.2323}
  },
  "asn": {
    "autonomous_system_number": 1221,
    "autonomous_system_organization": "Telstra Pty Ltd"
  }
}

Error Handling

  • Invalid IP address formats
  • Missing or unreadable database files
  • IP not found in database
  • Network/database errors

Health & Monitoring

  • Use health_check.py for system/database health.
  • Use performance_monitor.py for performance metrics.
  • Prometheus metrics available if PROMETHEUS_PORT is set.

Docker

A and are provided.

docker-compose up --build

License

This project is licensed under the .


Credits