Semgrep MCP Server
ทางการเปิดให้ AI agents สามารถรักษาความปลอดภัยของโค้ดด้วย Semgrep
เอกสาร
⚠️ เซิร์ฟเวอร์ Semgrep MCP ได้ถูกย้ายจาก repo แบบสแตนด์อโลนไปยัง semgrep repository หลักแล้ว! ⚠️
repository นี้ถูกยกเลิกการใช้งานแล้ว และการอัปเดตเพิ่มเติมสำหรับเซิร์ฟเวอร์ Semgrep MCP จะทำผ่านไบนารี semgrep อย่างเป็นทางการ
เซิร์ฟเวอร์ Semgrep MCP
เซิร์ฟเวอร์ Model Context Protocol (MCP) สำหรับการใช้ Semgrep เพื่อสแกนโค้ดหาช่องโหว่ด้านความปลอดภัย ปกป้อง vibe coding ของคุณ! 😅
Model Context Protocol (MCP) เป็น API มาตรฐานสำหรับ LLM, เอเจนต์ และ IDE อย่าง Cursor, VS Code, Windsurf หรืออะไรก็ตามที่รองรับ MCP เพื่อขอความช่วยเหลือเฉพาะทาง รับบริบท และใช้พลังของเครื่องมือต่างๆ Semgrep เป็นเครื่องมือวิเคราะห์สแตติกที่รวดเร็วและให้ผลลัพธ์แน่นอน ซึ่งเข้าใจความหมายของภาษาต่างๆ มากมาย และมาพร้อมกับกฎกว่า 5,000 ข้อ 🛠️
[!NOTE] โปรเจกต์เบต้านี้อยู่ระหว่างการพัฒนาอย่างต่อเนื่อง เรายินดีรับฟังความคิดเห็น รายงานบั๊ก คำขอฟีเจอร์ และโค้ดของคุณ เข้าร่วมช่อง
#mcpcommunity Slack ได้เลย!
สารบัญ
- เซิร์ฟเวอร์ Semgrep MCP
เริ่มต้นใช้งาน
รันแพ็คเกจ Python เป็นคำสั่ง CLI โดยใช้ uv:
uvx semgrep-mcp # see --help for more options
หรือรันเป็น Docker container:
docker run -i --rm ghcr.io/semgrep/mcp -t stdio
Cursor
ตัวอย่าง mcp.json
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"],
"env": {
"SEMGREP_APP_TOKEN": "<token>"
}
}
}
}
เพิ่มคำสั่งลงใน .cursor/rules ของคุณเพื่อให้ใช้งานอัตโนมัติ:
Always scan code generated using Semgrep for security vulnerabilities
ChatGPT
- ไปที่หน้า Connector Settings (ลิงก์ตรง)
- ตั้งชื่อการเชื่อมต่อเป็น
Semgrep - ตั้ง MCP Server URL เป็น
https://mcp.semgrep.ai/sse - ตั้ง Authentication เป็น
No authentication - ติ๊กถูกที่ช่อง I trust this application
- คลิก Create
ดูรายละเอียดเพิ่มเติมได้ที่เอกสารอย่างเป็นทางการ
เซิร์ฟเวอร์ที่โฮสต์ให้
[!WARNING] mcp.semgrep.ai เป็นเซิร์ฟเวอร์ทดลองที่อาจพังโดยไม่คาดคิด และจะได้รับฟังก์ชันการทำงานใหม่ๆ อย่างรวดเร็ว 🚀
Cursor
- กด Cmd + Shift + J เพื่อเปิดการตั้งค่า Cursor
- เลือก MCP Tools
- คลิก New MCP Server
{
"mcpServers": {
"semgrep": {
"type": "streamable-http",
"url": "https://mcp.semgrep.ai/mcp"
}
}
}
เดโม
API
เครื่องมือ
ช่วยให้ LLM ดำเนินการ คำนวณแบบตายตัว และโต้ตอบกับบริการภายนอกได้
สแกนโค้ด
security_check: สแกนโค้ดเพื่อหาช่องโหว่ด้านความปลอดภัยsemgrep_scan: สแกนไฟล์โค้ดเพื่อหาช่องโหว่ด้านความปลอดภัยด้วยสตริงการกำหนดค่าที่กำหนดsemgrep_scan_with_custom_rule: สแกนไฟล์โค้ดโดยใช้กฎ Semgrep แบบกำหนดเอง
ทำความเข้าใจโค้ด
get_abstract_syntax_tree: แสดงผล Abstract Syntax Tree (AST) ของโค้ด
แพลตฟอร์มคลาวด์ (ต้องล็อกอินและมีโทเค็น Semgrep)
semgrep_findings: ดึงข้อมูลสิ่งที่ Semgrep ตรวจพบจาก API ของแพลตฟอร์ม Semgrep AppSec
เมตา
supported_languages: ส่งคืนรายการภาษาที่ Semgrep รองรับsemgrep_rule_schema: ดึง JSON Schema ของกฎ Semgrep ล่าสุด
พรอมต์
พรอมต์ที่ใช้ซ้ำได้เพื่อสร้างมาตรฐานการโต้ตอบกับ LLM ทั่วไป
write_custom_semgrep_rule: ส่งคืนพรอมต์เพื่อช่วยเขียนกฎ Semgrep
ทรัพยากร
เปิดเผยข้อมูลและเนื้อหาให้กับ LLM
semgrep://rule/schema: ข้อกำหนดเฉพาะของไวยากรณ์ YAML ของกฎ Semgrep โดยใช้ JSON schemasemgrep://rule/{rule_id}/yaml: กฎ Semgrep แบบเต็มในรูปแบบ YAML จากรีจิสทรี Semgrep
การใช้งาน
แพ็คเกจ Python นี้เผยแพร่ไปยัง PyPI ในชื่อ semgrep-mcp และสามารถติดตั้งและรันด้วย pip, pipx, uv, poetry หรือตัวจัดการแพ็คเกจ Python ใดๆ ก็ได้
$ 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.
อินพุต/เอาต์พุตมาตรฐาน (stdio)
การรับส่งข้อมูลแบบ stdio ช่วยให้สามารถสื่อสารผ่านสตรีมอินพุตและเอาต์พุตมาตรฐาน มีประโยชน์อย่างยิ่งสำหรับการผสานรวมในเครื่องและเครื่องมือ command-line ดูข้อกำหนดสำหรับรายละเอียดเพิ่มเติม
Python
semgrep-mcp
ตามค่าเริ่มต้น แพ็คเกจ Python จะทำงานในโหมด stdio เนื่องจากใช้สตรีมอินพุตและเอาต์พุตมาตรฐาน จึงดูเหมือนว่าเครื่องมือค้างโดยไม่มีเอาต์พุตใดๆ ซึ่งเป็นเรื่องปกติ
Docker
เซิร์ฟเวอร์นี้เผยแพร่ไปยัง Github's Container Registry (ghcr.io/semgrep/mcp)
docker run -i --rm ghcr.io/semgrep/mcp -t stdio
ตามค่าเริ่มต้น Docker container จะอยู่ในโหมด SSE ดังนั้นคุณจะต้องใส่ -t stdio หลังชื่ออิมเมจและรันด้วย -i เพื่อรันในโหมด interactive
Streamable HTTP
Streamable HTTP ช่วยให้สามารถสตรีมการตอบสนองผ่าน JSON RPC ผ่าน HTTP POST requests ได้ ดูข้อกำหนดสำหรับรายละเอียดเพิ่มเติม
ตามค่าเริ่มต้น เซิร์ฟเวอร์จะรับฟังที่ 127.0.0.1:8000/mcp สำหรับการเชื่อมต่อไคลเอนต์ หากต้องการเปลี่ยนแปลงสิ่งนี้ ให้ตั้งค่าตัวแปรสภาพแวดล้อม FASTMCP_* เซิร์ฟเวอร์ต้องทำงานอยู่เพื่อให้ไคลเอนต์เชื่อมต่อได้
Python
semgrep-mcp -t streamable-http
ตามค่าเริ่มต้น แพ็คเกจ Python จะทำงานในโหมด stdio ดังนั้นคุณจะต้องใส่ -t streamable-http
Docker
docker run -p 8000:0000 ghcr.io/semgrep/mcp
Server-sent events (SSE)
[!WARNING] ชุมชน MCP ถือว่านี่เป็นโปรโตคอลการรับส่งข้อมูลแบบเก่าและมีไว้เพื่อความเข้ากันได้แบบย้อนหลังเป็นหลัก Streamable HTTP เป็นตัวเลือกทดแทนที่แนะนำ
การรับส่งข้อมูลแบบ SSE ช่วยให้สามารถสตรีมจากเซิร์ฟเวอร์ไปยังไคลเอนต์ด้วย Server-Send Events สำหรับการสื่อสารระหว่างไคลเอนต์ไปยังเซิร์ฟเวอร์และเซิร์ฟเวอร์ไปยังไคลเอนต์ ดูข้อกำหนดสำหรับรายละเอียดเพิ่มเติม
ตามค่าเริ่มต้น เซิร์ฟเวอร์จะรับฟังที่ 127.0.0.1:8000/sse สำหรับการเชื่อมต่อไคลเอนต์ หากต้องการเปลี่ยนแปลงสิ่งนี้ ให้ตั้งค่าตัวแปรสภาพแวดล้อม FASTMCP_* เซิร์ฟเวอร์ต้องทำงานอยู่เพื่อให้ไคลเอนต์เชื่อมต่อได้
Python
semgrep-mcp -t sse
ตามค่าเริ่มต้น แพ็คเกจ Python จะทำงานในโหมด stdio ดังนั้นคุณจะต้องใส่ -t sse
Docker
docker run -p 8000:0000 ghcr.io/semgrep/mcp -t sse
แพลตฟอร์ม Semgrep AppSec
ทางเลือก ในการเชื่อมต่อกับแพลตฟอร์ม Semgrep AppSec:
- ล็อกอิน หรือสมัครใช้งาน
- สร้างโทเค็นจาก Settings
- เพิ่มโทเค็นลงในตัวแปรสภาพแวดล้อมของคุณ:
-
CLI (
export SEMGREP_APP_TOKEN=<token>) -
Docker (
docker run -e SEMGREP_APP_TOKEN=<token>) -
MCP config JSON
-
"env": {
"SEMGREP_APP_TOKEN": "<token>"
}
[!TIP] โปรดติดต่อขอความช่วยเหลือหากต้องการ ☎️
การผสานรวม
Cursor IDE
เพิ่มบล็อก JSON ต่อไปนี้ลงในไฟล์การกำหนดค่า ~/.cursor/mcp.json ส่วนกลาง หรือ .cursor/mcp.json เฉพาะโปรเจกต์ของคุณ:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}

