Semgrep MCP Server

chính thức

Cho phép các tác nhân AI bảo mật mã nguồn với Semgrep.

Tài liệu

⚠️ Máy chủ Semgrep MCP đã được chuyển từ repo độc lập sang kho lưu trữ chính semgrep! ⚠️

Kho lưu trữ này đã bị khai tử, và các bản cập nhật tiếp theo cho máy chủ Semgrep MCP sẽ được thực hiện thông qua tệp nhị phân chính thức semgrep.

Semgrep logo

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

Máy chủ Semgrep MCP

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

Một máy chủ Model Context Protocol (MCP) để sử dụng Semgrep quét mã nguồn tìm lỗ hổng bảo mật. Bảo vệ vibe coding của bạn! 😅

Model Context Protocol (MCP) là một API chuẩn hóa cho các LLM, Agent và IDE như Cursor, VS Code, Windsurf, hoặc bất kỳ thứ gì hỗ trợ MCP, để nhận trợ giúp chuyên biệt, lấy ngữ cảnh và khai thác sức mạnh của các công cụ. Semgrep là một công cụ phân tích tĩnh nhanh, có tính xác định, hiểu ngữ nghĩa nhiều ngôn ngữ và đi kèm hơn 5.000 quy tắc. 🛠️

[!LƯU Ý] Dự án beta này đang được phát triển tích cực. Chúng tôi rất mong nhận được phản hồi, báo lỗi, yêu cầu tính năng và mã nguồn của bạn. Hãy tham gia kênh #mcp Slack cộng đồng!

Nội dung

Bắt đầu

Chạy gói Python dưới dạng lệnh CLI sử dụng uv:

uvx semgrep-mcp # see --help for more options

Hoặc, chạy dưới dạng container Docker:

docker run -i --rm ghcr.io/semgrep/mcp -t stdio

Cursor

Ví dụ mcp.json

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"],
      "env": {
        "SEMGREP_APP_TOKEN": "<token>"
      }
    }
  }
}

Thêm một chỉ dẫn vào .cursor/rules của bạn để sử dụng tự động:

Always scan code generated using Semgrep for security vulnerabilities

ChatGPT

  1. Đi tới trang Cài đặt Kết nối (liên kết trực tiếp)
  2. Đặt tên cho kết nối là Semgrep
  3. Đặt URL Máy chủ MCP thành https://mcp.semgrep.ai/sse
  4. Đặt Xác thực thành No authentication
  5. Chọn hộp kiểm Tôi tin tưởng ứng dụng này
  6. Nhấp Tạo

Xem thêm chi tiết tại tài liệu chính thức.

Máy chủ được lưu trữ

[!CẢNH BÁO] mcp.semgrep.ai là một máy chủ thử nghiệm có thể gặp sự cố bất ngờ. Nó sẽ nhanh chóng có thêm chức năng mới.🚀

Cursor

  1. Cmd + Shift + J để mở Cài đặt Cursor
  2. Chọn Công cụ MCP
  3. Nhấp Máy chủ MCP mới.
{
  "mcpServers": {
    "semgrep": {
      "type": "streamable-http",
      "url": "https://mcp.semgrep.ai/mcp"
    }
  }
}

Demo

API

Công cụ

Cho phép LLM thực hiện hành động, tính toán xác định và tương tác với các dịch vụ bên ngoài.

Quét mã

  • security_check: Quét mã tìm lỗ hổng bảo mật
  • semgrep_scan: Quét tệp mã tìm lỗ hổng bảo mật với một chuỗi cấu hình cho trước
  • semgrep_scan_with_custom_rule: Quét tệp mã sử dụng quy tắc Semgrep tùy chỉnh

Hiểu mã

  • get_abstract_syntax_tree: Xuất ra Cây Cú pháp Trừu tượng (AST) của mã

Nền tảng đám mây (yêu cầu đăng nhập và token Semgrep)

  • semgrep_findings: Lấy các phát hiện Semgrep từ API Nền tảng Semgrep AppSec

