Whisper Graph Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Whisper Graph Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<p align="center"> <img src="./assets/whisper-logo.svg" alt="WhisperGraph" width="120" /> </p>
<h1 align="center">WhisperGraph MCP Server</h1>
<p align="center"> The internet's infrastructure graph for AI agents - 46B nodes and edges mapping DNS, IPs, ASNs, BGP, WHOIS, Web links and threat intel. Sign up programmatically in 2 HTTP calls. </p>
<p align="center"> <a href="https://www.npmjs.com/package/@whisper-security/whisper-graph-mcp"><img src="https://img.shields.io/npm/v/@whisper-security/whisper-graph-mcp.svg" alt="npm version" /></a> <a href="./LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-blue.svg" alt="License: Apache-2.0" /></a> <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg" alt="Node >= 20" /> </p>
WhisperGraph is an MCP server backed by the world's largest internet-infrastructure graph database - 46 billion nodes and edges across 20 entity types, mapping every domain, IP, ASN, prefix, organization, Web link and threat-intelligence listing into a single Cypher-queryable graph. Used by security teams, incident responders, and AI agents for investigation, attribution, brand protection, and infrastructure forensics.
Built for agents from day one.
What you can ask:
CALL explain() for full threat scoringLearn more: Agent signup · WhisperGraph intro · Cypher API reference · Query guide · Cypher syntax · Functions · Best practices · MCP setup
You need a WhisperGraph API key. Get one either:
Whisper runs a hosted MCP server at https://mcp.whisper.security. Point any MCP client that supports remote servers at it and authenticate with your API key:
{
"mcpServers": {
"whisper": {
"url": "https://mcp.whisper.security",
"headers": { "Authorization": "Bearer <your_api_key>" }
}
}
}For local stdio transport, add this to your MCP client config:
{
"mcpServers": {
"whisper-graph": {
"command": "npx",
"args": ["-y", "@whisper-security/whisper-graph-mcp"],
"env": { "WHISPER_API_KEY": "your-api-key" }
}
}
}Self-hosting this repo is for teams who want to run the MCP layer in their own environment. See How to set up.
Get a working API key in two HTTP calls - no browser, no CAPTCHA, no waiting list.
Step 1 - start signup (Whisper emails a verification code):
POST https://console.whisper.security/api/signup
Content-Type: application/json
{"email":"[email protected]","attribution":{"agent_name":"your-agent","source":"<registry-name>"}}Step 2 - verify with the emailed code:
POST https://console.whisper.security/api/signup/verify
Content-Type: application/json
{"signup_id":"...","code":"..."}The response contains api_key, mcp_url, dashboard_url, and docs_url. Use api_key in the MCP config snippet above. Full docs: whisper.security/docs/agent-signup.
All eight tools are read-only.
| Tool | What it does |
|---|---|
query | Execute a Cypher query against WhisperGraph. Validated against a safety rule set before it reaches the backend. |
list_labels | List every node label with counts. Call it before writing a query when you're unsure which label to anchor on. |
describe_label | Confirm a label exists and enumerate its property keys. |
explain_indicator | Threat assessment for an IP, hostname, CIDR, or ASN - score, level, factors, sources. |
whisper_history | Historical WHOIS or BGP data for an indicator. |
domain_variants | Typosquatting / brand-protection variants of a domain, checked against the graph. |
list_recipes | List the full whisper.security catalog of ready-made recipes (see below). |
run_recipe | Run any catalog recipe by slug - a keyless direct procedure or a keyed multi-step flow. |
list_recipes + run_recipe expose the entire whisper.security catalog - 29 curated recipes, no hand-written Cypher required. The vendored catalog (src/catalog/recipes.json) is generated from the canonical source with npm run sync:catalog, so it tracks the platform.
Two kinds:
assess (threat posture), identify (vendor/operator), explain, variants, origins (CDN de-cloak), history / history-whois, walk, psl-tldplusone, psl-affiliation, asset, lookup-tor-relay, db-schema.attack-path, attack-surface, indicator-enrichment, infrastructure-mapping, subdomain-takeover, bgp-hijack-exposure, blast-radius, route-health, typosquat, nameserver-hijack-dns-consistency, map-supply-chain-concentration, discover-ai-agent-infrastructure, build-takedown-evidence-package, indicator, anycast-dns-root-sovereignty.// keyless direct recipe
{ "name": "run_recipe", "arguments": { "recipe": "assess", "inputs": { "v": "185.220.101.33" } } }
// keyed multi-step flow (needs WHISPER_API_KEY / X-API-Key)
{ "name": "run_recipe", "arguments": { "recipe": "indicator-enrichment", "inputs": { "value": "github.com" } } }Each recipe carries a docsUrl (visible in list_recipes) linking to its page under whisper.security/docs.
Six MCP resources: the full schema, the relationship map, a Cypher function reference, a query cookbook, plus live whisper://stats and whisper://quota.
Eight investigation-workflow prompt templates: investigate-ip, map-attack-surface, compare-domains, blast-radius, threat-triage, whois-pivot, bgp-investigation, typosquat-sweep.
For remote or team deployments, run the server over Streamable HTTP:
docker run -p 8080:8080 -e MCP_TRANSPORT=http \
ghcr.io/whisper-sec/whisper-graph-mcp:latestOr with Docker Compose:
docker compose upIn HTTP mode the server does not authenticate inbound requests - it relays the caller's X-API-Key or Authorization: Bearer header to the hosted WhisperGraph API, falling back to the WHISPER_API_KEY environment variable when no header is present. Put it behind your own gateway if you need access control.
All configuration is via environment variables.
| Variable | Default | Description |
|---|---|---|
WHISPER_API_KEY | _(none)_ | Your WhisperGraph API key. Get one programmatically in 2 HTTP calls or via the dashboard. |
MCP_TRANSPORT | stdio | stdio for local CLI use, http for remote/Docker. |
HTTP_HOST | 0.0.0.0 | Bind host for the HTTP transport. |
HTTP_PORT | 8080 | Bind port for the HTTP transport. |
WHISPER_ALLOWED_HOSTS | _(none)_ | Comma-separated Host header allowlist for DNS-rebinding protection in HTTP mode. Leave empty only behind a trusted gateway. |
WHISPER_DB_URL | https://graph.whisper.security | Base URL of the hosted WhisperGraph API. |
WHISPER_QUERY_TIMEOUT_MS | 60000 | Hard per-query deadline forwarded to the API. |
WHISPER_DB_TIMEOUT_MS | 10000 | HTTP timeout for non-query calls. |
LOG_LEVEL | info | debug, info, warn, or error. |
npm install
npm run dev # run from source over stdio
npm test # unit + integration tests (no secrets needed)
npm run build # bundle to dist/
npm run lint # eslint
npm run typecheck # tsc --noEmitContributions are welcome. See CONTRIBUTING.md and our Code of Conduct. Security issues: see SECURITY.md.
Apache-2.0. "Whisper", the Whisper logo, and "WhisperGraph" are trademarks of Whisper Security - see NOTICE.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.