Skip to content
Conduit

mcp server

mcp-threatintel

Threat intelligence MCP server for Claude Code. IOC lookups, CVE checks, breach monitoring, dark web search, and OTX pulses.

pete-builds/mcp-threatintelcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • uv (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "pete-builds-mcp-threatintel": {
      "command": "uvx",
      "args": [
        "mcp-threatintel"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 25, 2026

mcp-threatintel

A threat intelligence MCP server for Claude Code. Gives Claude tools to look up IOCs, search threat feeds, check breached credentials, query CVEs, and search the dark web.

Built with FastMCP and SQLite. Feeds are synced locally by a background poller so lookups are fast and don't depend on external API availability.


Tools

ToolWhat it does
lookup_iocCheck an IP, domain, hash, or URL against all threat feeds
search_threatsFull-text search across IOCs, OTX pulses, and CVEs
get_recent_threatsWhat's been added in the last N hours
lookup_cveCheck if a CVE is in the CISA Known Exploited Vulnerabilities catalog
get_feed_statusShow sync status and record counts for all feeds
search_pulsesSearch AlienVault OTX community threat pulses
check_breachCheck LeakCheck for breached credentials by email, domain, username, or hash
check_domain_breachesCheck all known breaches for a domain
search_darkwebSearch Ahmia.fi's index of Tor hidden services
check_password_breachCheck if a password has been exposed (HIBP k-anonymity, free, password never leaves machine)
check_email_breachesCheck if an email is in any known breach via HIBP
get_latest_breachGet the most recently added breach from HIBP

Data Sources

SourceWhat it providesAuthCost
abuse.ch (URLhaus, MalwareBazaar, ThreatFox, Feodo)Malware URLs, hashes, C2s, botnet IPsABUSECH_API_KEYFree
AlienVault OTXCommunity threat pulses, IOC enrichmentOTX_API_KEYFree
CISA KEVKnown exploited vulnerabilities catalogNoneFree
Ahmia.fiDark web search (.onion index)NoneFree
HIBP PasswordsBreached password check (k-anonymity)NoneFree
HIBP EmailEmail breach lookupHIBP_API_KEY$4.50/mo
LeakCheckDark web breach data (7B+ records)LEAKCHECK_API_KEY$10/mo

All optional keys degrade gracefully. The server runs fine without them and returns a clear error message when a tool needs a key that isn't configured.


Architecture

Claude Code
    |
    | Streamable HTTP (port 3707, /mcp)
    v
mcp-threatintel (mcp_threatintel.server)
    |
    |-- SQLite cache (threatintel.db)  <-- populated by poller
    |-- Live API calls (LeakCheck, HIBP, Ahmia)
    v
threatintel-poller (mcp_threatintel.poller)
    |
    |-- abuse.ch feeds (URLhaus, MalwareBazaar, ThreatFox, Feodo)
    |-- AlienVault OTX pulses
    |-- CISA KEV catalog
    (syncs hourly by default)

The poller runs as a separate container and syncs threat feeds into a shared SQLite database. The MCP server reads from the cache for fast lookups, with live API calls only for on-demand services (LeakCheck, HIBP, Ahmia).


Setup

1. Clone and configure

git clone https://github.com/pete-builds/mcp-threatintel.git
cd mcp-threatintel
cp .env.example .env

Edit .env and add your API keys. Only ABUSECH_API_KEY is required. All others are optional.

2. Start the stack

docker compose up -d

This starts two containers:

  • mcp-threatintel: the MCP server on port 3707
  • threatintel-poller: background feed sync (runs every hour)

The poller will do an initial sync on first start. Give it a minute before the tools have data.

3. Connect to Claude Code

Register the MCP server with the Claude CLI:

claude mcp add threatintel --transport http --scope user --url http://localhost:3707/mcp

Or add to your Claude Code settings.json:

{
  "mcpServers": {
    "threatintel": {
      "type": "http",
      "url": "http://localhost:3707/mcp"
    }
  }
}

Restart Claude Code. The 12 tools will show up as mcp__threatintel__*.


API Keys

# Required
ABUSECH_API_KEY   # Register free at https://auth.abuse.ch/

# Optional (free)
OTX_API_KEY       # Register free at https://otx.alienvault.com/

# Optional (paid)
HIBP_API_KEY      # $4.50/mo at https://haveibeenpwned.com/API/Key
LEAKCHECK_API_KEY # $10/mo at https://leakcheck.io/

Notes

  • docker-compose.yml uses network_mode: host. The MCP server binds to 0.0.0.0:3707. If you're running this on a server (not just localhost), add a firewall rule to restrict access.
  • Optional bearer-token auth: set MCP_THREATINTEL_AUTH_TOKEN (generate with openssl rand -hex 32) and every HTTP client must send Authorization: Bearer <token>. Unset = no auth (single-host trusted-boundary default).
  • The SQLite database is stored in a named Docker volume (threatintel-data). It persists across container restarts.
  • LeakCheck results redact most of the exposed password value. Only the first and last two characters are shown.
  • HIBP password checks use k-anonymity: only the first 5 characters of the SHA-1 hash are sent to the API. The full password never leaves the machine.

Credits

Built by Pete Stergion for use with Claude Code.

Related: claude-research-agent — the research skill that uses this server for security investigations.

↑↓ navigate openesc close