Meta

  • supported_languages: Trả về danh sách các ngôn ngữ Semgrep hỗ trợ
  • semgrep_rule_schema: Lấy lược đồ JSON quy tắc semgrep mới nhất

Prompt

Prompt có thể tái sử dụng để chuẩn hóa các tương tác LLM phổ biến.

  • write_custom_semgrep_rule: Trả về một prompt để giúp viết quy tắc Semgrep

Tài nguyên

Hiển thị dữ liệu và nội dung cho LLM

  • semgrep://rule/schema: Đặc tả cú pháp YAML quy tắc Semgrep sử dụng lược đồ JSON
  • semgrep://rule/{rule_id}/yaml: Quy tắc Semgrep đầy đủ định dạng YAML từ sổ đăng ký Semgrep

Cách sử dụng

Gói Python này được xuất bản lên PyPI với tên semgrep-mcp và có thể được cài đặt và chạy bằng pip, pipx, uv, poetry, hoặc bất kỳ trình quản lý gói Python nào.

$ 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.

Đầu vào/Đầu ra chuẩn (stdio)

Phương thức truyền tải stdio cho phép giao tiếp qua các luồng đầu vào và đầu ra chuẩn. Điều này đặc biệt hữu ích cho các tích hợp cục bộ và công cụ dòng lệnh. Xem đặc tả để biết thêm chi tiết.

Python

semgrep-mcp

Theo mặc định, gói Python sẽ chạy ở chế độ stdio. Vì nó sử dụng các luồng đầu vào và đầu ra chuẩn, có vẻ như công cụ bị treo mà không có đầu ra, nhưng điều này là bình thường.

Docker

Máy chủ này được xuất bản lên Github Container Registry (ghcr.io/semgrep/mcp)

docker run -i --rm ghcr.io/semgrep/mcp -t stdio

Theo mặc định, container Docker ở chế độ SSE, vì vậy bạn sẽ phải bao gồm -t stdio sau tên image và chạy với -i để chạy ở chế độ tương tác.

HTTP có thể truyền phát

HTTP có thể truyền phát cho phép phản hồi truyền phát qua JSON RPC thông qua các yêu cầu HTTP POST. Xem đặc tả để biết thêm chi tiết.

Theo mặc định, máy chủ lắng nghe trên 127.0.0.1:8000/mcp cho các kết nối client. Để thay đổi bất kỳ điều gì trong số này, hãy đặt biến môi trường FASTMCP_*. Máy chủ phải đang chạy để client kết nối tới nó.

Python

semgrep-mcp -t streamable-http

Theo mặc định, gói Python sẽ chạy ở chế độ stdio, vì vậy bạn sẽ phải bao gồm -t streamable-http.

Docker

docker run -p 8000:0000 ghcr.io/semgrep/mcp

Sự kiện do máy chủ gửi (SSE)

[!CẢNH BÁO] Cộng đồng MCP coi đây là một giao thức truyền tải cũ và thực sự chỉ dành cho khả năng tương thích ngược. HTTP có thể truyền phát là giải pháp thay thế được khuyến nghị.

Phương thức truyền tải SSE cho phép truyền phát từ máy chủ đến client với Sự kiện do Máy chủ Gửi cho giao tiếp client-đến-máy chủ và máy chủ-đến-client. Xem đặc tả để biết thêm chi tiết.

Theo mặc định, máy chủ lắng nghe trên 127.0.0.1:8000/sse cho các kết nối client. Để thay đổi bất kỳ điều gì trong số này, hãy đặt biến môi trường FASTMCP_*. Máy chủ phải đang chạy để client kết nối tới nó.

Python

semgrep-mcp -t sse

Theo mặc định, gói Python sẽ chạy ở chế độ stdio, vì vậy bạn sẽ phải bao gồm -t sse.

Docker

docker run -p 8000:0000 ghcr.io/semgrep/mcp -t sse

Nền tảng Semgrep AppSec

