IP Geolocation Server for MCP
Project description
IP Geolocation MCP Server
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.
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="full")— Geolocate one or more specified IPs.detail="summary"strips heavy nested blocks (continent, flags, currency, abuse, domains) for batch token savings while preserving shape parity. Capped at 500,000 IPs per call. Invalid or special-use addresses (private, loopback, etc.) are filtered withctx.warning()and excluded from the result list — match returnedIPDetails.ipvalues back to your input to detect what was dropped.ipinfo_check_residential_proxy(ip)— Check whether an IP is a known residential-proxy exit node. Taggedenterprise— requires the IPInfo residential-proxy add-on.ipinfo_generate_map_url(ips)— Build an interactive ipinfo.io map for a set of IPs. Returns aMapResultwith the URL, the count that made the map, the IPs filtered out (with reasons, capped at 100), and atruncatedflag.
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, and a repair hint. Agents should parse the message as JSON and branch on code.
Deprecated tools
get_ip_details, get_residential_proxy_info, and get_map_url are forwarding aliases retained from 0.4.x. They are tagged deprecated and will be removed in 0.6.0. New code should call the ipinfo_* tools directly.
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_server_ipinfo-0.5.0.tar.gz.
File metadata
- Download URL: mcp_server_ipinfo-0.5.0.tar.gz
- Upload date:
- Size: 137.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10d1170235d27251621131e09caf44e7c9c092661d311e3941cba3289e87b7de
|
|
| MD5 |
12ad65307ea2a313e347853df1f68b9e
|
|
| BLAKE2b-256 |
d201c574d919b70af5c276768ba7d6df8d17ee7c3974abec8dca88cef379ed81
|
File details
Details for the file mcp_server_ipinfo-0.5.0-py3-none-any.whl.
File metadata
- Download URL: mcp_server_ipinfo-0.5.0-py3-none-any.whl
- Upload date:
- Size: 21.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.12 {"installer":{"name":"uv","version":"0.11.12","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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6256c87cb3f58ebe7c0e6045bed5482bc3e3ecdd4499fa929387caf88db777c
|
|
| MD5 |
dcd7f96a845e1e21fbc950fb63ba5563
|
|
| BLAKE2b-256 |
6091d27905151d49b5cb23d222e767625fb3560eda7885ce42cfeaf41811b258
|