Semgrep MCP Server

ทางการ

เปิดให้ AI agents สามารถรักษาความปลอดภัยของโค้ดด้วย Semgrep

เอกสาร

⚠️ เซิร์ฟเวอร์ Semgrep MCP ได้ถูกย้ายจาก repo แบบสแตนด์อโลนไปยัง semgrep repository หลักแล้ว! ⚠️

repository นี้ถูกยกเลิกการใช้งานแล้ว และการอัปเดตเพิ่มเติมสำหรับเซิร์ฟเวอร์ Semgrep MCP จะทำผ่านไบนารี semgrep อย่างเป็นทางการ

Semgrep logo

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

เซิร์ฟเวอร์ 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

เซิร์ฟเวอร์ Model Context Protocol (MCP) สำหรับการใช้ Semgrep เพื่อสแกนโค้ดหาช่องโหว่ด้านความปลอดภัย ปกป้อง vibe coding ของคุณ! 😅

Model Context Protocol (MCP) เป็น API มาตรฐานสำหรับ LLM, เอเจนต์ และ IDE อย่าง Cursor, VS Code, Windsurf หรืออะไรก็ตามที่รองรับ MCP เพื่อขอความช่วยเหลือเฉพาะทาง รับบริบท และใช้พลังของเครื่องมือต่างๆ Semgrep เป็นเครื่องมือวิเคราะห์สแตติกที่รวดเร็วและให้ผลลัพธ์แน่นอน ซึ่งเข้าใจความหมายของภาษาต่างๆ มากมาย และมาพร้อมกับกฎกว่า 5,000 ข้อ 🛠️

[!NOTE] โปรเจกต์เบต้านี้อยู่ระหว่างการพัฒนาอย่างต่อเนื่อง เรายินดีรับฟังความคิดเห็น รายงานบั๊ก คำขอฟีเจอร์ และโค้ดของคุณ เข้าร่วมช่อง #mcp community Slack ได้เลย!

สารบัญ

เริ่มต้นใช้งาน

รันแพ็คเกจ 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

  1. ไปที่หน้า Connector Settings (ลิงก์ตรง)
  2. ตั้งชื่อการเชื่อมต่อเป็น Semgrep
  3. ตั้ง MCP Server URL เป็น https://mcp.semgrep.ai/sse
  4. ตั้ง Authentication เป็น No authentication
  5. ติ๊กถูกที่ช่อง I trust this application
  6. คลิก Create

ดูรายละเอียดเพิ่มเติมได้ที่เอกสารอย่างเป็นทางการ

เซิร์ฟเวอร์ที่โฮสต์ให้

[!WARNING] mcp.semgrep.ai เป็นเซิร์ฟเวอร์ทดลองที่อาจพังโดยไม่คาดคิด และจะได้รับฟังก์ชันการทำงานใหม่ๆ อย่างรวดเร็ว 🚀

Cursor

  1. กด Cmd + Shift + J เพื่อเปิดการตั้งค่า Cursor
  2. เลือก MCP Tools
  3. คลิก 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 schema
  • semgrep://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:

  1. ล็อกอิน หรือสมัครใช้งาน
  2. สร้างโทเค็นจาก Settings
  3. เพิ่มโทเค็นลงในตัวแปรสภาพแวดล้อมของคุณ:
    • 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 MCP settings

ดูเอกสาร 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] เรายินดีรับฟังความคิดเห็น รายงานบั๊ก คำขอฟีเจอร์ และโค้ดของคุณ เข้าร่วมช่อง #mcp community Slack ได้เลย!

ดู CONTRIBUTING.md สำหรับข้อมูลเพิ่มเติมและรายละเอียดเกี่ยวกับวิธีการรันเซิร์ฟเวอร์ MCP จากซอร์สโค้ด

เครื่องมือที่คล้ายกัน 🔍

  • semgrep-vscode - ส่วนขยาย VS Code อย่างเป็นทางการ
  • semgrep-intellij - ปลั๊กอิน IntelliJ

โปรเจกต์ชุมชน 🌟

รีจิสทรีเซิร์ฟเวอร์ MCP

Semgrep Server MCP server

สร้างด้วย ❤️ โดย ทีม Semgrep