Semgrep MCP Server
chính thứcCho 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.
Máy chủ Semgrep MCP
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
#mcpSlack cộng đồng!
Nội dung
- Máy chủ Semgrep MCP
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
- Đi tới trang Cài đặt Kết nối (liên kết trực tiếp)
- Đặt tên cho kết nối là
Semgrep - Đặt URL Máy chủ MCP thành
https://mcp.semgrep.ai/sse - Đặt Xác thực thành
No authentication - Chọn hộp kiểm Tôi tin tưởng ứng dụng này
- 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
- Cmd + Shift + J để mở Cài đặt Cursor
- Chọn Công cụ MCP
- 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ậtsemgrep_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ướcsemgrep_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 đồ JSONsemgrep://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:
- Đăng nhập hoặc đăng ký
- Tạo token từ Cài đặt
- 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"]
}
}
}

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ốnHOST:localhost:8000. Hãy thửURLtrong 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
#mcpSlack 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ự 🔍
- semgrep-vscode - Tiện ích mở rộng VS Code chính thức
- semgrep-intellij - Plugin IntelliJ
Dự án cộng đồng 🌟
- semgrep-rules - Bộ sưu tập chính thức các quy tắc Semgrep
- mcp-server-semgrep - Cảm hứng ban đầu được viết bởi Szowesgad và stefanskiasan
Sổ đăng ký máy chủ MCP
Được tạo bằng ❤️ bởi Đội ngũ Semgrep