Semgrep MCP Server

offiziell

Ermö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 logo

Documentation Join Semgrep community Slack Follow on LinkedIn Follow @semgrep on X

Semgrep MCP-Server

Add MCP Server semgrep to LM Studio Install in Cursor Install in VS Code UV Install in VS Code Docker Install in VS Code semgrep.ai PyPI Docker Install in VS Code Insiders Install in VS Code Insiders

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 #mcp Community-Slack-Kanal bei!

Inhalt

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

  1. Gehen Sie zur Seite Connector-Einstellungen (Direktlink)
  2. Benennen Sie die Verbindung Semgrep
  3. Setzen Sie die MCP-Server-URL auf https://mcp.semgrep.ai/sse
  4. Setzen Sie die Authentifizierung auf No authentication
  5. Aktivieren Sie das Kontrollkästchen Ich vertraue dieser Anwendung
  6. 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

  1. Cmd + Shift + J, um die Cursor-Einstellungen zu öffnen
  2. Wählen Sie MCP-Werkzeuge
  3. 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 scannen
  • semgrep_scan: Codedateien mit einer gegebenen Konfigurationszeichenfolge auf Sicherheitslücken scannen
  • semgrep_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ückgeben
  • semgrep_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-Schemas
  • semgrep://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:

  1. Anmelden oder registrieren
  2. Erzeugen Sie einen Token unter Einstellungen
  3. 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"]
    }
  }
}

cursor MCP settings

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 die HOST: localhost:8000. Probieren Sie die URL in 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 #mcp Community-Slack-Kanal bei!

Weitere Informationen und Details zur Ausführung des MCP-Servers aus dem Quellcode finden Sie in CONTRIBUTING.md.

Ähnliche Werkzeuge 🔍

Community-Projekte 🌟

MCP-Server-Registries

Semgrep Server MCP server

Gemacht mit ❤️ vom Semgrep-Team