Agents and developers
IP intelligence for AI agents
The remote MCP server is https://ipinfo.fyi/mcp. It speaks stateless streamable HTTP: POST a JSON-RPC message and read either application/json or a single text/event-stream event. There is no session id.
Tools: my_ip, lookup_ip, lookup_asn, dns_resolve, blacklist_check, cgnat_check, vpn_recommendation. my_ip is the address of the client calling this server, which is the agent host unless a browser is the client. There is no API key.
vpn_recommendation returns affiliate: true and a disclosure on every provider. The same sourced comparison is /vpn and /vpn.json. Calls use the same per-minute limit as the rest of the site.
Claude Desktop
On macOS the file is ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows it is %APPDATA%\Claude\claude_desktop_config.json. Restart Claude after saving.
Builds that accept a remote URL:
{
"mcpServers": {
"ipinfo": {
"url": "https://ipinfo.fyi/mcp"
}
}
}
If this Claude build only starts a local command, use mcp-remote:
{
"mcpServers": {
"ipinfo": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://ipinfo.fyi/mcp"]
}
}
}
Cursor
Put this in ~/.cursor/mcp.json, or in .cursor/mcp.json inside a project. Cursor → Settings → MCP can edit the same file.
{
"mcpServers": {
"ipinfo": {
"url": "https://ipinfo.fyi/mcp"
}
}
}
ChatGPT
In ChatGPT, open Settings, then Connectors, and add a custom connector. The server URL is https://ipinfo.fyi/mcp. No authentication header is required.
curl
curl -s https://ipinfo.fyi/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"vpn_recommendation","arguments":{"privacy":"high","budget":"low","country":"IN"}}}'
The same host also has a plain JSON API: curl https://ipinfo.fyi/api/json?ip=1.1.1.1. Machine-readable notes are at /llms.txt, /llms-full.txt, and /openapi.json. Discovery for agents that do not already know the paths: /.well-known/api-catalog (RFC 9727), /.well-known/ai-catalog.json, and the MCP server card at /mcp/server-card. Add .md to an HTML path, or send Accept: text/markdown, for a Markdown copy.
Python
import json
import urllib.request
req = urllib.request.Request(
"https://ipinfo.fyi/mcp",
data=json.dumps({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {"name": "lookup_ip", "arguments": {"ip": "1.1.1.1"}},
}).encode(),
headers={
"content-type": "application/json",
"accept": "application/json, text/event-stream",
},
)
print(urllib.request.urlopen(req).read().decode())
JavaScript
const response = await fetch("https://ipinfo.fyi/mcp", {
method: "POST",
headers: {
"content-type": "application/json",
accept: "application/json, text/event-stream",
},
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: { name: "dns_resolve", arguments: { name: "example.com" } },
}),
});
console.log(await response.text());