BreachSpider MCP server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@BreachSpider MCP serverwhich CVEs affect our Moxa EDS-518A switch on firmware V3.5, and what fixes them?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
BreachSpider MCP server
A local, read only MCP server that lets AI agents (Claude Code, Claude Desktop, Cursor and any other MCP client) check industrial and IT devices against the BreachSpider device API.
Give it a vendor, product and firmware version exactly as your inventory says. It returns the CVEs that affect that version, the affected range and where it comes from, the fix, the vendor advisory and a fix plan. No CPE strings needed.
Tools
Tool | What it does |
| CVEs for each device at its exact version, in priority order, with the fix plan, coverage, warnings, |
| Cheap repeat check: send devices with their stored |
| Fix groups and fix plan for one device |
| BreachSpider's record for one CVE, trimmed |
All four are read only. They use the three endpoints a trial key can call:
POST /api/v1/assets/correlate-cves, POST /api/v1/assets/correlate-cves/check and GET /api/v1/cves/{id}.
Related MCP server: cve-lookup-mcp
Install
Requires Python 3.10 or newer.
pipx install breachspider-mcpThis puts a breachspider-mcp command on your path. Or run it without installing, with
uv: uvx breachspider-mcp.
API key
Set BREACHSPIDER_API_KEY to your key. Get a free 14 day trial key at
breachspider.com/developers.
With no key the server runs in demo mode: public example access only, using a short lived public demo token. Every result says so.
The key is only read from the environment. It is never logged or returned in tool output.
Setup
Claude Code
claude mcp add breachspider -e BREACHSPIDER_API_KEY=bs_live_your_key -- uvx breachspider-mcpAdd --scope user to make it available in every project. Leave out -e ... for demo mode.
Claude Desktop
Edit claude_desktop_config.json (Settings, Developer, Edit Config) and restart Claude Desktop:
{
"mcpServers": {
"breachspider": {
"command": "/full/path/to/breachspider-mcp",
"env": { "BREACHSPIDER_API_KEY": "bs_live_your_key" }
}
}
}Use the full path from which breachspider-mcp; Claude Desktop does not read your shell path.
Cursor
Add the same block to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
{
"mcpServers": {
"breachspider": {
"command": "/full/path/to/breachspider-mcp",
"env": { "BREACHSPIDER_API_KEY": "bs_live_your_key" }
}
}
}Example question
We have a Moxa EDS-518A switch on firmware V3.5. Which CVEs affect it, are any known-exploited, and what version fixes them? Cite the sources.
The agent calls correlate_devices and answers with three CVEs, all fixed by security patch 3.11.2, citing
Moxa advisory MPSA-241156.
Privacy
Only vendor, product, version and an optional asset_id (plus result_hash for check_changes) are sent.
Any other field is dropped before the request. Fields that look identifying (host name, IP or MAC address, user,
site, location, serial number and similar) are listed in the output under privacy.dropped_identifying_fields.
An asset_id that looks like a host name, address or email is replaced with a neutral id such as asset-1.
Honest results
Each device gets an assessment sentence. An unresolved device, partial coverage, a product with no version data
or an empty list is never reported as clean, and needs_review is always passed through. Agents are told to
repeat this in their answer.
Trial limits and errors
API errors come back as plain messages, including TRIAL_REQUIRED, TRIAL_SCOPE, TRIAL_BATCH_LIMIT
(25 devices per call on a trial), the trial limit (750 device checks; the message gives usage and when the trial
ends) and TRIAL_ENDED, each with a link to the developer page and a way to talk to us. check_changes costs a
tenth of a device check, so use it for repeat checks.
Development
python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/python -m pytest # unit tests (mocked) plus live demo mode tests
BREACHSPIDER_SKIP_LIVE=1 .venv/bin/python -m pytest # offline only
npx @modelcontextprotocol/inspector --cli .venv/bin/breachspider-mcp --method tools/listBREACHSPIDER_BASE_URL points the server at another deployment (default https://breachspider.com).
License
MIT, same as the BreachSpider Python SDK. See LICENSE.
Available Tools
4 toolscheck_changesARead-onlyIdempotent
Cheap repeat check. For devices you already checked with correlate_devices, send the same vendor, product and version plus the result_hash you kept. Returns which devices changed and their new hash; only changed devices need a fresh correlate_devices call. Use this for repeat checks. Never send host names, IP or MAC addresses, user names or site names.
| Name | Required | Description | Default |
|---|---|---|---|
| assets | Yes | Devices with the result_hash from an earlier correlate_devices call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: it is a cheap incremental check, it returns changed devices plus their new hash, and it imposes a strict input-privacy rule (no host names, IPs, MACs, user or site names).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded, with the identity of the tool and the workflow constraint stated first and the privacy warning last. 'Use this for repeat checks' lightly restates the opening phrase, a minor redundancy rather than bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries return-value duty and does so: it explains that changed devices and their new hash come back. Combined with the input-privacy rule and the follow-up guidance, nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description still earns credit by explaining the workflow contract — reuse the same vendor/product/version plus the retained result_hash from correlate_devices — and by adding a privacy constraint that the schema only partially mirrors ('Never a host name or address').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource framing ('Cheap repeat check') and immediately scopes it to devices previously processed by correlate_devices. An agent can distinguish it from correlate_devices without opening either schema, since the repeat-check role is stated outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use ('Use this for repeat checks') and routes the follow-up work precisely: 'only changed devices need a fresh correlate_devices call.' The sibling relationship and the condition that selects each tool are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
correlate_devicesARead-onlyIdempotent
Find the CVEs that affect specific devices at their exact firmware or software version. Use this for any specific device and firmware. Send vendor, product and version exactly as the inventory says; no CPE is needed. Returns, per device: how it resolved, data coverage, an honest assessment, warnings, needs_review, result_hash (keep it for check_changes), the fix plan, and the top findings in priority order (known-exploited and confirmed first). Each finding gives the affected range with its source, the fix, advisory guidance and vendor advisories: cite the range source and the vendor advisory when explaining it. Report needs_review and partial coverage honestly and never call an empty, unresolved or partial result clean. Never send host names, IP or MAC addresses, user names or site names; such fields are stripped and listed under privacy.
| Name | Required | Description | Default |
|---|---|---|---|
| assets | Yes | Devices to check: vendor, product, version and an optional neutral asset_id. | |
| max_findings | No | Findings returned per device, highest priority first. | |
| confirmed_only | No | Only CVEs confirmed for this version by a version range. | |
| fix_available_only | No | Only CVEs with a fix available. | |
| known_exploited_only | No | Only known-exploited CVEs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, and the description adds substantial value beyond them: the per-device return shape, prioritization order, result_hash retention, and explicit privacy handling (host/IP/MAC/user/site fields stripped and listed under 'privacy'). It also states an honesty contract ('never call an empty, unresolved or partial result clean') that no annotation conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence and the return/policy details are dense rather than padded. It runs long and restates the honesty rule twice ('Report needs_review and partial coverage honestly' / 'never call ... clean'), and enumerates return fields in prose where less would do, but almost every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry return-value semantics, and it does: resolution outcome, coverage, warnings, needs_review, result_hash, fix plan, prioritized findings with range source and vendor advisories. Privacy constraints and next-tool usage are also covered, so an agent has everything needed to invoke and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds real meaning: vendor/product/version must be sent 'exactly as the inventory says,' no CPE is needed, and forbidden fields are stripped. The filters (max_findings, confirmed_only, etc.) are left to the schema, which documents them adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Find) plus the exact resource (CVEs affecting specific devices) and pins the scope to 'their exact firmware or software version.' This cleanly separates it from siblings like lookup_cve (single-CVE lookup) and get_fix_plan without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this for any specific device and firmware' gives a clear triggering context, and the note to keep result_hash 'for check_changes' routes the agent into the correct follow-up tool. It stops short of stating when NOT to use it (e.g. single-CVE questions belong to lookup_cve), so it is clear context rather than full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fix_planARead-onlyIdempotent
Fix plan for one device: fix groups (which update clears which CVEs) and the fix plan (the single step that clears the known-exploited CVEs, and the one that clears everything fixable). Send vendor, product and version exactly as the inventory says. Says so plainly when the device did not resolve or coverage is partial. Never send host names, IP or MAC addresses, user names or site names.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | Yes | One device: vendor, product, version. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open-world), so the bar is lower. The description adds real behavioral value by disclosing that it reports plainly when a device did not resolve or coverage is partial, which the annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and returned content are front-loaded before the input guidance and privacy constraints. Two dense sentences, each carrying load, with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-shape burden and does so by naming the fix groups and the two plan steps. Combined with annotations covering safety and a single well-documented parameter, this is nearly complete; only the when-to-use routing remains thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning on top by stressing exact-as-inventory matching and enumerating forbidden identifiers (host names, IP/MAC, user/site names), which sharpens correct usage beyond the schema's field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and output ('Fix plan for one device') and details what the plan contains: fix groups mapping updates to CVEs, plus the known-exploited and full-coverage steps. This clearly separates it from lookup_cve (raw CVE data) though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives input-matching guidance ('send vendor, product and version exactly as the inventory says') and privacy exclusions, implying how to call it. But it never states when to reach for this tool versus correlate_devices or lookup_cve, so the when-to-use decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_cveARead-onlyIdempotent
Look up one CVE by id (for example CVE-2024-9137) and return BreachSpider's record, trimmed: severity, CVSS, known-exploited status, EPSS, fix status, vendor and CISA ICS advisories and links. It is not device specific; to know whether a device is affected, use correlate_devices.
| Name | Required | Description | Default |
|---|---|---|---|
| cve_id | Yes | A CVE id such as CVE-2024-9137. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds value by disclosing that the record is 'trimmed' and listing the concrete fields returned (severity, CVSS, EPSS, fix status, advisories), which an agent cannot infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the lookup action and scope, followed by the sibling routing. No filler; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates return fields, which is the main gap it needs to fill. Auth/rate-limit behavior is not mentioned, but for a simple read-only lookup this is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is fully documented in the schema (100% coverage) with the same CVE-2024-9137 example, so the description adds little beyond it. Slight credit for reinforcing the ID format and clarifying that lookup is by CVE id only, not device.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look up one CVE by id') with a concrete example (CVE-2024-9137), and enumerates the returned fields so the agent knows exactly what the record contains. It also explicitly distinguishes itself from the sibling correlate_devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the negative condition ('It is not device specific') and names the alternative tool with the condition that selects it ('to know whether a device is affected, use correlate_devices'). This is textbook routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
check_changes - First observed
correlate_devices - First observed
get_fix_plan - First observed
lookup_cve
TDQS
Scored across 4 tools
Each tool has a fairly distinct purpose: correlate_devices (device-to-CVE mapping), check_changes (cheap re-check via result_hash), lookup_cve (single CVE by id), and get_fix_plan (per-device remediation). The one soft overlap is that correlate_devices already returns a fix plan in its output while get_fix_plan offers a dedicated per-device plan, which could cause an agent to hesitate; descriptions mostly resolve this.
All four tools follow a clean snake_case verb_noun pattern: correlate_devices, check_changes, lookup_cve, get_fix_plan. The convention is uniform throughout with no mixed styles or casing.
Four tools is lean but appropriate for a focused device-vulnerability correlation service, and each earns its place (correlate, re-check, CVE lookup, fix plan). It is on the thin side, with no room for batch or search operations.
The core lifecycle is covered: correlate devices, cheaply detect changes, look up individual CVEs, and get a fix plan. Minor gaps exist—no cross-cutting CVE search (by keyword/severity) or a tool to enumerate inventory—but the primary workflows are complete and the result_hash linkage is a thoughtful touch.
Related MCP Connectors
EOL dates, risk scores, CISA KEV exposure, SBOM audits and edge-device EOS for 500+ products.
Read-only CVE intelligence, remediation playbooks, and agent setup guides. Not a scanner.
Real-time CVE, exploit, and vulnerability intelligence for AI assistants (350K+ CVEs, 115K+ PoCs)
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides CVE search enriched with EPSS exploit likelihood and CISA KEV status, plus live IP/domain reputation and a real-time threat feed for AI agents.MIT
- AlicenseAqualityDmaintenanceProvides live CVE data from NVD and EPSS without API key, enabling AI assistants to look up CVSS scores, search vulnerabilities, and check product CVEs.3MIT
- AlicenseNot gradedqualityCmaintenanceProvides CVE lookup, search, and exploit intelligence from public vulnerability sources (NVD, CISA KEV, EPSS) for AI agents to produce remediation guidance without consuming LLM tokens for data fetching.1MIT
- AlicenseNot gradedqualityBmaintenanceVulnerability intelligence for AI agents that enables CVE lookup, package vulnerability checks, and dependency auditing without API keys.MIT