MCP server for AI assistants
Ask your assistant "is this IP safe?" and get an answer from live abuse reports. isipsafe runs a Model Context Protocol server that Claude, Cursor, VS Code and other MCP clients can connect to in under a minute.
https://isipsafe.com/mcp
No account needed
Add the URL and start asking. Without a key the server answers every lookup (addresses, reports, networks, countries, statistics) within the anonymous allowance of 400 lookups a day. Nothing to sign up for, no login screen in your client.
A free API key adds 10,000 lookups a day and the two tools that act on your behalf: reporting an attacker and downloading the blocklist. Get a key (one email, no password), then send it as an Authorization: Bearer header or add ?key= to the URL.
Assistants that run in the browser, such as Claude on the web, connect from their provider's servers. Without a key, everyone using that assistant shares one anonymous allowance, so it can run out. Add your key for dependable use.
Connect your assistant
Claude Code
# without a key
claude mcp add --transport http isipsafe https://isipsafe.com/mcp
# with a key
claude mcp add --transport http isipsafe https://isipsafe.com/mcp --header "Authorization: Bearer sl_your_key_here"
Claude (web and desktop)
In Settings › Connectors, choose Add custom connector, name it isipsafe and paste the server URL. Custom connectors cannot send headers, so to use your key, add it to the URL and keep that URL private:
https://isipsafe.com/mcp?key=sl_your_key_here
Cursor
In ~/.cursor/mcp.json (leave out headers to go without a key):
{
"mcpServers": {
"isipsafe": {
"url": "https://isipsafe.com/mcp",
"headers": { "Authorization": "Bearer sl_your_key_here" }
}
}
}
VS Code
In .vscode/mcp.json, then use the tools from Copilot's agent mode:
{
"servers": {
"isipsafe": {
"type": "http",
"url": "https://isipsafe.com/mcp",
"headers": { "Authorization": "Bearer sl_your_key_here" }
}
}
}
Any other client
Use the server URL with the Streamable HTTP transport. Clients that only support local (stdio) servers can connect through a bridge such as mcp-remote. ChatGPT users can also build a custom GPT from the OpenAPI spec.
Tools
| Tool | What it does | API key |
|---|---|---|
| check_ip | Check an IP address. Reputation of one IPv4 or IPv6 address: abuse confidence score (0-100, 75+ is on the blocklist), number of reports and distinct reporters, attack categories, country, network owner (ASN), Tor exit status and a link to its page. Set verbose to include the latest reports with their comments. | Not needed |
| get_reports | List reports for an IP address. The individual abuse reports filed against one address, newest first, with time, categories, comment (usually log lines) and reporter. Paginated. | Not needed |
| check_network | Check a network (CIDR). Every reported address inside a CIDR block (IPv4 up to /16, IPv6 up to /48), with score, report count and last report time, plus the network's owner. Use it to judge a whole hosting range or subnet. | Not needed |
| report_ip | Report an abusive IP address. File an abuse report against an address that attacked a system you run. Needs an API key. Use category codes from list_categories (e.g. ssh,brute-force) and put the evidence (log lines, never personal data) in the comment. Each reporter can report the same address once per 15 minutes. Only report real, observed abuse. | Required |
| get_blocklist | Get the blocklist. The highest-confidence abusive addresses right now, best first, with score, country and categories. Needs an API key and counts as one blocklist download. For a firewall-ready file, point the firewall at the blocklist URL instead (see the integrations). | Required |
| list_categories | List report categories. All attack categories with their code, numeric ID, group and when to use them. Use the codes with report_ip. | Not needed |
| get_statistics | Current abuse statistics. What the database sees right now: reports in the last 24 hours, addresses on the blocklist, and over the last 30 days the top attack categories, countries, networks and highest-scoring addresses. | Not needed |
| get_country_report | Abuse report for a country. How many addresses in a country were reported in the last 30 days, how many are on the blocklist, the most reported addresses there, and the networks and attack categories behind them. | Not needed |
| get_network_report | Abuse report for a network (ASN). Abuse reported against one autonomous system in the last 30 days: number of reported and blocklisted addresses, the worst addresses, attack categories and countries. Useful to judge a hosting provider or ISP. | Not needed |
Things to ask
- "Is 203.0.113.7 safe? It keeps hitting our login page."
- "Here are last night's failed SSH logins [paste the log]. Which addresses are known attackers, and what were they reported for?"
- "Compare AS14061 and AS16509: which hosting provider has more abuse this month?"
- "Which countries and attack types are most active right now?"
- "Report 198.51.100.23 for SSH brute force, with these log lines as evidence." (needs a key)
Safety and privacy
- Lookup tools only read data.
report_ipis marked as a tool that changes data, so clients ask you before it runs. - The server keeps no conversation and no session; each tool call is handled on its own and counted like an API call.
- Your key is never written to our logs. Keys work the same as in the API, and you can replace yours on your account page at any time.
- Report only abuse you saw on systems you run, as the acceptable use policy says. That holds when an assistant files the report for you.
Test it from a terminal
curl -s https://isipsafe.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":"check_ip","arguments":{"ip":"203.0.113.7"}}}'
Streamable HTTP, stateless (no session ID, no server-sent event stream, so GET /mcp from a client answers 405). Protocol versions 2025-06-18, 2025-03-26 and 2024-11-05.