If you're wiring third-party MCP servers into an agent, here's what to actually check before you trust one, how that maps to the OWASP MCP Top 10, and a fair comparison of the open-source scanners you can run today.
Model Context Protocol servers are, functionally, third-party code you're handing tool-calling access to. A malicious or careless one can inject instructions through a tool description, exfiltrate data through an "innocent" fetch tool, or shadow a trusted tool's name. If you've never audited an MCP server before installing it, this is the practical starting point: what to look for, then which tools actually check for it.
There isn't one universal MCP security check, there are several distinct risk classes, and different tools catch different subsets. Before picking a scanner, know what you're checking for:
description field is untrusted text the model reads. Imperative override language, hidden unicode, or a fake "system" tag inside a description can steer the model without the user ever seeing it.npx/uvx/pip installs, plaintext transports, or remote sources with no provenance or signature.The OWASP MCP Top 10 (beta) is the closest thing to a standard framework for MCP-specific risk right now. A purely static, offline scan of a server's manifest (its mcp.json or equivalent config) can reach some of these categories but not all of them, worth knowing going in:
| Risk class | OWASP MCP Top 10 | Reachable by static manifest scan? |
|---|---|---|
| Prompt injection via tool descriptions | MCP01 | Yes |
| Tool poisoning / shadowing | MCP02 | Yes |
| Credential / secret exposure | MCP03 | Yes |
| Supply chain risk | MCP04 | Yes |
| Excessive agency / permissions | MCP06 | Yes |
| Runtime tool poisoning (post-install behavior change) | MCP02 (runtime variant) | No, needs a live connection or re-scan |
| Cross-origin session hijacking | MCP07 | No, needs a live connection |
| Denial of service | MCP08 | No, needs a live connection or load test |
That split (six categories a static scan can reach, several it structurally can't) is the same split you'll see across every scanner below. It's why "run a static scanner" and "run a live audit" are complementary steps, not substitutes for each other. We wrote a full heuristic-by-heuristic mapping in a separate reference post if you want the exact rule-to-category table.
Three actively maintained, open-source (or source-available) MCP security scanners exist as of this writing, each with a genuinely different shape. Facts below are pulled from each project's public README as of 2026-08-24.
MIT-licensed, zero-dependency Python or npx tool. Two modes: a live-endpoint scan that runs 15 prompt-injection/jailbreak probes against your actual LLM, and a fully offline static scan of an mcp.json manifest across 10 heuristics. No signup, no API key, no network calls at all for the --demo path. Every finding is tagged against both the OWASP LLM Top 10 and OWASP MCP Top 10 (beta). Doesn't execute or connect to live MCP servers, doesn't do malware/binary scanning, doesn't auto-discover configs across IDEs.
pip install sentinel-scan-cli
sentinel-scan mcp --demo
Apache 2.0, installed via uv tool install, Python 3.11+. The broadest engine set of the three: YARA rules, LLM-based semantic analysis, Cisco AI Defense API, VirusTotal hash lookups, pip-audit CVE scanning, and Docker-sandboxed behavioral analysis of PyPI/npm packages. Scans both live MCP servers (stdio/remote) and offline static JSON. Core YARA/static scanning needs no keys; the LLM, AI Defense, and VirusTotal analyzers are opt-in extras that do need their own API keys. Doesn't reference OWASP LLM or MCP Top 10 mapping in its README.
Worth flagging up front: the old invariantlabs-ai/mcp-scan repo now redirects to snyk/agent-scan, absorbed into Snyk and rebranded. If you're going off an older blog post describing it as a standalone, no-account CLI, that's out of date, it now requires a free Snyk account and an API token before it will scan anything. In exchange, it has by far the broadest auto-discovery of the three: install paths for a dozen-plus IDEs and coding agents (Cursor, Claude Desktop/Code, VS Code, Windsurf, Gemini CLI, and more), plus dedicated scanning of agent skills (like Claude Skills), a surface neither of the other two tools touches. Component data (tool descriptions, server configs, skill content) is sent to Snyk's hosted analysis API as a hard requirement, not an opt-in.
These aren't mutually exclusive. A static manifest check and a live prompt-injection probe catch different things; running more than one tool from this list is reasonable if the stakes justify it.
Every scanner above that includes a static/offline mode shares the same structural blind spot: a manifest scan reads declared configuration, it doesn't observe what a server actually does once it's running. Runtime tool poisoning, indirect injection via tool output content, and behavior that only shows up under adversarial load all need either live execution (sandboxed or not) or a proper security audit against the running system. If you've run a static scan and want to know what's left, that's the gap a managed audit is built to close.
A day after this comparison went up, both other tools moved. Worth a correction rather than a silent edit:
pypi-scan/npm-scan subcommands) across ten languages (Python, TS/JS, Go, Java, Kotlin, C#, Rust, Ruby, PHP), VirusTotal hash-based malware lookups, pip-audit CVE/PYSEC/GHSA dependency scanning, and an LLM meta-analyzer that cross-references findings across its other engines. It's still free, Apache-2.0, and doesn't map to the OWASP LLM or MCP Top 10 the way our tool does, but on raw engine count it's pulled further ahead of everyone else on this list.invariantlabs-ai/mcp-scan used to work, that specific product no longer exists as a standalone offering.Net effect: the field didn't get more crowded, it got more polarized. Cisco is doubling down on being the deep, multi-engine, DIY-runbook option; Snyk is exiting the narrow-tool category entirely in favor of a platform sale; sentinel-scan-cli stays the zero-signup, offline, OWASP-mapped smoke test in between.
Sentinel Scan's managed audit runs adversarial probes against your actual running system, graded by an independent judge, mapped to OWASP LLM Top 10 & NIST AI 600-1, in 24 hours. See a real, unedited example before you decide whether it's worth it.
Sources: sentinel-scan-cli README, fetched 2026-08-24. Cisco mcp-scanner README, fetched 2026-08-24. Snyk Agent Scan README, fetched 2026-08-24 (accessed via redirect from github.com/invariantlabs-ai/mcp-scan). OWASP MCP Top 10 (beta) category names per project documentation.