Semgrep MCP Server
officielPermettre aux agents IA de sécuriser le code avec Semgrep.
Documentation
⚠️ Le serveur MCP Semgrep a été déplacé d’un dépôt autonome vers le dépôt principal semgrep ! ⚠️
Ce dépôt est obsolète, et les futures mises à jour du serveur MCP Semgrep seront effectuées via le binaire officiel semgrep.
Serveur MCP Semgrep
Un serveur Model Context Protocol (MCP) pour utiliser Semgrep afin d’analyser le code à la recherche de vulnérabilités de sécurité. Sécurisez votre vibe coding ! 😅
Model Context Protocol (MCP) est une API standardisée pour les LLM, les agents et les IDE comme Cursor, VS Code, Windsurf, ou tout ce qui prend en charge MCP, afin d’obtenir une aide spécialisée, du contexte et d’exploiter la puissance des outils. Semgrep est un outil d’analyse statique rapide et déterministe qui comprend sémantiquement de nombreux langages et propose plus de 5 000 règles. 🛠️
[!NOTE] Ce projet bêta est en développement actif. Nous serions ravis d’avoir vos retours, rapports de bugs, demandes de fonctionnalités et contributions. Rejoignez le canal Slack communautaire
#mcp!
Contenu
- Serveur MCP Semgrep
Démarrage
Exécutez le paquet Python en tant que commande CLI avec uv :
uvx semgrep-mcp # see --help for more options
Ou exécutez-le en tant que conteneur Docker :
docker run -i --rm ghcr.io/semgrep/mcp -t stdio
Cursor
Exemple mcp.json
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"],
"env": {
"SEMGREP_APP_TOKEN": "<token>"
}
}
}
}
Ajoutez une instruction à votre .cursor/rules pour l’utiliser automatiquement :
Always scan code generated using Semgrep for security vulnerabilities
ChatGPT
- Allez sur la page Paramètres du connecteur (lien direct)
- Nommez la connexion
Semgrep - Définissez l’URL du serveur MCP sur
https://mcp.semgrep.ai/sse - Définissez l’Authentification sur
No authentication - Cochez la case Je fais confiance à cette application
- Cliquez sur Créer
Voir plus de détails dans la documentation officielle.
Serveur hébergé
[!WARNING] mcp.semgrep.ai est un serveur expérimental qui peut cesser de fonctionner de manière inattendue. Il gagnera rapidement de nouvelles fonctionnalités.🚀
Cursor
- Cmd + Shift + J pour ouvrir les paramètres de Cursor
- Sélectionnez Outils MCP
- Cliquez sur Nouveau serveur MCP.
{
"mcpServers": {
"semgrep": {
"type": "streamable-http",
"url": "https://mcp.semgrep.ai/mcp"
}
}
}
Démo
API
Outils
Permet aux LLM d’effectuer des actions, de faire des calculs déterministes et d’interagir avec des services externes.
Analyser le code
security_check: Analyser le code à la recherche de vulnérabilités de sécuritésemgrep_scan: Analyser des fichiers de code à la recherche de vulnérabilités de sécurité avec une chaîne de configuration donnéesemgrep_scan_with_custom_rule: Analyser des fichiers de code en utilisant une règle Semgrep personnalisée
Comprendre le code
get_abstract_syntax_tree: Afficher l’arbre syntaxique abstrait (AST) du code
Plateforme Cloud (connexion et jeton Semgrep requis)
semgrep_findings: Récupérer les résultats Semgrep depuis l’API de la plateforme Semgrep AppSec
Méta
supported_languages: Renvoyer la liste des langages pris en charge par Semgrepsemgrep_rule_schema: Récupérer le dernier schéma JSON des règles Semgrep
Invites
Invites réutilisables pour standardiser les interactions courantes avec les LLM.
write_custom_semgrep_rule: Renvoyer une invite pour aider à écrire une règle Semgrep
Ressources
Exposer des données et du contenu aux LLM
semgrep://rule/schema: Spécification de la syntaxe YAML des règles Semgrep en utilisant le schéma JSONsemgrep://rule/{rule_id}/yaml: Règle Semgrep complète au format YAML provenant du registre Semgrep
Utilisation
Ce paquet Python est publié sur PyPI sous le nom semgrep-mcp et peut être installé et exécuté avec pip, pipx, uv, poetry, ou tout autre gestionnaire de paquets Python.
$ pipx install semgrep-mcp
$ semgrep-mcp --help
Usage: semgrep-mcp [OPTIONS]
Entry point for the MCP server
Supports both stdio and sse transports. For stdio, it will read from stdin
and write to stdout. For sse, it will start an HTTP server on port 8000.
Options:
-v, --version Show version and exit.
-t, --transport [stdio|sse] Transport protocol to use (stdio or sse)
-h, --help Show this message and exit.
Entrée/Sortie standard (stdio)
Le transport stdio permet la communication via les flux d’entrée et de sortie standard. C’est particulièrement utile pour les intégrations locales et les outils en ligne de commande. Voir la spécification pour plus de détails.
Python
semgrep-mcp
Par défaut, le paquet Python s’exécute en mode stdio. Comme il utilise les flux d’entrée et de sortie standard, il semblera que l’outil est bloqué sans aucune sortie, mais c’est normal.
Docker
Ce serveur est publié sur le registre de conteneurs de Github (ghcr.io/semgrep/mcp)
docker run -i --rm ghcr.io/semgrep/mcp -t stdio
Par défaut, le conteneur Docker est en mode SSE, vous devrez donc inclure -t stdio après le nom de l’image et l’exécuter avec -i pour fonctionner en mode interactif.
HTTP streamable
Le HTTP streamable permet des réponses en streaming via JSON RPC par des requêtes HTTP POST. Voir la spécification pour plus de détails.
Par défaut, le serveur écoute sur 127.0.0.1:8000/mcp les connexions des clients. Pour modifier cela, définissez les variables d’environnement FASTMCP_*. Le serveur doit être en cours d’exécution pour que les clients puissent s’y connecter.
Python
semgrep-mcp -t streamable-http
Par défaut, le paquet Python s’exécute en mode stdio, vous devrez donc inclure -t streamable-http.
Docker
docker run -p 8000:0000 ghcr.io/semgrep/mcp
Événements envoyés par le serveur (SSE)
[!WARNING] La communauté MCP considère cela comme un protocole de transport hérité, principalement destiné à la rétrocompatibilité. HTTP streamable est le remplacement recommandé.
Le transport SSE permet le streaming du serveur vers le client avec des événements envoyés par le serveur pour la communication client-serveur et serveur-client. Voir la spécification pour plus de détails.
Par défaut, le serveur écoute sur 127.0.0.1:8000/sse les connexions des clients. Pour modifier cela, définissez les variables d’environnement FASTMCP_*. Le serveur doit être en cours d’exécution pour que les clients puissent s’y connecter.
Python
semgrep-mcp -t sse
Par défaut, le paquet Python s’exécute en mode stdio, vous devrez donc inclure -t sse.
Docker
docker run -p 8000:0000 ghcr.io/semgrep/mcp -t sse
Plateforme Semgrep AppSec
Optionnellement, pour vous connecter à la plateforme Semgrep AppSec :
- Connectez-vous ou inscrivez-vous
- Générez un jeton depuis Paramètres
- Ajoutez le jeton à vos variables d’environnement :
-
CLI (
export SEMGREP_APP_TOKEN=<token>) -
Docker (
docker run -e SEMGREP_APP_TOKEN=<token>) -
JSON de configuration MCP
-
"env": {
"SEMGREP_APP_TOKEN": "<token>"
}
[!TIP] N’hésitez pas à demander de l’aide si nécessaire. ☎️
Intégrations
Cursor IDE
Ajoutez le bloc JSON suivant à votre fichier de configuration global ~/.cursor/mcp.json ou spécifique au projet .cursor/mcp.json :
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}