Tùy chọn, để kết nối với Nền tảng Semgrep AppSec:

  1. Đăng nhập hoặc đăng ký
  2. Tạo token từ Cài đặt
  3. Thêm token vào biến môi trường của bạn:
    • CLI (export SEMGREP_APP_TOKEN=<token>)

    • Docker (docker run -e SEMGREP_APP_TOKEN=<token>)

    • JSON cấu hình MCP

    "env": {
      "SEMGREP_APP_TOKEN": "<token>"
    }

[!MẸO] Vui lòng liên hệ để được hỗ trợ nếu cần. ☎️

Tích hợp

Cursor IDE

Thêm khối JSON sau vào tệp cấu hình ~/.cursor/mcp.json toàn cục hoặc .cursor/mcp.json dành riêng cho dự án của bạn:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

cursor MCP settings

Xem tài liệu cursor để biết thêm thông tin.

VS Code / Copilot

Nhấp vào các nút cài đặt ở đầu README này để cài đặt nhanh nhất.

Cấu hình thủ công

Thêm khối JSON sau vào tệp Cài đặt Người dùng (JSON) của bạn trong VS Code. Bạn có thể làm điều này bằng cách nhấn Ctrl + Shift + P và gõ Preferences: Open User Settings (JSON).

{
  "mcp": {
    "servers": {
      "semgrep": {
        "command": "uvx",
        "args": ["semgrep-mcp"]
      }
    }
  }
}

Tùy chọn, bạn có thể thêm nó vào một tệp có tên .vscode/mcp.json trong không gian làm việc của bạn:

{
  "servers": {
    "semgrep": {
      "command": "uvx",
        "args": ["semgrep-mcp"]
    }
  }
}

Sử dụng Docker

{
  "mcp": {
    "servers": {
      "semgrep": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "ghcr.io/semgrep/mcp",
          "-t",
          "stdio"
        ]
      }
    }
  }
}

Xem tài liệu VS Code để biết thêm thông tin.

Windsurf

Thêm khối JSON sau vào tệp ~/.codeium/windsurf/mcp_config.json của bạn:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

Xem tài liệu Windsurf để biết thêm thông tin.

Claude Desktop

Đây là một video ngắn cho thấy Claude Desktop sử dụng máy chủ này để viết một quy tắc tùy chỉnh.

Thêm khối JSON sau vào tệp claude_desktop_config.json của bạn:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

Xem tài liệu Anthropic để biết thêm thông tin.

Claude Code

claude mcp add semgrep uvx semgrep-mcp

Xem tài liệu Claude Code để biết thêm thông tin.

OpenAI

Xem tài liệu chính thức:

Agents SDK

async with MCPServerStdio(
    params={
        "command": "uvx",
        "args": ["semgrep-mcp"],
    }
) as server:
    tools = await server.list_tools()

Xem tài liệu OpenAI Agents SDK để biết thêm thông tin.

Client tùy chỉnh

Ví dụ client Python SSE

Xem ví dụ đầy đủ trong 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)

[!MẸO] Một số thư viện client muốn URL: http://localhost:8000/sse và những thư viện khác chỉ muốn HOST: localhost:8000. Hãy thử URL trong trình duyệt web để xác nhận máy chủ đang chạy và không có vấn đề mạng.

Xem tài liệu SDK chính thức để biết thêm thông tin.

Đóng góp, cộng đồng và chạy từ mã nguồn

[!LƯU Ý] Chúng tôi rất thích phản hồi, báo lỗi, yêu cầu tính năng và mã nguồn của bạn. Hãy tham gia kênh #mcp Slack cộng đồng!

Xem CONTRIBUTING.md để biết thêm thông tin và chi tiết về cách chạy máy chủ MCP từ mã nguồn.

Công cụ tương tự 🔍

Dự án cộng đồng 🌟

Sổ đăng ký máy chủ MCP

Semgrep Server MCP server

Được tạo bằng ❤️ bởi Đội ngũ Semgrep