Semgrep MCP Server
offiziellErmöglicht KI-Agenten, Code mit Semgrep zu sichern.
Dokumentation
⚠️ Der Semgrep MCP-Server wurde aus einem eigenständigen Repository in das Haupt-semgrep-Repository verschoben! ⚠️
Dieses Repository ist veraltet, und weitere Aktualisierungen des Semgrep MCP-Servers erfolgen über die offizielle semgrep-Binärdatei.
Semgrep MCP-Server
Ein Model Context Protocol (MCP)-Server zur Nutzung von Semgrep, um Code auf Sicherheitslücken zu scannen. Sichern Sie Ihr Vibe Coding ab! 😅
Model Context Protocol (MCP) ist eine standardisierte API für LLMs, Agents und IDEs wie Cursor, VS Code, Windsurf oder alles, was MCP unterstützt, um spezialisierte Hilfe, Kontext und die Leistungsfähigkeit von Werkzeugen zu nutzen. Semgrep ist ein schnelles, deterministisches statisches Analysewerkzeug, das viele Sprachen semantisch versteht und mit über 5.000 Regeln ausgestattet ist. 🛠️
[!NOTE] Dieses Beta-Projekt befindet sich in aktiver Entwicklung. Wir freuen uns über Ihr Feedback, Fehlerberichte, Funktionswünsche und Code. Treten Sie dem
#mcpCommunity-Slack-Kanal bei!
Inhalt
- Semgrep MCP-Server
Erste Schritte
Führen Sie das Python-Paket als CLI-Befehl mit uv aus:
uvx semgrep-mcp # see --help for more options
Oder führen Sie es als Docker-Container aus:
docker run -i --rm ghcr.io/semgrep/mcp -t stdio
Cursor
Beispiel mcp.json
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"],
"env": {
"SEMGREP_APP_TOKEN": "<token>"
}
}
}
}
Fügen Sie eine Anweisung zu Ihrer .cursor/rules hinzu, um sie automatisch zu verwenden:
Always scan code generated using Semgrep for security vulnerabilities
ChatGPT
- Gehen Sie zur Seite Connector-Einstellungen (Direktlink)
- Benennen Sie die Verbindung
Semgrep - Setzen Sie die MCP-Server-URL auf
https://mcp.semgrep.ai/sse - Setzen Sie die Authentifizierung auf
No authentication - Aktivieren Sie das Kontrollkästchen Ich vertraue dieser Anwendung
- Klicken Sie auf Erstellen
Weitere Details finden Sie in der offiziellen Dokumentation.
Gehosteter Server
[!WARNING] mcp.semgrep.ai ist ein experimenteller Server, der unerwartet ausfallen kann. Er wird schnell neue Funktionen erhalten.🚀
Cursor
- Cmd + Shift + J, um die Cursor-Einstellungen zu öffnen
- Wählen Sie MCP-Werkzeuge
- Klicken Sie auf Neuer MCP-Server.
{
"mcpServers": {
"semgrep": {
"type": "streamable-http",
"url": "https://mcp.semgrep.ai/mcp"
}
}
}
Demo
API
Werkzeuge
Ermöglichen LLMs, Aktionen auszuführen, deterministische Berechnungen durchzuführen und mit externen Diensten zu interagieren.
Code scannen
security_check: Code auf Sicherheitslücken scannensemgrep_scan: Codedateien mit einer gegebenen Konfigurationszeichenfolge auf Sicherheitslücken scannensemgrep_scan_with_custom_rule: Codedateien mit einer benutzerdefinierten Semgrep-Regel scannen
Code verstehen
get_abstract_syntax_tree: Den Abstract Syntax Tree (AST) von Code ausgeben
Cloud-Plattform (Anmeldung und Semgrep-Token erforderlich)
semgrep_findings: Semgrep-Funde von der Semgrep AppSec-Plattform-API abrufen
Meta
supported_languages: Die Liste der von Semgrep unterstützten Sprachen zurückgebensemgrep_rule_schema: Das neueste Semgrep-Regel-JSON-Schema abrufen
Prompts
Wiederverwendbare Prompts zur Standardisierung gängiger LLM-Interaktionen.
write_custom_semgrep_rule: Einen Prompt zurückgeben, der beim Schreiben einer Semgrep-Regel hilft
Ressourcen
Daten und Inhalte für LLMs bereitstellen
semgrep://rule/schema: Spezifikation der Semgrep-Regel-YAML-Syntax unter Verwendung des JSON-Schemassemgrep://rule/{rule_id}/yaml: Vollständige Semgrep-Regel im YAML-Format aus der Semgrep-Registry
Verwendung
Dieses Python-Paket wird auf PyPI als semgrep-mcp veröffentlicht und kann mit pip, pipx, uv, poetry oder einem beliebigen Python-Paketmanager installiert und ausgeführt werden.
$ 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.
Standardeingabe/-ausgabe (stdio)
Der stdio-Transport ermöglicht die Kommunikation über Standardeingabe- und -ausgabeströme. Dies ist besonders nützlich für lokale Integrationen und Befehlszeilenwerkzeuge. Weitere Details finden Sie in der Spezifikation.
Python
semgrep-mcp
Standardmäßig läuft das Python-Paket im stdio-Modus. Da es die Standardeingabe- und -ausgabeströme verwendet, sieht es so aus, als ob das Werkzeug ohne Ausgabe hängt, aber das ist erwartungsgemäß.
Docker
Dieser Server wird in der Github Container Registry (ghcr.io/semgrep/mcp) veröffentlicht.
docker run -i --rm ghcr.io/semgrep/mcp -t stdio
Standardmäßig befindet sich der Docker-Container im SSE-Modus, daher müssen Sie -t stdio nach dem Image-Namen einfügen und mit -i ausführen, um im interaktiven Modus zu laufen.
Streamable HTTP
Streamable HTTP ermöglicht Streaming-Antworten über JSON RPC mittels HTTP-POST-Anfragen. Weitere Details finden Sie in der Spezifikation.
Standardmäßig lauscht der Server auf 127.0.0.1:8000/mcp auf Client-Verbindungen. Um dies zu ändern, setzen Sie FASTMCP_*-Umgebungsvariablen. Der Server muss laufen, damit Clients eine Verbindung herstellen können.
Python
semgrep-mcp -t streamable-http
Standardmäßig läuft das Python-Paket im stdio-Modus, daher müssen Sie -t streamable-http einfügen.
Docker
docker run -p 8000:0000 ghcr.io/semgrep/mcp
Server-Sent Events (SSE)
[!WARNING] Die MCP-Community betrachtet dies als veraltetes Transportprotokoll und ist eigentlich nur für die Abwärtskompatibilität gedacht. Streamable HTTP ist der empfohlene Ersatz.
Der SSE-Transport ermöglicht Server-zu-Client-Streaming mit Server-Sent Events für die Client-zu-Server- und Server-zu-Client-Kommunikation. Weitere Details finden Sie in der Spezifikation.
Standardmäßig lauscht der Server auf 127.0.0.1:8000/sse auf Client-Verbindungen. Um dies zu ändern, setzen Sie FASTMCP_*-Umgebungsvariablen. Der Server muss laufen, damit Clients eine Verbindung herstellen können.
Python
semgrep-mcp -t sse
Standardmäßig läuft das Python-Paket im stdio-Modus, daher müssen Sie -t sse einfügen.
Docker
docker run -p 8000:0000 ghcr.io/semgrep/mcp -t sse
Semgrep AppSec-Plattform
Optional, um eine Verbindung zur Semgrep AppSec-Plattform herzustellen:
- Anmelden oder registrieren
- Erzeugen Sie einen Token unter Einstellungen
- Fügen Sie den Token zu Ihren Umgebungsvariablen hinzu:
-
CLI (
export SEMGREP_APP_TOKEN=<token>) -
Docker (
docker run -e SEMGREP_APP_TOKEN=<token>) -
MCP-Konfigurations-JSON
-
"env": {
"SEMGREP_APP_TOKEN": "<token>"
}
[!TIP] Bitte wenden Sie sich an den Support, falls erforderlich. ☎️
Integrationen
Cursor IDE
Fügen Sie den folgenden JSON-Block zu Ihrer ~/.cursor/mcp.json globalen oder .cursor/mcp.json projektspezifischen Konfigurationsdatei hinzu:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}

