Scanneur de sécurité unifié pour les serveurs MCP avec les modes config, pentest et repo-scan. Génère des rapports SARIF pour l'intégration CI/CD, détecte les secrets, les vulnérabilités et les erreurs de configuration via des analyseurs token et LLM.
MCP X-Ray est une solution unifiée open-source de scan de sécurité et de tests d'intrusion pour les serveurs Model Context Protocol (MCP). Elle génère des rapports SARIF prêts pour la production, permettant une intégration transparente avec les outils de sécurité et les pipelines CI/CD. Les résultats de scan peuvent être facultativement téléversés vers Traceforce Atlas pour une gestion et un suivi centralisés de la sécurité. Atlas contient plus de 600 MCP dans son registre, offrant une base de données complète d'évaluation de sécurité pour l'écosystème MCP.

# Clonez le dépôt
git clone https://github.com/traceforce/mcp-xray
cd mcp-xray
# Installez les dépendances requises (buf, etc.)
make install-dependencies
# Construisez tout (génère le code protobuf et compile le binaire)
# Le binaire sera créé sous le nom `mcpxray` dans le répertoire courant
make all
Analysez les configurations MCP pour détecter des problèmes de sécurité ; à exécuter avant un test d'intrusion pour établir une base de référence.
# Scannez un fichier de configuration MCP spécifique (utilise l'analyseur de jetons par défaut)
./mcpxray config-scan /chemin/vers/mcp/config.json
# Scannez automatiquement tous les chemins de configuration MCP connus pour Cursor, Claude et Windsurf.
# Emplacements de configuration connus (relatifs au répertoire personnel) :
# ~/.cursor/mcp.json (Cursor)
# ~/Library/Application Support/Claude/claude_desktop_config.json (Claude Desktop)
# ~/.codeium/windsurf/mcp_config.json (Windsurf)
./mcpxray config-scan --scan-known-configs
# Utilisez l'analyseur LLM pour une analyse plus étendue et approfondie
./mcpxray config-scan /chemin/vers/mcp/config.json --analyzer-type llm --llm-model claude-3-5-sonnet-20241022
# Spécifiez un fichier de sortie personnalisé
./mcpxray config-scan /chemin/vers/mcp/config.json --output custom-report.sarif.json
Capacités de détection :
Exécutez des plans de test de sécurité en effectuant des appels d'outils réels vers les serveurs MCP. Les LLM sont nécessaires pour exécuter le test. Exécutez ceci avant le déploiement réel en production.
# Exécutez un test avec un plan de test généré automatiquement (nécessite un modèle LLM)
./mcpxray pentest /chemin/vers/mcp/config.json --llm-model claude-sonnet-4-5
# Utilisez un fichier YAML de plan de test personnalisé
./mcpxray pentest /chemin/vers/mcp/config.json --test-plan /chemin/vers/test-plan.yaml --llm-model claude-sonnet-4-5
Capacités de détection : Exécution de code, SSRF, traversée de chemin, contournement d'autorisation, injection d'entrée, divulgation d'informations et vulnérabilités DoS
Scannez la base de code pour détecter des vulnérabilités ; utilisez lorsque vous possédez ou pouvez modifier le code.
# Scannez le répertoire courant
./mcpxray repo-scan
# Scannez un dépôt spécifique
./mcpxray repo-scan /chemin/vers/depot
# Spécifiez un fichier de sortie personnalisé
./mcpxray repo-scan --output custom-report.sarif.json
Capacités de détection :
MCP X-Ray génère des rapports au format SARIF (Static Analysis Results Interchange Format), largement pris en charge par les outils de sécurité et les plateformes CI/CD.
Téléversez les résultats de scan vers Traceforce Atlas pour une gestion centralisée de la sécurité, des rapports et un suivi dans le temps. Ajoutez le drapeau --upload à toute commande de scan. Utilisez --clean-up pour supprimer les fichiers générés après un téléversement réussi.
Variables d'environnement requises :
TRACEFORCE_CLIENT_IDTRACEFORCE_CLIENT_SECRETCes identifiants peuvent être téléchargés depuis la page des paramètres de l'interface utilisateur Atlas.
# Téléversez les résultats du scan de configuration
./mcpxray config-scan /chemin/vers/mcp/config.json --upload
# Téléversez avec nettoyage
./mcpxray config-scan /path/xia-add-registry-imageto/mcp/config.json --upload --clean-up
# Téléversez les résultats du test d'intrusion
./mcpxray pentest /chemin/vers/mcp/config.json --llm-model claude-sonnet-4-5 --upload

