MCP-Scan
Scanner de sécurité d'Invariant Labs pour les serveurs Model Context Protocol et les descriptions d'outils d'agents : détecte l'empoisonnement d'outils, l'injection de prompt, le shadowing d'outils et les risques cross-origin. Invariant Labs' security scanner for Model Context Protocol servers and agent tool descriptions — detects tool poisoning, prompt injection, tool shadowing, and cross-origin risks.
↗ https://github.com/invariantlabs-ai/mcp-scanOverview
MCP-Scan audits the Model Context Protocol (MCP) integrations wired into AI clients like Claude Desktop, Cursor, and Windsurf. It reads the client’s MCP config, connects to each configured server, and inspects the tool/resource descriptions those servers advertise — the same descriptions an agent reads verbatim as part of its context. Because a malicious or compromised MCP server can hide instructions inside a tool’s description (“tool poisoning”), silently swap a tool’s behavior after approval (“rug pull”), or shadow a trusted tool name, this class of risk is invisible to a human just glancing at a UI. MCP-Scan is the standard first check before trusting a newly-added MCP server.
Installation & Usage
Run directly with uvx, no persistent install needed
uvx mcp-scan@latest
Scan a specific client config instead of auto-discovering
uvx mcp-scan@latest scan --config ~/.config/Claude/claude_desktop_config.json
Scan all MCP configs found on the system
uvx mcp-scan@latest scan
Continuous “proxy” mode — inspects tool calls live as the agent runs
uvx mcp-scan@latest proxy
Reading Results
JSON output for CI pipelines / diffing against a known-good baseline
uvx mcp-scan@latest scan --json > scan-results.json
Whitelist a specific server/tool after manual review
uvx mcp-scan@latest whitelist "filesystem-server" "read_file"
Tips
- Run MCP-Scan again after any MCP server update — a “rug pull” attack relies on a tool description changing after you’ve already approved it, so a diff against a prior scan matters more than a single point-in-time check.
- Cross-origin (“toxic flow”) findings flag when one server’s tool output could feed into another server’s tool input in a way that lets untrusted data cross a trust boundary — take these seriously even if each server individually looks clean.
- Pair with
proxymode during an actual agent session to catch injection attempts in live tool responses, not just static tool descriptions.
Help / Man page
usage: mcp-scan [COMMAND] [OPTIONS]
commands:
scan scan configured MCP servers for known clients
proxy run as a live proxy, inspecting tool calls/results in transit
whitelist mark a server or tool as reviewed/trusted
inspect dump raw tool/resource descriptions without risk analysis
scan options:
--config PATH path to a specific MCP client config file
--server NAME limit scan to a single named server
--json machine-readable output
--checks LIST limit checks (prompt_injection,tool_poisoning,
shadowing,cross_origin,rug_pull)
--storage-file PATH baseline file for detecting changes between scans
global options:
-v, --verbose verbose logging
--version show version
Vue d’ensemble
MCP-Scan audite les intégrations Model Context Protocol (MCP) connectées à des clients IA comme Claude Desktop, Cursor ou Windsurf. Il lit la configuration MCP du client, se connecte à chaque serveur configuré, et inspecte les descriptions d’outils/ressources que ces serveurs annoncent, les mêmes descriptions qu’un agent lit telles quelles dans son contexte. Comme un serveur MCP malveillant ou compromis peut dissimuler des instructions dans la description d’un outil (« empoisonnement d’outil »), changer discrètement le comportement d’un outil après approbation (« rug pull »), ou usurper le nom d’un outil de confiance (shadowing), ce type de risque est invisible pour un humain qui se contente de survoler l’interface. MCP-Scan est le premier contrôle standard avant de faire confiance à un nouveau serveur MCP.
Installation et utilisation
# Lancer directement avec uvx, sans installation persistante
uvx mcp-scan@latest
# Scanner la configuration d'un client spécifique plutôt que la découverte automatique
uvx mcp-scan@latest scan --config ~/.config/Claude/claude_desktop_config.json
# Scanner toutes les configurations MCP trouvées sur le système
uvx mcp-scan@latest scan
# Mode "proxy" continu : inspecte les appels d'outils en direct pendant que l'agent tourne
uvx mcp-scan@latest proxy
Lecture des résultats
# Sortie JSON pour les pipelines CI / comparaison avec une baseline saine connue
uvx mcp-scan@latest scan --json > scan-results.json
# Mettre un serveur/outil en liste blanche après revue manuelle
uvx mcp-scan@latest whitelist "filesystem-server" "read_file"
Conseils
- Relancer MCP-Scan après chaque mise à jour de serveur MCP : une attaque « rug pull » repose sur le changement de la description d’un outil après qu’elle a déjà été approuvée, donc une comparaison avec un scan précédent compte plus qu’un contrôle ponctuel.
- Les résultats cross-origin (« toxic flow ») signalent le cas où la sortie d’outil d’un serveur pourrait alimenter l’entrée d’outil d’un autre serveur d’une manière qui fait franchir une frontière de confiance à des données non fiables. À prendre au sérieux même si chaque serveur pris isolément semble sain.
- Combiner avec le mode
proxypendant une session d’agent réelle pour repérer les tentatives d’injection dans les réponses d’outils en direct, pas seulement dans les descriptions d’outils statiques.
Aide / Page de manuel
usage: mcp-scan [COMMAND] [OPTIONS]
commands:
scan scan configured MCP servers for known clients
proxy run as a live proxy, inspecting tool calls/results in transit
whitelist mark a server or tool as reviewed/trusted
inspect dump raw tool/resource descriptions without risk analysis
scan options:
--config PATH path to a specific MCP client config file
--server NAME limit scan to a single named server
--json machine-readable output
--checks LIST limit checks (prompt_injection,tool_poisoning,
shadowing,cross_origin,rug_pull)
--storage-file PATH baseline file for detecting changes between scans
global options:
-v, --verbose verbose logging
--version show version