Semgrep MCP Server

Semgrep MCP Server

Semgrep MCP 伺服器將 Semgrep 強大的靜態程式碼分析能力整合到模型上下文協議生態系統中,使 LLM、代理及 IDE 能夠通過標準化接口掃描、理解並互動於程式碼中,尋找安全漏洞和程式碼洞察。

Author: semgrep


查看協議

什麼是 Semgrep MCP 伺服器?

Semgrep MCP 伺服器是一個專用的 MCP 伺服器,將 Semgrep 的靜態分析工具作為可調用動作(工具)對 LLM、代理及支持 MCP 標準的應用程式公開。它允許從 IDE (Cursor、VS Code)、聊天機器人(ChatGPT)和代理框架等環境中無縫地自動執行程式碼安全掃描、理解及規則管理。

如何配置 Semgrep MCP 伺服器

  • 安裝 Python 套件:
    使用 pipx 或您偏好的 Python 工具:
    pipx install semgrep-mcp
  • 設置伺服器:
    通過 CLI 運行 uvx semgrep-mcp 或作為 Docker 容器運行:
    docker run -i --rm ghcr.io/semgrep/mcp -t stdio
  • 與您的環境整合:
    • 對於像 Cursor 或 VS Code 的 IDE,編輯 MCP 配置文件(例如 .cursor/mcp.json.vscode/mcp.json),添加:
      {
        "mcpServers": {
          "semgrep": {
            "command": "uvx",
            "args": ["semgrep-mcp"]
          }
        }
      }
      
    • 對於雲端連接,將 MCP 伺服器 URL 設置為 https://mcp.semgrep.ai/mcp,或使用 https://mcp.semgrep.ai/sse 的 SSE 來保持向下相容性。
    • AppSec 平台整合:
      生成 Semgrep AppSec API 令牌,然後將其作為環境變數添加:
      export SEMGREP_APP_TOKEN=<token>
      對於 Docker,添加 -e SEMGREP_APP_TOKEN=<token>

如何使用 Semgrep MCP 伺服器

  1. 啟動伺服器,使用您偏好的傳輸方式(stdio、streamable-http 或 SSE)。
  2. 通過支持 MCP 的 IDE 或 LLM 框架連接,確保正確配置以訪問您的本地或遠程伺服器實例。
  3. 直接從連接的介面調用工具,例如程式碼掃描或 AST 生成(例如,詢問您的 LLM:“使用 Semgrep 掃描此程式碼中的安全漏洞”)。
  4. 接收可操作的結果——LLM、代理及用戶將獲得有關程式碼問題、發現或洞察的詳細輸出,無縫集成到您的開發工作流程中。

主要特點

  • 即時程式碼漏洞掃描,通過 LLM 或工具直接使用 Semgrep。
  • 多種部署選擇: 本地 CLI、Docker 和雲端端點。
  • 廣泛的整合: 插入 IDE (Cursor、VS Code、Claude Desktop)、聊天機器人(ChatGPT)及代理 SDK。
  • 工具發現與執行: 通過 MCP 端點動態列出和調用 Semgrep 工具。
  • 訪問程式碼洞察: 提取抽象語法樹、支持的語言列表和規則架構。
  • 自定義規則使用: 利用自定義的 Semgrep 規則分析程式碼,以應對更高級的用例。
  • 安全認證及 AppSec 平台整合,為托管的企業環境提供保障。

使用案例

  • 自動化程式碼檢查: 將實時 Semgrep 掃描整合到參與拉取請求檢查、程式碼生成或在 IDE 中的建議的 AI 代理。
  • 安全審計自動化: 啟用安全工作流程,使 LLM/代理自動或按需掃描項目文件尋找漏洞。
  • LLM 增強規則編寫: 利用 LLM 幫助起草、驗證和應用自定義 Semgrep 規則到程式碼庫。
  • DevSecOps 流水線增強: 將 MCP 驅動的 Semgrep 掃描添加到 CI/CD 或開發環境,提供即時可操作的反饋。
  • 互動學習和解釋: 使用抽象語法樹和提示工具,教學或解釋程式碼語義於教育工具或聊天機器人中。

常見問題

Q1: Semgrep MCP 伺服器支持哪些程式語言?
伺服器支持上游 Semgrep 所有可用的語言,如 Python、JavaScript、Go、Java 等。使用 supported_languages 工具獲取當前列表。

Q2: 我可以不使用雲端賬戶或令牌來使用 Semgrep MCP 伺服器嗎?
可以,核心程式碼掃描和理解工具在本地工作而無需身份驗證。對於與 Semgrep AppSec 平台相關的高級功能(如雲端發現),則需要 API 令牌。

Q3: 支持哪些通訊協議?
Semgrep MCP 伺服器支持 stdio(CLI/本地)、streamable HTTP(建議用於新集成)和 Server-Sent Events(舊版兼容性)。

Q4: 我該如何將 Semgrep MCP 伺服器連接到 ChatGPT 或 VS Code?
在您的連接器或編輯器設置中設置 MCP 伺服器 URL(例如,ChatGPT 的 https://mcp.semgrep.ai/sse,或更新 VS Code 的 .vscode/mcp.json)。

Q5: LLM 可以自動創建和使用自定義 Semgrep 規則嗎?
可以,使用提供的工具,如 semgrep_scan_with_custom_rule 和提示生成器,LLM/代理可以動態編寫和應用新規則。