The open-source security platform for MCP servers and AI agents.
Runtime firewall Β· LLM-powered analysis Β· Behavioral anomaly detection Β· Live dashboard
Fully offline. No API keys required. No data leaves your machine.
Quick Start Β· Features Β· Dashboard Β· OWASP Coverage Β· Honeypot Β· Docs
30+ CVEs against MCP servers in 60 days. 437,000 compromised downloads. Tool poisoning attacks that exfiltrate your SSH keys, WhatsApp history, and private repos β all invisible to the user.
Existing solutions require external API calls, leak your tool descriptions to third parties, or only do static scanning. None provide runtime protection.
Praesidio is different: a Rust-native security platform that sits between your MCP client and servers, providing real-time defense β entirely offline, with optional LLM-powered deep analysis.
# Install
cargo install praesidio
# Scan all your MCP configs for vulnerabilities
praesidio scan
# Start the runtime proxy (intercepts + filters all MCP traffic)
praesidio proxy
# Launch the security dashboard
praesidio dashboard
# Check if any tools have been tampered with
praesidio pin verify
# Deploy a honeypot to catch attackers
praesidio honeypot startπ‘οΈ Praesidio v0.1.0 β Scanning MCP configurations...
π Found 3 MCP configs:
β Claude Desktop (~/.config/Claude/claude_desktop_config.json)
β Cursor (~/.cursor/mcp.json)
β Claude Code (./.claude/settings.json)
π Scanning 7 servers, 23 tools...
π¨ CRITICAL Tool poisoning detected
Server: sketchy-math-server
Tool: add
Risk: Hidden <IMPORTANT> tag with instructions to exfiltrate ~/.ssh/id_rsa
LLM: Confirmed malicious (confidence: 0.97)
Action: BLOCKED
π¨ CRITICAL Credential leak in output
Server: custom-api
Tool: query
Risk: Response contains AWS access key (AKIA...)
Action: BLOCKED β output redacted
β οΈ WARNING Behavioral anomaly
Server: filesystem
Tool: read_file
Risk: Output size 47KB (baseline avg: 2.1KB, z-score: 4.2)
Action: Flagged for review
β
5 servers, 20 tools passed all checks
π OWASP Compliance: MCP Top 10 (9/10) Β· Agentic Top 10 (8/10)
π Tool pins: 23 tools pinned (0 changes detected)
π― Honeypot: 0 attacks in last 24h
- Tool poisoning detection β Hidden instruction tags, suspicious keywords, sensitive path references
- Unicode analysis β Zero-width characters, bidirectional overrides, homoglyph attacks
- Credential leak detection β AWS keys, GitHub tokens, SSH keys, JWTs, .env contents
- Tool pinning β SHA-256 schema hashing detects rug-pull attacks
- Permission engine β Per-server read/write scoping, tool allowlists, rate limiting
- Provider cascade: Local Ollama β Claude API β OpenAI β heuristic fallback
- Deep tool analysis β Semantic intent classification beyond pattern matching
- Output scanning β Detects injection payloads and encoded exfiltration that regex misses
- Behavioral intent β Classifies anomalies as benign changes vs active attacks
- Fully optional β Works perfectly with heuristics only, LLM adds accuracy
- Per-tool profiling β Learns what "normal" looks like (output size, entropy, timing, frequency)
- Statistical anomaly detection β Z-score composite across 6 feature dimensions
- Online learning β Profiles update continuously, no training data needed
- Cold start handling β Reduced sensitivity during learning period
- Crowdsourced threat feed β Known-bad tool signatures, CVE mappings
- Server trust registry β npm-audit style trust scores for MCP servers
- Opt-in sharing β Only anonymized hashes, never your data
- Offline-first β Feed syncs periodically, works fully offline between syncs
- Real-time event feed β WebSocket-powered live view of all security events
- Server topology β Visual map of connected servers with trust scores
- Tool inspector β Deep-dive into any tool's description, LLM analysis, behavior profile
- OWASP scorecard β Compliance status for all 20 OWASP risks
- Audit trail β Searchable, filterable, exportable log of every event
- Trap tools β Fake credentials, fake DB, fake files, fake email sender
- Attack classification β Credential harvesting, SQL injection, path traversal, exfiltration
- Canary data β Plausible but traceable fake secrets
- Deploy alongside real servers β Detect probing before it reaches production
Praesidio maps to all 20 risks across both OWASP MCP Top 10 and OWASP Agentic Top 10:
| OWASP MCP Top 10 | Status | Module |
|---|---|---|
| MCP01: Token mismanagement | β | Credential leak detector |
| MCP02: Tool poisoning | β | Scanner + LLM analyzer |
| MCP03: Privilege escalation | β | Permission engine |
| MCP04: Supply chain attacks | β | Registry + threat feed |
| MCP05: Command injection | β | Output filter + LLM |
| MCP06: Context over-sharing | β | Behavioral fingerprinting |
| MCP07: Insufficient auth | β | Permission enforcer |
| MCP08: Insufficient logging | β | Audit logger + dashboard |
| MCP09: Shadow MCP servers | β | Config discovery + honeypot |
| MCP10: Covert channel abuse | β | Exfil detector + behavior |
| OWASP Agentic Top 10 | Status | Module |
|---|---|---|
| ASI01: Agent goal hijacking | β | LLM intent classifier |
| ASI02: Tool/function misuse | β | Permissions + behavior |
| ASI03: Insecure agent memory | β | Output filter + LLM |
| ASI04: Prompt injection | β | Scanner + LLM + behavior |
| ASI05: Supply chain vuln | β | Registry + feed + pinner |
| ASI06: Code execution | β | Permission scope |
| ASI07: Identity spoofing | β | Honeypot detection |
| ASI08: Excessive permissions | β | Least-privilege enforcer |
| ASI09: Insufficient monitoring | β | Dashboard + audit |
| ASI10: Multi-agent trust | β | Cross-server analysis |
# praesidio.toml
[global]
block_on_critical = true
[llm]
providers = ["local", "anthropic", "openai"] # Cascade order
trigger = "suspicious" # Only use LLM when heuristics flag
[llm.local]
model = "llama3.2:3b" # Fast + free
[behavior]
enabled = true
anomaly_warn_threshold = 0.6
anomaly_block_threshold = 0.85
[servers.filesystem]
scope = "read-only"
[servers.github]
scope = "read-write"
blocked_tools = ["delete_repository"]
[servers."*"]
scope = "read-only"MCP Client (Claude Desktop, Cursor, Claude Code)
β
βΌ
ββββ Praesidio Proxy βββββββββββββββββββββββββ
β β
β Inbound: Scanner β Unicode β Pinner β
β LLM: Deep analysis (if suspicious) β
β Outbound: Credential β Exfil β Injection β
β Behavior: Anomaly scoring (per-tool) β
β Enforce: Permissions β Rate limits β
β Log: Audit trail β Dashboard β Feed β
β β
ββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
MCP Servers (only clean traffic passes through)
| Praesidio | mcp-scan (Snyk) | Onyx Security | Strata | |
|---|---|---|---|---|
| Fully offline | β | β | β | β |
| Open source | β MIT | β | β | β |
| Runtime proxy | β | β | β | |
| LLM analysis | β (local) | β (API) | ? | β |
| Behavioral detection | β | β | β | β |
| Honeypot | β | β | β | β |
| OWASP coverage | 20/20 | Partial | Partial | Partial |
| Web dashboard | β | β | β | β |
| Language | Rust | Python | ? | ? |
| Price | Free | Free tier | Enterprise | Enterprise |
Praesidio is MIT licensed and welcomes contributions. See CONTRIBUTING.md for guidelines.
Priority areas:
- Detection rules for new attack patterns
- Threat feed signatures
- Dashboard UI improvements
- Local LLM model benchmarks
- Integration tests
Arka
If Praesidio helps protect your MCP setup, consider starring the repo β
MIT β use it however you want.