mcp-sentinel-scanner
Scan any MCP server against 184 security detection rules - directly from Claude, Cursor, or any MCP client.
npx mcp-sentinel-scannerNo MCP client handy? Prefer the web form? Scan a server →
Quick Setup
Add to Claude Desktop
Open your Claude Desktop config and add the scanner as an MCP server:
{
"mcpServers": {
"mcp-sentinel-scanner": {
"command": "npx",
"args": ["-y", "mcp-sentinel-scanner"]
}
}
}Ask Claude to scan
Just ask in natural language. The scanner exposes three tools that Claude can call:
Get actionable results
Every finding includes evidence (what triggered it) and remediation (how to fix it).
Available Tools
scan_server
Analyze server metadata without a live connection. Pass tools, descriptions, source code, and dependencies. Returns findings + verdict.
scan_endpoint
Connect to a live MCP server endpoint. Enumerates tools via initialize + tools/list (safe, read-only), then runs all 184 detection rules.
list_rules
List all available detection rules. Filter by category or severity to explore specific rule sets.
Example Output
What a scan result looks like:
{
"server_name": "my-mcp-server",
"verdict": "risk",
"verdict_summary": "Risk - a critical issue (or a lethal-trifecta
capability pattern) was observed across 3 findings.",
"lethal_trifecta": false,
"severity_counts": {
"critical": 1,
"high": 1,
"medium": 1,
"low": 0,
"informational": 0
},
"findings_count": 3,
"findings": [
{
"rule": "Prompt Injection in Tool Description",
"severity": "critical",
"evidence": "Tool description contains injection pattern:
'ignore all previous instructions'",
"remediation": "Remove instruction-like language from
tool descriptions. Use factual, concise descriptions.",
"rule_id": "A1"
},
{
"rule": "Hardcoded Secrets",
"severity": "high",
"evidence": "Hardcoded API key pattern detected:
sk-proj-abc123...",
"remediation": "Move secrets to environment variables.
Never hardcode API keys in source code.",
"rule_id": "C5"
},
{
"rule": "Missing Input Validation",
"severity": "medium",
"evidence": "Parameter 'query' has type string with
no maxLength, pattern, or enum constraint.",
"remediation": "Add maxLength, pattern, or enum
constraints to string parameters.",
"rule_id": "B1"
}
],
"rules_version": "2026.09"
}Verdict Interpretation
A scan leads with a coverage-aware verdict, not a number. A clean result is only Safe when coverage was sufficient to certify it — otherwise it is Insufficient coverage, never Safe.
Detection Coverage
184 rules across 21 categories - counts derived from the live rule catalogue
Safety
The scanner never invokes tools on target servers. It only calls initialize and tools/list for enumeration. All analysis is deterministic - no LLM calls, no false positives from probabilistic models.
Other MCP Clients
Works with any MCP-compatible client:
Settings → MCP → Add Server.vscode/mcp.json~/.codeium/windsurf/mcp_config.jsonclaude mcp add mcp-sentinel-scanner