ดูเอกสาร cursorสำหรับข้อมูลเพิ่มเติม
VS Code / Copilot
คลิกปุ่มติดตั้งที่ด้านบนของ README นี้เพื่อการติดตั้งที่เร็วที่สุด
การกำหนดค่าด้วยตนเอง
เพิ่มบล็อก JSON ต่อไปนี้ลงในไฟล์ User Settings (JSON) ของคุณใน VS Code คุณสามารถทำได้โดยกด Ctrl + Shift + P และพิมพ์ Preferences: Open User Settings (JSON)
{
"mcp": {
"servers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
}
หรือคุณสามารถเพิ่มลงในไฟล์ชื่อ .vscode/mcp.json ในพื้นที่ทำงานของคุณ:
{
"servers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
การใช้ Docker
{
"mcp": {
"servers": {
"semgrep": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/semgrep/mcp",
"-t",
"stdio"
]
}
}
}
}
ดูเอกสาร VS Codeสำหรับข้อมูลเพิ่มเติม
Windsurf
เพิ่มบล็อก JSON ต่อไปนี้ลงในไฟล์ ~/.codeium/windsurf/mcp_config.json ของคุณ:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
ดูเอกสาร Windsurfสำหรับข้อมูลเพิ่มเติม
Claude Desktop
นี่คือวิดีโอสั้นที่แสดง Claude Desktop ใช้เซิร์ฟเวอร์นี้เพื่อเขียนกฎแบบกำหนดเอง
เพิ่มบล็อก JSON ต่อไปนี้ลงในไฟล์ claude_desktop_config.json ของคุณ:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
ดูเอกสาร Anthropicสำหรับข้อมูลเพิ่มเติม
Claude Code
claude mcp add semgrep uvx semgrep-mcp
ดูเอกสาร Claude Codeสำหรับข้อมูลเพิ่มเติม
OpenAI
ดูเอกสารอย่างเป็นทางการ:
Agents SDK
async with MCPServerStdio(
params={
"command": "uvx",
"args": ["semgrep-mcp"],
}
) as server:
tools = await server.list_tools()
ดูเอกสาร OpenAI Agents SDKสำหรับข้อมูลเพิ่มเติม
ไคลเอนต์แบบกำหนดเอง
ตัวอย่างไคลเอนต์ Python SSE
ดูตัวอย่างแบบเต็มได้ใน 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] ไลบรารีไคลเอนต์บางตัวต้องการ
URL: http://localhost:8000/sse และบางตัวต้องการเพียงHOST:localhost:8000ลองใช้URLในเว็บเบราว์เซอร์เพื่อยืนยันว่าเซิร์ฟเวอร์กำลังทำงานและไม่มีปัญหาเครือข่าย
ดูเอกสาร SDK อย่างเป็นทางการสำหรับข้อมูลเพิ่มเติม
การมีส่วนร่วม ชุมชน และการรันจากซอร์ส
[!NOTE] เรายินดีรับฟังความคิดเห็น รายงานบั๊ก คำขอฟีเจอร์ และโค้ดของคุณ เข้าร่วมช่อง
#mcpcommunity Slack ได้เลย!
ดู CONTRIBUTING.md สำหรับข้อมูลเพิ่มเติมและรายละเอียดเกี่ยวกับวิธีการรันเซิร์ฟเวอร์ MCP จากซอร์สโค้ด
เครื่องมือที่คล้ายกัน 🔍
- semgrep-vscode - ส่วนขยาย VS Code อย่างเป็นทางการ
- semgrep-intellij - ปลั๊กอิน IntelliJ
โปรเจกต์ชุมชน 🌟
- semgrep-rules - คอลเลกชันกฎ Semgrep อย่างเป็นทางการ
- mcp-server-semgrep - แรงบันดาลใจดั้งเดิมเขียนโดย Szowesgad และ stefanskiasan
รีจิสทรีเซิร์ฟเวอร์ MCP
สร้างด้วย ❤️ โดย ทีม Semgrep