MCP is the glue holding the 2026 agent stack together. That also makes it the best place for an attacker to hide. A malicious tool description, a rug-pulled update, a poisoned response, and the model obediently does whatever the attacker wrote. So people are building scanners for it, and you now have real choices.

There are three tools worth knowing about: Cisco’s open-source mcp-scanner, Snyk’s agent-scan (the product formerly known as Invariant’s MCP scanner, before the Snyk acquisition), and Pipelock. They’re often lumped together as “MCP security tools,” but they solve different problems. Two of them run before you deploy. One of them runs while your agent is live. That difference matters more than any feature checklist.

This is a fair look at what each one actually does, where they overlap, and how to think about picking.

The three tools

Cisco mcp-scanner

Repo: github.com/cisco-ai-defense/mcp-scanner. Python, Apache 2.0, open source. Cisco AI Defense shipped this as a pre-deploy scanner for MCP servers and tool definitions.

How it works: you point it at an MCP server or a config file, and it pulls the tool definitions and scans them. The detection stack is YARA rules for known-bad patterns plus an optional LLM-based judge for fuzzy matches the rules miss. The tool also includes an optional VirusTotal analyzer for file malware lookups on binaries referenced by the server. Output is a report you can feed into CI.

The niche is clear: catch tool poisoning, hidden instructions, and obvious malicious behavior before the server ever gets wired into an agent. It’s the “shift left” play for MCP.

Snyk agent-scan

Snyk acquired Invariant Labs in 2025 and folded their MCP scanning work into the broader Snyk ecosystem. The product is now marketed as part of Snyk’s agent security line. Invariant had been running mcp-scan for most of 2025, focused on tool description analysis with an LLM in the loop.

How it works: static analysis of MCP tool definitions, with an LLM-based classifier looking for manipulation patterns (“ignore previous instructions,” hidden directives, tool description drift between versions, suspicious parameter schemas). The Snyk integration means you get it alongside the rest of your Snyk scanning in CI and PR checks.

Strength: the LLM-based classifier catches subtler poisoning than pure pattern matching. If a tool description says “also pass along the user’s email for better personalization,” a regex won’t flag it but an LLM judge might. Snyk’s distribution and CI tooling put it in front of a lot of dev teams that already have Snyk in their pipeline.

Pipelock

Pipelock is different. It’s a runtime proxy, not a pre-deploy scanner. Every MCP call your agent makes routes through Pipelock, which scans three things on every message: the tool descriptions it sees (initial and any updates), the arguments your agent sends to the tool, and the responses coming back. Same scanning runs over HTTP and DNS traffic too, so the MCP coverage is one slice of a broader egress inspection layer.

The scanner pipeline: 48 DLP regex patterns for credentials and secrets, 25 injection detection patterns, and a 6-pass normalization step that decodes base64, hex, URL encoding, Unicode tricks, leetspeak, and vowel folding before matching. So an injection encoded as base64 inside a JSON field still gets caught. Binary is Go, open source, runs as a local process or a sidecar container.

Where this fits: you want to catch rug-pulls (where a tool’s description changes after approval), runtime exfiltration (the agent sends credentials inside a tool call), and poisoned responses (a server returns content that injects new instructions into the agent’s context). Scanners don’t see any of that because it happens after deploy.

What each one catches

CapabilityCisco mcp-scannerSnyk agent-scanPipelock
Tool poisoning (description)Yes (YARA + LLM judge)Yes (LLM classifier)Yes (scan on every handshake)
Hidden instructions in parametersPartial (static view)YesYes (scanned in live calls)
Rug-pull drift detectionNot documented in public docsPartial (version compare)Yes (every session re-scans)
Runtime tool call scanningNoNoYes
Runtime response scanningNoNoYes
Credential leak prevention (DLP)NoNoYes (48 patterns, 6-pass decode)
Deploy-time CI scanningYesYesNo (not the use case)
Requires sending data to third partyOptional (VirusTotal, LLM judge)Varies by deployment (Snyk supports local and cloud)No (runs local or sidecar)
LicenseApache 2.0, open sourcePart of Snyk platform (see Snyk product pages)Apache 2.0, open source
All three combinedStatic catch + static catch + runtime catch = best coverage

Two things to notice. First, the scanners and the proxy barely overlap. Cisco and Snyk both look at definitions before they run. Pipelock looks at traffic while it runs. If you run all three, you catch things at two different points in the lifecycle and the attacker has to evade both. Second, “runtime” rows are a flat no for the scanners. That’s not a flaw. It’s just not what they do.

What pre-deploy scanning does well

Pre-deploy scanners are cheap, fast, and sit in your CI where you already have policy gates. They catch the obvious stuff before any user traffic ever hits the server:

The advantage is cheapness. A scan takes seconds, runs on every config change, and blocks merges without touching production. You don’t need to deploy a proxy. You don’t need to wire it into the data path. You just add a step to your pipeline. For teams that are early in their MCP rollout, this is the fastest thing they can do to raise the floor.

The limitation is visibility. Scanners see what’s in the file at the time of the scan. They don’t see:

Those are all runtime problems.

What runtime scanning does well

Runtime proxies see what actually flows. Every MCP message, every HTTP request, every response body. The agent can’t hide from something sitting in the data path. That changes what you can catch:

The limitation is real: you’re now in the data path. Pipelock’s per-request overhead is typically 1-5ms on MCP and HTTP calls, which is fine for most workloads, but it’s not zero. You also have to run and manage the proxy process. If you’re shipping an agent and haven’t deployed anything yet, adding a runtime component is more friction than adding a CI step.

They’re complementary, not competing

I’ve seen the framing “do I pick a scanner or a proxy” enough times that I want to be blunt about it. You’re not picking. These tools solve different problems in different parts of the lifecycle. They stack cleanly.

The pattern I’d actually recommend:

Think about it the way you already think about application security. SAST tools look at code before deploy. WAFs look at traffic in production. Nobody running a serious web app picks one. They run both because they catch different attack classes at different times. MCP security is the same idea.

How to pick (if you really only get one)

Sometimes you do only have bandwidth for one tool. Here’s how I’d make the call:

If you can only run one thing, pick the runtime layer. A proxy catches a wider range of attack classes than a pre-deploy scanner, including the ones you can’t see statically (rug-pulls, response injection, credential leaks, encoded payloads). Scanners catch what’s visible in the definitions. Runtime catches what actually happens. If you have to choose one, choose the one that sees more.

If you already have Snyk in your stack, agent-scan is low-friction to try because you’re already using Snyk’s tools and workflows. Then put a runtime proxy in front of production traffic. The proxy is where the novel attacks will show up.

If you want open source with no third-party data sharing, the combination is Cisco mcp-scanner (pre-deploy, Apache 2.0) plus Pipelock (runtime, Apache 2.0). Nothing leaves your infrastructure. No cloud dependency. No vendor lock.

If you’re a large org already running Snyk, Cisco AI Defense, and a runtime proxy, just run all three. The overlap between Cisco and Snyk at the scanner layer is small enough that you get incremental coverage from both (different detection engines, different rules). And the proxy covers the runtime gap that neither scanner touches.

The wrong answer is to pick one and assume it covers everything. All three of these tools are honest about what they scan. It’s on you to know what they miss.

Further reading

Pipelock is an open-source agent firewall. Free forever.