UltraProbe
MISP MCP Server
A Model Context Protocol server for MISP (Malware Information Sharing Platform), with built-in prompt injection defense powered by prompt-defense-audit.
Why this exists: MISP holds operational threat intel β IOCs, threat actor profiles, attack patterns. When you connect an LLM agent to MISP via MCP, two new attack surfaces emerge:
Adversarial seeding. A threat actor who can submit content into your MISP instance (or a federated feed) can plant prompt-injection payloads designed to hijack downstream LLM agents.
Sensitive intel leakage. A manipulated LLM can be coerced into returning intel above its authorized TLP level.
This server wraps every outgoing MISP response in
prompt-defense-audit's output scanner, blocking high-risk patterns before they reach the LLM. Read-only by design β no write tools exposed.
Tracks: MISP/MISP#10745 β MCP server for MISP
Features
π‘οΈ Defense built in β every MISP response scanned for prompt-injection / XSS / shell-injection patterns before being returned
π Read-only by design β no event/attribute mutation tools; an LLM cannot modify your threat-intel platform
π§° 8 high-utility tools covering events, attributes, search, tags, feeds, galaxies
β‘ Zero-config beyond
MISP_URLandMISP_API_KEYπͺΆ Stdio transport β works with Claude Desktop, Cursor, Continue, Cline, any MCP client
π MIT license β fork freely, use commercially
Quick start
1. Install
npm install -g @ultralab/misp-mcp-serverOr use npx directly in your MCP client config (no install needed).
2. Configure your MCP client
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%/Claude/claude_desktop_config.json on Windows):
{
"mcpServers": {
"misp": {
"command": "npx",
"args": ["-y", "@ultralab/misp-mcp-server"],
"env": {
"MISP_URL": "https://misp.your-org.example",
"MISP_API_KEY": "your_misp_api_key_here"
}
}
}
}Cursor / Continue / Cline β similar pattern, see your client's MCP config docs.
3. Restart your MCP client and start asking
"What MISP events are tagged tlp:white from the last 7 days?"
"Show me event 12345 β I'm investigating a phishing report."
"What threat actor galaxies do we have configured?"
"Find all attributes matching the IP 198.51.100.42."Tools exposed
Tool | Purpose |
| Health check + server version |
| Paginated event headers |
| Full event with attributes (scanned for injection) |
| Search by tag / type / value / date range |
| Direct IOC lookup |
| All configured tags (TLP, taxonomy, etc.) |
| Configured threat-intel feeds |
| Threat actor / campaign clusters |
Mutation tools intentionally not included. An LLM with write access to MISP is a supply-chain compromise vector. If you need agent-driven MISP mutations, build a per-tool allowlist with human-in-the-loop confirmation.
Defense layer
Every tool response is run through prompt-defense-audit's scanOutput before being returned to the LLM client.
High-risk patterns (critical / high severity) β response is blocked and replaced with a safe summary. Example trigger patterns:
Script-tag injection (
<script>...</script>)Iframe / object injection
JavaScript URLs (
javascript:)Shell-command patterns in unexpected contexts
Known prompt-injection vector signatures from
prompt-defense-audit's 17+ vector library
Low/medium-risk patterns β response annotated with a [defense] prefix listing matched patterns but still returned.
Opt out (not recommended)
PROMPT_DEFENSE_DISABLED=trueUse only if you fully trust your MISP instance + all federated feeds and need raw response fidelity for a specific debugging scenario.
Environment variables
Variable | Required | Default | Notes |
| β | β | Base URL of your MISP instance (e.g. |
| β | β | MISP automation API key (Profile β Auth Keys) |
| β |
| Set to |
| β |
| Set |
For enterprise users
The free OSS defense layer ships with prompt-defense-audit (17+ regex-based vectors, ~3ms latency, deterministic).
For deployments that need:
π Persistent audit logs of every MISP query an LLM has made
π₯ Team policies (per-role allowlists, per-TLP gating, escalation flows)
π Jurisdictional compliance (EU GDPR / TW εθ³ζ³ / δΈε PIPL data-residency)
π¨ Live threat intel updates to the defense ruleset (new injection vectors pushed daily)
π SLA-backed uptime and response
β Upgrade path: route MCP server through Quartz Cloud β Taiwan-domiciled runtime AI firewall, drop-in passthrough.
Development
git clone https://github.com/ppcvote/misp-mcp-server.git
cd misp-mcp-server
npm install
npm test # smoke tests, no live MISP
npm run dev # tsx watch mode
npm run build # produce dist/Architecture
LLM client (Claude Desktop, Cursor, etc.)
β stdio
βΌ
@ultralab/misp-mcp-server
β
ββ src/tools.ts β 8 read-only tool definitions + dispatch
ββ src/misp-client.ts β minimal MISP REST API wrapper
ββ src/index.ts β MCP Server + scanOutput() defense layer
β
βΌ
MISP REST API (/events, /attributes, /tags, /feeds, /galaxies)Project context
Built by Ultra Lab β a one-person AI products company in Taiwan, focused on AI safety, threat intel, and the supply chain between LLM agents and operational security tooling.
This server is part of a broader thesis: the MCP ecosystem will be a major prompt-injection vector unless servers default to defensive output handling. We're shipping reference implementations for high-leverage targets (MISP first, OpenCTI / TheHive / Vault next) to anchor the standard.
Companion projects:
prompt-defense-auditβ the underlying detection engineultraprobeβ CLI scanner for AI app system promptsquartz.twβ paid runtime firewall (audit logs, team policies, jurisdictional moat)
License
MIT Β© 2026 Ultra Lab β see LICENSE.
Contributing
PRs welcome. Please:
Keep the read-only invariant. Mutation tools must be argued explicitly with a threat-model writeup.
Add a test for any new tool.
If you add new MISP API coverage, link to the relevant OpenAPI spec section in your PR.
For discussion, see MISP/MISP#10745.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ppcvote/misp-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server