Free remote MCP server + API for IP lookup: your IP, country/ISP/ASN for any IPv4/IPv6, validation. No key.
Overview
is a fast, clean "what is my IP" and IP lookup tool. This repo documents its so AI assistants and agents (Claude, Cursor, VS Code Copilot and others) can: - get the caller's public IP, ISP, ASN, location and timezone - look up the country, ASN and network owner of IPv4/IPv6 address - detect (AWS, Google Cloud, Azure, Cloudflare, DigitalOcean, Oracle, Hetzner, OVH and more) - look up to 100 IPs in one call - run for domains, IPs and ASNs, lookups (A/AAAA/MX/TXT/NS/CNAME/SOA), and math - validate and classify IP addresses (public, private, loopback, documentation and so on) - make (links, Wi-Fi, email, phone) as SVG, and get (models are bad at counting; this isn't) - estimate for a text across OpenAI, Claude and Gemini, and check (ChatGPT, Claude, Gemini and more) from official status pages No API key, no install, no sign-up. It's just a URL: Transport: MCP (JSON-RPC 2.0, protocol 2025-06-18). (claude_desktop_config.json).
README
FernTool — network toolbox MCP server & free IP API
FernTool is a fast, clean “what is my IP” and IP lookup tool. This repo documents its hosted, remote MCP server so AI assistants and agents (Claude, Cursor, VS Code Copilot and others) can:
- get the caller’s public IP, ISP, ASN, location and timezone
- look up the country, ASN and network owner of any IPv4/IPv6 address
- detect Tor exit nodes, VPN/datacenter and cloud IPs (AWS, Google Cloud, Azure, Cloudflare, DigitalOcean, Oracle, Hetzner, OVH and more)
- batch look up to 100 IPs in one call
- run WHOIS (RDAP) for domains, IPs and ASNs, DNS lookups (A/AAAA/MX/TXT/NS/CNAME/SOA), reverse DNS and IPv4/IPv6 subnet math
- validate and classify IP addresses (public, private, loopback, documentation and so on)
- make static QR codes (links, Wi-Fi, email, phone) as SVG, and get exact word and character counts (models are bad at counting; this isn’t)
- estimate AI API cost for a text across OpenAI, Claude and Gemini, and check live AI service status (ChatGPT, Claude, Gemini and more) from official status pages
No API key, no install, no sign-up. It’s just a URL:
https://www.ferntool.com/mcp
Transport: MCP streamable HTTP (JSON-RPC 2.0, protocol 2025-06-18).
Connect
Claude Code
claude mcp add --transport http ferntool https://www.ferntool.com/mcp
Claude Desktop (claude_desktop_config.json). Use Settings → Connectors → Add custom connector with the URL above, or bridge with mcp-remote:
{ "mcpServers": { "ferntool": { "command": "npx", "args": ["-y", "mcp-remote", "https://www.ferntool.com/mcp"] } } }
Cursor (~/.cursor/mcp.json or .cursor/mcp.json)
{ "mcpServers": { "ferntool": { "url": "https://www.ferntool.com/mcp" } } }
VS Code (.vscode/mcp.json)
{ "servers": { "ferntool": { "type": "http", "url": "https://www.ferntool.com/mcp" } } }
Ready-made files are in examples/.
Tools
| Tool | Input | What it returns |
|---|---|---|
get_my_ip |
none | Public IP of the caller (IPv4 or IPv6) with ISP, ASN, city/region/country, coordinates, timezone and is_tor / is_datacenter / provider. For remote agents, this is the IP of the machine calling the server. |
lookup_ip |
ip (string, IPv4 or IPv6) |
Validity, version, scope, country, timezone, ASN, network owner and flags (is_tor, is_datacenter, provider). |
batch_lookup_ip |
ips (array of 1–100 strings) |
lookup_ip results for every address, plus complete / retry. |
validate_ip |
ip (string) |
Whether it’s a valid IPv4/IPv6, the expanded form and the scope (public/private/loopback/link-local/documentation/…). |
whois_lookup |
query (domain, IP or ASN like AS13335) |
RDAP record: registrar, created/expiry/updated dates, status, nameservers, DNSSEC; for IPs/ASNs the network name, range/CIDR, owner org, country and abuse contact. |
dns_lookup |
domain, optional types (A, AAAA, MX, TXT, NS, CNAME, SOA) |
Records with TTLs via Cloudflare 1.1.1.1 DNS-over-HTTPS, response status and DNSSEC validation flag. |
reverse_dns |
ip |
PTR hostname(s) and whether the hostname resolves back to the IP (forward-confirmed). |
estimate_ai_cost |
text or tokens, optional output_tokens |
Approximate tokens, USD cost per model (OpenAI, Anthropic, Google) and whether it fits each context window. |
ai_service_status |
optional service (chatgpt, claude, gemini, copilot, perplexity, cohere) |
Live status read from official status pages (cached ~60 s): up, degraded, down or unknown. |
make_qr_code |
text (up to 2000 chars), optional ecc (L/M/Q/H) |
Static QR code (never expires) as an SVG string, plus an image URL on ferntool.com that renders the same code. |
count_words |
text |
Exact words, characters (with/without spaces), sentences, paragraphs, reading/speaking time and the most repeated words. |
subnet_calc |
cidr (e.g. 192.168.1.0/24, 2001:db8::/48) |
Network, netmask, wildcard, broadcast, first/last usable, total and usable addresses, block type. |
Example lookup_ip result for 8.8.8.8:
{
"valid": true, "version": 4, "ip": "8.8.8.8", "scope": "public",
"source": "dbip-lite+iptoasn",
"geo": { "country": "US", "country_name": "United States", "asn": 15169, "isp": "GOOGLE",
"timezone": "America/New_York", "timezones": ["America/New_York", "..."] },
"flags": { "is_tor": false, "is_datacenter": true, "provider": "Google Cloud" }
}
Example validate_ip result for 2001:db8::1:
{ "valid": true, "version": 6, "ip": "2001:db8::1",
"expanded": "2001:0db8:0000:0000:0000:0000:0000:0001", "scope": "documentation" }
Raw JSON-RPC
curl -s https://www.ferntool.com/mcp \
-H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"lookup_ip","arguments":{"ip":"8.8.8.8"}}}'
Plain HTTP API
The same data is available without MCP. There’s no key, and CORS is *. Full spec: /openapi.json.
curl https://www.ferntool.com/ip # 203.0.113.7 (plain text)
curl https://www.ferntool.com/json # your IP + ISP, ASN, city, timezone
curl https://www.ferntool.com/api/ip/1.1.1.1 # any IPv4/IPv6 (+ timezone, Tor/datacenter flags)
curl -X POST https://www.ferntool.com/api/batch -H 'Content-Type: application/json' -d '{"ips":["8.8.8.8","1.1.1.1"]}'
curl https://www.ferntool.com/api/whois/example.com # RDAP WHOIS (domain, IP or ASN)
curl "https://www.ferntool.com/api/dns/example.com?type=A,MX" # DNS via Cloudflare DoH
curl https://www.ferntool.com/api/reverse-dns/1.1.1.1 # PTR
curl "https://www.ferntool.com/api/subnet?cidr=10.0.0.0/22" # subnet calculator
curl "https://www.ferntool.com/api/qr?text=https://example.com" -o qr.svg # static QR code (SVG)
Python:
import json, urllib.request
print(json.load(urllib.request.urlopen("https://www.ferntool.com/api/ip/8.8.8.8")))
JavaScript:
const r = await fetch("https://www.ferntool.com/api/ip/8.8.8.8");
console.log(await r.json());
Fair use
This is a free service on a shared edge network. Please cache results and keep traffic reasonable. Network lookups (WHOIS, DNS, reverse DNS, batch) are limited to roughly 40 per minute per IP; heavy or abusive traffic may be rate-limited further.
Data attribution
- IP geolocation by DB-IP, licensed under CC BY 4.0.
- ASN data from IPtoASN (PDDL).
- The caller’s own location in
get_my_ipcomes from the Cloudflare edge. - Tor exit list from the Tor Project; cloud ranges published by AWS, Google Cloud, Microsoft Azure, Cloudflare, DigitalOcean and Oracle; plus a list of well-known hosting ASNs. Refreshed regularly.
- WHOIS from registry RDAP services (IANA bootstrap); DNS from Cloudflare 1.1.1.1. Timezones for other IPs are the country’s main IANA zone (tzdata).
Links
- Website:
- What is my IP:
- IP lookup:
- VPN leak test:
- WHOIS lookup:
- DNS lookup:
- Reverse DNS:
- Subnet calculator:
- MCP registry name:
com.ferntool/ip
License
The contents of this repository (docs, examples, server.json) are under the MIT License. The hosted service and its data are subject to the attributions above.
Install
npx -y mcp-remote https://www.ferntool.com/mcpConfiguration
{ "mcpServers": { "ferntool": { "command": "npx", "args": ["-y", "mcp-remote", "https://www.ferntool.com/mcp"] } } }