Voir la documentation Cursor pour plus d’informations.
VS Code / Copilot
Cliquez sur les boutons d’installation en haut de ce README pour l’installation la plus rapide.
Configuration manuelle
Ajoutez le bloc JSON suivant à votre fichier de paramètres utilisateur (JSON) dans VS Code. Vous pouvez le faire en appuyant sur Ctrl + Shift + P et en tapant Preferences: Open User Settings (JSON).
{
"mcp": {
"servers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
}
Optionnellement, vous pouvez l’ajouter à un fichier nommé .vscode/mcp.json dans votre espace de travail :
{
"servers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
Utilisation de Docker
{
"mcp": {
"servers": {
"semgrep": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/semgrep/mcp",
"-t",
"stdio"
]
}
}
}
}
Voir la documentation VS Code pour plus d’informations.
Windsurf
Ajoutez le bloc JSON suivant à votre fichier ~/.codeium/windsurf/mcp_config.json :
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
Voir la documentation Windsurf pour plus d’informations.
Claude Desktop
Voici une courte vidéo montrant Claude Desktop utilisant ce serveur pour écrire une règle personnalisée.
Ajoutez le bloc JSON suivant à votre fichier claude_desktop_config.json :
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
Voir la documentation Anthropic pour plus d’informations.
Claude Code
claude mcp add semgrep uvx semgrep-mcp
Voir la documentation Claude Code pour plus d’informations.
OpenAI
Voir la documentation officielle :
Agents SDK
async with MCPServerStdio(
params={
"command": "uvx",
"args": ["semgrep-mcp"],
}
) as server:
tools = await server.list_tools()
Voir la documentation OpenAI Agents SDK pour plus d’informations.
Clients personnalisés
Exemple de client SSE Python
Voir un exemple complet dans examples/sse_client.py
from mcp.client.session import ClientSession
from mcp.client.sse import sse_client
async def main():
async with sse_client("http://localhost:8000/sse") as (read_stream, write_stream):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
results = await session.call_tool(
"semgrep_scan",
{
"code_files": [
{
"path": "hello_world.py",
"content": "def hello(): print('Hello, World!')",
}
]
},
)
print(results)
[!TIP] Certaines bibliothèques clientes veulent le
URL: http://localhost:8000/sse et d’autres veulent seulement leHOST:localhost:8000. Essayez leURLdans un navigateur web pour confirmer que le serveur fonctionne et qu’il n’y a pas de problèmes réseau.
Voir la documentation officielle du SDK pour plus d’informations.
Contribuer, communauté et exécution depuis les sources
[!NOTE] Nous aimons vos retours, rapports de bugs, demandes de fonctionnalités et contributions. Rejoignez le canal Slack communautaire
#mcp!
Voir CONTRIBUTING.md pour plus d’informations et de détails sur la façon d’exécuter le serveur MCP à partir du code source.
Outils similaires 🔍
- semgrep-vscode - Extension officielle VS Code
- semgrep-intellij - Plugin IntelliJ
Projets communautaires 🌟
- semgrep-rules - La collection officielle de règles Semgrep
- mcp-server-semgrep - Inspiration originale écrite par Szowesgad et stefanskiasan
Registres de serveurs MCP
Fait avec ❤️ par l’équipe Semgrep