Skip to main content

IP Geolocation MCP Server

PyPI CI License: MIT

A Model Context Protocol server that exposes the ipinfo.io API to AI agents. Geolocate IPv4 and IPv6 addresses, identify ISPs and ASNs, detect VPN/proxy/Tor exit nodes, and generate interactive maps for sets of IPs.

Installation

Sign up for a free IPInfo API token at https://ipinfo.io/signup if you don't have one. The server runs with no token (free Lite tier — country and ASN basics) but most fields require a token.

Claude Desktop (one-click bundle)

Download the .mcpb bundle from the latest release and open it to install in Claude Desktop. You can set your IPINFO_API_TOKEN (and optional cache tuning) in the install dialog; leave the token blank to run in the free Lite tier. The bundle launches the server with uv, so uv must be installed and on your system PATH (GUI apps don't inherit your shell's PATH).

Other MCP clients

Most MCP clients accept the following values:

Field Value
Command uvx
Arguments mcp-server-ipinfo
Environment IPINFO_API_TOKEN = <YOUR TOKEN>

Development Version

To run the latest from main:

Field Value
Command uvx
Arguments --from, git+https://github.com/briandconnelly/mcp-server-ipinfo, mcp-server-ipinfo
Environment IPINFO_API_TOKEN = <YOUR TOKEN>

Tools

  • ipinfo_lookup_my_ip() — Geolocate the calling client's own IP. Takes no arguments. On stdio transports the result reflects this server's outbound IP, not the end user's.
  • ipinfo_lookup_ips(ips, detail="summary") — Geolocate one or more specified IPs. Defaults to detail="summary", which omits heavy nested blocks (continent, flags, currency, abuse, domains) for batch token savings; pass detail="full" for every field. Capped at 500,000 IPs per call. Invalid or special-use addresses (private, loopback, etc.) are filtered with ctx.warning() and excluded from the result list, as are IPs that fail upstream — match returned IPDetails.ip values back to your input to detect what was dropped. If every attempted lookup fails, a temporary api_error is raised.
  • ipinfo_summarize_ips(ips, group_by=("country", "asn"), top_n=50) — Geolocate and aggregate a batch into fixed-size counts and percentages by country, continent, ASN, and/or privacy flags. Use this for large log-analysis tasks where per-IP records would waste context. Returns mapped, skipped, and failed counts plus capped top-N groups.
  • ipinfo_check_residential_proxy(ip) — Check whether an IP is a known residential-proxy exit node. Tagged enterprise — requires the IPInfo residential-proxy add-on.
  • ipinfo_generate_map_url(ips) — Build an interactive ipinfo.io map for a set of IPs. Returns a MapResult with the URL, the count that made the map, the IPs filtered out (with reasons, capped at 100), and a truncated flag.

Plan tiers

Tier Fields available
Free Lite (no token) country, country_code, continent, ASN basics
Core full geolocation, ASN details, privacy/VPN/proxy/Tor/hosting flags
Plus adds carrier and company data
Enterprise adds domains and abuse contacts
Residential-proxy add-on enables ipinfo_check_residential_proxy. Sold separately on top of Enterprise; not included by default.

Errors

Every tool raises a ToolError whose message is a JSON-encoded envelope with a stable code (invalid_ip_address, special_ip_unsupported, no_valid_ips, too_many_ips, auth_invalid, auth_insufficient_scope, quota_exceeded, timeout, api_error, unknown_error), a temporary flag, optional retry_after_ms, a repair hint, and a request_id correlation id. Agents should parse the message as JSON and branch on code. Each tool also advertises the subset of codes it can raise via meta.error_codes, so you can see the branch set from tool introspection.

Configuration

Environment Variables

Variable Description Default
IPINFO_API_TOKEN IPInfo API token. Without it the server runs in free Lite mode. unset (Lite)
IPINFO_CACHE_TTL Per-IP cache TTL in seconds. Cached results retain their original ts_retrieved timestamp. 3600
IPINFO_CACHE_SIZE Maximum cache entries before oldest-first eviction. 4096

License

MIT License — see LICENSE. Release history in CHANGELOG.md.

Disclaimer

This project is not affiliated with IPInfo.

Metadata

Release files for mcp-server-ipinfo 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-server-ipinfo 0.7.0
File Size Uploaded
mcp_server_ipinfo-0.7.0.tar.gz 170.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mcp-server-ipinfo 0.7.0
File Interpreter ABI Platform
mcp_server_ipinfo-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 202.9 kB

Release files / mcp_server_ipinfo-0.7.0.tar.gz

Download URL mcp_server_ipinfo-0.7.0.tar.gz
Size 170.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1ce144e648476eb046311cb90b5c175a3bad8059ae9755a2b708f6cd2d06e4b1
BLAKE2b-256 checksum
How to use checksums
32a375ecc32383626d034b2a2b0a94e2ea40b33a6190c43517c7f457beb4c760
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / mcp_server_ipinfo-0.7.0-py3-none-any.whl

Download URL mcp_server_ipinfo-0.7.0-py3-none-any.whl
Size 31.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d2cb2ede0e381b1003b2ffa18d68b73a8cf2f05d354200368a37a57567cc779a
BLAKE2b-256 checksum
How to use checksums
82ddeb6094032ade3402e3cacfc2af409bd4fc7fbb46da5f3330e141b4403070
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page