Des exemples de sorties de scan sont disponibles dans examples/findings/.
Des exemples de fichiers de configuration MCP sont disponibles dans le répertoire examples/mcp_configs/.
Un exemple de serveur MCP est disponible dans le répertoire examples/mcp_server/ :
mcp_server.py : Serveur FastMCP utilisant le transport streamable-httpmcp.json : Fichier de configuration pour se connecter au serveurREADME.md : Instructions pour configurer et scanner le serveurMCP X-Ray propose deux méthodes pour analyser la sécurité des outils :
L'analyseur de jetons utilise une correspondance de motifs basée sur des règles pour détecter rapidement les problèmes de sécurité dans les descriptions d'outils. Il est rapide, ne nécessite pas de clés API et fonctionne hors ligne. L'analyseur de jetons utilise deux types de règles :
internal/configscan/tokenanalyzer/token_rules.yaml. Chaque règle spécifie :
internal/yararules/unsafe_patterns.yar. Ces règles détectent les motifs de commandes système dangereux.Utilisation :
mcpxray config-scan --analyzer-type token
L'analyseur LLM utilise de grands modèles de langage pour une analyse sémantique approfondie des descriptions d'outils, fournissant des informations de sécurité plus complètes.
Utilisation :
mcpxray config-scan --analyzer-type llm --llm-model <nom-du-modèle>
Par défaut, l'outil de test d'intrusion utilise un LLM pour générer automatiquement des plans de test basés sur les outils disponibles des serveurs MCP. Les plans de test peuvent également être personnalisés et fournis sous forme de fichiers YAML. Les plans de test sont des fichiers YAML contenant des cas de test avec des arguments d'entrée et des résultats attendus.
Comportement par défaut (plan de test généré par LLM) :
./mcpxray pentest /chemin/vers/mcp/config.json --llm-model claude-sonnet-4-5
Plan de test personnalisé :
./mcpxray pentest /chemin/vers/mcp/config.json --test-plan /chemin/vers/test-plan.yaml --llm-model claude-sonnet-4-5
MCP X-Ray prend en charge les fournisseurs LLM suivants pour l'analyse des outils :
claude-sonnet-4-5ANTHROPIC_API_KEYgpt-5OPENAI_API_KEYarn:aws:bedrock: et contenant llamaarn:aws:bedrock:<region>:<compte-id>:inference-profile/us.meta.llama3-2-1b-instruct-v1:0Pour l'analyse d'outils basée sur LLM, configurez vos identifiants API LLM :
export ANTHROPIC_API_KEY=votre-clé-api
export OPENAI_API_KEY=votre-clé-api
Chaque fournisseur nécessite sa propre variable d'environnement spécifique. L'outil détecte automatiquement quel fournisseur utiliser en fonction du nom du modèle.
Pour les modèles AWS Bedrock, configurez les identifiants AWS en utilisant l'une des méthodes standard du SDK AWS :
# Option 1 : Variables d'environnement
export AWS_ACCESS_KEY_ID=votre-clé-d-accès
export AWS_SECRET_ACCESS_KEY=votre-clé-secrète
export AWS_REGION=us-east-1
# Option 2 : Fichier d'identifiants AWS (~/.aws/credentials)
# Option 3 : Rôle IAM (lors de l'exécution sur EC2/ECS/Lambda)
MCP X-Ray utilise le SDK AWS qui chargera automatiquement les identifiants depuis l'environnement, le fichier d'identifiants ou le rôle IAM.
Les contributions sont les bienvenues ! Veuillez vous assurer que :