How it works
Defenses
Attack Patterns MCP Attack Atlas What we catch Hardening manual OWASP LLM Top 10 MITRE ATLAS
Learn
Encyclopedia (new) Agent Security 101 Blog Reports CVP runs Thesis
Resources
Docs GitHub Action (live) vs Lakera vs Promptfoo Team
Theme
Compare · Different Jobs

Sunglasses vs Snyk Agent Scan

Formerly mcp-scan · Input firewall vs machine scanner · Facts checked 2026-10-29
sunglasses://compare/sunglasses-vs-mcp-scan
Snyk Agent Scan

Formerly mcp-scan. Finds the agents, MCP servers and skills installed on a machine and reports risk indicators. It uses a Snyk-hosted analysis API and a Snyk token.

Sunglasses

Scans the text and files an agent is about to read, locally with no account. Its hook can deny an outbound tool call; its MCP proxy (Beta) can refuse a server’s tools until approved.

The short answer

Different jobs, both open source, and they overlap on MCP tool descriptions. You can run both. A finding from either one is a lead, not a verdict.

Side by side

What each does today. The grey line under each row says where the facts come from: a command you can run for Sunglasses, a README section for Agent Scan, whose column is quoted or paraphrased from that README.

Sunglasses
Snyk Agent Scan
What it scans
The text and files an agent is about to read: messages, files, web content, tool output, agent input, code, whole directories and repositories.Our side: sunglasses scan --help lists the --channel values and --file, --dir, --repo. Their side: README, “Discover and scan agent components on your machine”.
Agent components found on your machine: installed agents’ MCP servers (their tool descriptions) and skills.
What it returns
A decision per input — block, quarantine, allow_redacted or allow — with the pattern ID and the matched text.Their side: README, “Agent Scan v0.6 and later output” and “v0.5.x output”.
A report of risk indicators for each MCP server and skill: scored indicators from v0.6, issue codes in v0.5.x.
Where the analysis runs
On your machine. No account, no API key. No HTTP client or socket library is imported; the only urllib import is urllib.parse, for URL parsing. scan --repo clones with git (cli.py: git clone --depth 1).Their side: README, “Quick Start” and “Analysis and Validation”.
Local checks plus the Agent Scan API: “It sends the component information needed for analysis”, with secrets redacted first. A Snyk API token is set as SNYK_TOKEN.
Contacts your MCP servers
sunglasses pin starts your configured MCP servers to read their tool lists, and only with your consent (--yes for unattended runs).Our side: sunglasses pin --help. Their side: README, “Interactive Consent for MCP Servers”.
Starts stdio MCP servers and connects to remote URLs to read tool descriptions. Asks per server in an interactive run; --dangerously-run-mcp-servers skips the question.
Can it stop a tool call
Yes, in the Claude Code firewall hook (since 0.4.0): it denies an outbound tool call carrying credential material, and a tool whose descriptor changed since you pinned it. The MCP proxy (Beta, since 0.6.0) returns APPROVAL_REQUIRED until you approve a server’s tool list.Our side: CHANGELOG: hook 0.4.0, proxy 0.6.0 (Beta). Their side: README, “Scanner Capabilities”.
Its README describes scan mode, which ends in “a comprehensive report for the user to review”, and a background mode that reports to Snyk Evo. It does not describe a hook that denies a tool call.
Fleet view
No hosted service or fleet dashboard in the public package.Their side: README, “Scanner Capabilities”.
Background mode (MDM) scans on a schedule and reports to a Snyk Evo instance; the README says to contact Snyk to set it up.
License and contributions
MIT. Community stays free; the paid option is a separate fixed-price review, see pricing.Their side: GitHub repository page and README, last section.
Apache-2.0. “Agent Scan does not accept external contributions at this time”; issues are welcome.
Output stability
See the changelog for each release.Their side: README, the note at the top.
“CLI output is experimental and subject to change.” The README does not recommend building production workflows on specific output fields.

What each one is not

sunglasses://compare/sunglasses-vs-mcp-scan/is-not
Sunglasses is not

A machine-wide discovery tool. Its commands are scan, check, pin, init, install, doctor and a few others (sunglasses --help); none inventories every agent, skill and MCP server on a machine or scores them one by one. It has no hosted analysis service.

Agent Scan is not

Described, in its own README, as a scanner of arbitrary text, files or tool results at runtime, or as a hook that denies a tool call. It describes scanning the components installed on a machine.

Neither is

A final answer. A clean result from either one is a confidence floor, not proof that a server, skill or file is safe.

Use them together

sunglasses://compare/sunglasses-vs-mcp-scan/together
Inventory, then guard

Run Agent Scan to see what is installed and which MCP servers and skills it flags. Run Sunglasses at the boundary, on what the agent reads and sends, so the same agent is covered while it works.

Sandbox the scan

Both tools start MCP servers to read their tool lists. Run either one inside a throwaway environment when the config is not yours.

When to pick which

sunglasses://compare/sunglasses-vs-mcp-scan/pick
Pick Sunglasses when

you want a local decision on what the agent is about to read — a file, a web page, a tool result — with no account and no key, or a hook that denies a risky tool call.

Pick Agent Scan when

you want an inventory of what is installed across your agents, with risk indicators per MCP server and skill, and a Snyk account is fine.

Pick both when

you want to know what is installed and also have the agent covered while it runs.

Sources and how to check

sunglasses://compare/sunglasses-vs-mcp-scan/sources
Agent Scan

README of snyk/agent-scan, main at commit a69e1c354a (2026-10-28), fetched 2026-10-29. Repository license Apache-2.0 per GitHub.

Agent Scan packages

PyPI snyk-agent-scan 0.6.9; mcp-scan 0.4.3 reads “This package has been renamed to snyk-agent-scan.” Acquisition: Snyk, June 24, 2025.

Sunglasses

Installed version 0.6.14. Run pip install sunglasses==0.6.14, then sunglasses --help, sunglasses scan --help and sunglasses pin --help. The hook (0.4.0) and the MCP proxy (Beta, 0.6.0): CHANGELOG.

If something is out of date

Agent Scan changes quickly. Tell us at [email protected] and we will correct this page.

FAQ

Is Sunglasses an alternative to mcp-scan (Snyk Agent Scan)?+
Not exactly. Agent Scan inventories the agents, MCP servers and skills installed on a machine and reports risk indicators. Sunglasses scans the text and files an agent is about to read, and its Claude Code hook can deny an outbound tool call. Its MCP proxy (Beta since 0.6.0) can refuse a server until you approve its tools. Both look at MCP tool descriptions, so they overlap there, and you can run both.
Is mcp-scan the same thing as Snyk Agent Scan?+
Yes, it was renamed. On 2026-10-29 GitHub resolved invariantlabs-ai/mcp-scan to snyk/agent-scan, and the mcp-scan package on PyPI says it has been renamed to snyk-agent-scan and forwards the mcp-scan command to it. Snyk announced the acquisition of Invariant Labs, its original maker, on June 24, 2025.
Does Agent Scan need an account?+
Its README's Quick Start says to sign up at Snyk, get an API token and set it as SNYK_TOKEN before running a scan. It also says the scan validates components with local checks and the Agent Scan API, and sends the component information needed for analysis, with secrets in configuration values and text redacted before transmission.
Does Sunglasses send what it scans anywhere?+
Scanning text and files runs on your machine, with no account and no API key. In the 0.6.14 package no HTTP client or socket library is imported, and the only urllib import is urllib.parse, for URL parsing. The one thing to know about is sunglasses scan --repo, which clones the repository with git before scanning it.