Back to Directory/Developer Tools

io.github.7mza/geolocation-mcp

An MCP server that provides fast and up-to-date IP geolocation data.

Developer ToolsKotlinv0.0.1

GeoLocation MCP Server

Coverage

Fast and up-to-date IP geolocation data for LLMs

Demo

demo

For public IPv4 / IPv6 address:

  • Flags: isDatacenter, isTorExitNode, isVPN
  • City name, region ISO code, latitude/longitude, accuracy radius, postal code, timezone
  • Country name, ISO code, EU membership/GDPR
  • ASN number, ISP/organization name, network CIDR

MCP tools

ToolDescription
getGeoLocationDatasingle IP lookup
getGeoLocationDataBulkbatch lookup, failed IPs don't block the rest

Data sources

DataSourceRefresh
City / ASNGeoLite2 via P3TERX/GeoLite.mmdbon startup if absent
Tor exit nodesTor Projectdaily
VPN / Datacenter rangesX4BNet/lists_vpndaily

Usage

# named volume so DBs persist across restarts
docker run -p 8891:8080 -v geolocation_data:/home/nonroot/.geolocation-mcp 7mza/geolocation-mcp:latest

or with compose

services:
  geolocation-mcp:
    image: 7mza/geolocation-mcp:latest
    ports:
      - '8891:8080'
    restart: unless-stopped
    volumes:
      - geolocation_data:/home/nonroot/.geolocation-mcp
volumes:
  geolocation_data:
    name: geolocation_data

Connect your LLM:

# example for claude
claude mcp add --transport http geolocation http://localhost:8891/mcp

Test with MCP inspector:

npm i && npm run mcp
# transport: streamable
# url: http://localhost:8891/mcp

Build from source

Requires SDKMAN and nvm.

nvm use && npm i && sdk env install

JVM:

./gradlew clean ktlintFormat ktlintCheck build
./gradlew bootRun

Native:

./gradlew clean ktlintFormat ktlintCheck build -PgenerateMetadata
./gradlew buildImage
docker run -p 8891:8080 -v geolocation_data:/home/nonroot/.geolocation-mcp 7mza/geolocation-mcp:latest

License

GeoLite2 DBs are subject to the GeoLite2 EULA.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
docker run -i --rm 7mza/geolocation-mcp:0.0.1

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-7mza-geolocation-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "7mza/geolocation-mcp:0.0.1"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

7mza/geolocation-mcp:0.0.1docker

Compatible MCP Clients

io.github.7mza/geolocation-mcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More