Weitere Informationen finden Sie in der Cursor-Dokumentation.
VS Code / Copilot
Klicken Sie auf die Installationsschaltflächen oben in dieser README für die schnellste Installation.
Manuelle Konfiguration
Fügen Sie den folgenden JSON-Block zu Ihrer Benutzereinstellungsdatei (JSON) in VS Code hinzu. Sie können dies tun, indem Sie Ctrl + Shift + P drücken und Preferences: Open User Settings (JSON) eingeben.
{
"mcp": {
"servers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
}
Optional können Sie ihn zu einer Datei namens .vscode/mcp.json in Ihrem Arbeitsbereich hinzufügen:
{
"servers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
Docker verwenden
{
"mcp": {
"servers": {
"semgrep": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/semgrep/mcp",
"-t",
"stdio"
]
}
}
}
}
Weitere Informationen finden Sie in der VS Code-Dokumentation.
Windsurf
Fügen Sie den folgenden JSON-Block zu Ihrer ~/.codeium/windsurf/mcp_config.json-Datei hinzu:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
Weitere Informationen finden Sie in der Windsurf-Dokumentation.
Claude Desktop
Hier ist ein kurzes Video, das zeigt, wie Claude Desktop diesen Server verwendet, um eine benutzerdefinierte Regel zu schreiben.
Fügen Sie den folgenden JSON-Block zu Ihrer claude_desktop_config.json-Datei hinzu:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
Weitere Informationen finden Sie in der Anthropic-Dokumentation.
Claude Code
claude mcp add semgrep uvx semgrep-mcp
Weitere Informationen finden Sie in der Claude Code-Dokumentation.
OpenAI
Siehe die offizielle Dokumentation:
Agents SDK
async with MCPServerStdio(
params={
"command": "uvx",
"args": ["semgrep-mcp"],
}
) as server:
tools = await server.list_tools()
Weitere Informationen finden Sie in der OpenAI Agents SDK-Dokumentation.
Benutzerdefinierte Clients
Beispiel eines Python-SSE-Clients
Ein vollständiges Beispiel finden Sie in 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] Einige Client-Bibliotheken benötigen die
URL: http://localhost:8000/sse und andere benötigen nur dieHOST:localhost:8000. Probieren Sie dieURLin einem Webbrowser aus, um zu bestätigen, dass der Server läuft und keine Netzwerkprobleme vorliegen.
Weitere Informationen finden Sie in der offiziellen SDK-Dokumentation.
Mitwirken, Community und Ausführung aus dem Quellcode
[!NOTE] Wir freuen uns über Ihr Feedback, Fehlerberichte, Funktionswünsche und Code. Treten Sie dem
#mcpCommunity-Slack-Kanal bei!
Weitere Informationen und Details zur Ausführung des MCP-Servers aus dem Quellcode finden Sie in CONTRIBUTING.md.
Ähnliche Werkzeuge 🔍
- semgrep-vscode - Offizielle VS Code-Erweiterung
- semgrep-intellij - IntelliJ-Plugin
Community-Projekte 🌟
- semgrep-rules - Die offizielle Sammlung von Semgrep-Regeln
- mcp-server-semgrep - Ursprüngliche Inspiration, geschrieben von Szowesgad und stefanskiasan
MCP-Server-Registries
Gemacht mit ❤️ vom Semgrep-Team