Semgrep MCP Server
resmiMemungkinkan agen AI untuk mengamankan kode dengan Semgrep.
Dokumentasi
⚠️ Server MCP Semgrep telah dipindahkan dari repo mandiri ke repositori utama semgrep! ⚠️
Repositori ini telah ditinggalkan, dan pembaruan selanjutnya untuk server MCP Semgrep akan dilakukan melalui biner resmi semgrep.
Server MCP Semgrep
Server Model Context Protocol (MCP) untuk menggunakan Semgrep guna memindai kode dari kerentanan keamanan. Amankan vibe coding Anda! 😅
Model Context Protocol (MCP) adalah API terstandarisasi untuk LLM, Agen, dan IDE seperti Cursor, VS Code, Windsurf, atau apa pun yang mendukung MCP, untuk mendapatkan bantuan khusus, mendapatkan konteks, dan memanfaatkan kekuatan alat. Semgrep adalah alat analisis statis yang cepat dan deterministik yang memahami secara semantik banyak bahasa dan dilengkapi dengan lebih dari 5.000 aturan. 🛠️
[!NOTE] Proyek beta ini sedang dalam pengembangan aktif. Kami sangat menghargai masukan, laporan bug, permintaan fitur, dan kode Anda. Bergabunglah dengan saluran
#mcpSlack komunitas!
Daftar Isi
- Server MCP Semgrep
Memulai
Jalankan paket Python sebagai perintah CLI menggunakan uv:
uvx semgrep-mcp # see --help for more options
Atau, jalankan sebagai kontainer Docker:
docker run -i --rm ghcr.io/semgrep/mcp -t stdio
Cursor
Contoh mcp.json
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"],
"env": {
"SEMGREP_APP_TOKEN": "<token>"
}
}
}
}
Tambahkan instruksi ke .cursor/rules Anda untuk digunakan secara otomatis:
Always scan code generated using Semgrep for security vulnerabilities
ChatGPT
- Buka halaman Pengaturan Konektor (tautan langsung)
- Beri nama koneksi
Semgrep - Atur URL Server MCP ke
https://mcp.semgrep.ai/sse - Atur Autentikasi ke
No authentication - Centang kotak Saya percaya aplikasi ini
- Klik Buat
Lihat detail lebih lanjut di dokumen resmi.
Server Hosted
[!WARNING] mcp.semgrep.ai adalah server eksperimental yang mungkin rusak secara tak terduga. Server ini akan dengan cepat mendapatkan fungsionalitas baru.🚀
Cursor
- Cmd + Shift + J untuk membuka Pengaturan Cursor
- Pilih Alat MCP
- Klik Server MCP Baru.
{
"mcpServers": {
"semgrep": {
"type": "streamable-http",
"url": "https://mcp.semgrep.ai/mcp"
}
}
}
Demo
API
Alat
Memungkinkan LLM untuk melakukan tindakan, membuat komputasi deterministik, dan berinteraksi dengan layanan eksternal.
Pindai Kode
security_check: Pindai kode untuk kerentanan keamanansemgrep_scan: Pindai file kode untuk kerentanan keamanan dengan string konfigurasi yang diberikansemgrep_scan_with_custom_rule: Pindai file kode menggunakan aturan Semgrep kustom
Pahami Kode
get_abstract_syntax_tree: Keluarkan Abstract Syntax Tree (AST) dari kode
Platform Cloud (memerlukan login dan token Semgrep)
semgrep_findings: Ambil temuan Semgrep dari API Platform AppSec Semgrep
Meta
supported_languages: Kembalikan daftar bahasa yang didukung Semgrepsemgrep_rule_schema: Ambil Skema JSON aturan semgrep terbaru
Prompt
Prompt yang dapat digunakan kembali untuk menstandarisasi interaksi LLM umum.
write_custom_semgrep_rule: Kembalikan prompt untuk membantu menulis aturan Semgrep
Sumber Daya
Mengekspos data dan konten ke LLM
semgrep://rule/schema: Spesifikasi sintaks YAML aturan Semgrep menggunakan skema JSONsemgrep://rule/{rule_id}/yaml: Aturan Semgrep lengkap dalam format YAML dari registri Semgrep
Penggunaan
Paket Python ini diterbitkan ke PyPI sebagai semgrep-mcp dan dapat diinstal serta dijalankan dengan pip, pipx, uv, poetry, atau manajer paket Python apa pun.
$ 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.
Input/Output Standar (stdio)
Transport stdio memungkinkan komunikasi melalui aliran input dan output standar. Ini sangat berguna untuk integrasi lokal dan alat baris perintah. Lihat spesifikasi untuk detail lebih lanjut.
Python
semgrep-mcp
Secara default, paket Python akan berjalan dalam mode stdio. Karena menggunakan aliran input dan output standar, alat akan terlihat menggantung tanpa output apa pun, tetapi ini diharapkan.
Docker
Server ini diterbitkan ke Github's Container Registry (ghcr.io/semgrep/mcp)
docker run -i --rm ghcr.io/semgrep/mcp -t stdio
Secara default, kontainer Docker berada dalam mode SSE, jadi Anda harus menyertakan -t stdio setelah nama image dan menjalankan dengan -i untuk berjalan dalam mode interaktif.
HTTP Streamable
HTTP Streamable memungkinkan respons streaming melalui JSON RPC melalui permintaan HTTP POST. Lihat spesifikasi untuk detail lebih lanjut.
Secara default, server mendengarkan di 127.0.0.1:8000/mcp untuk koneksi klien. Untuk mengubahnya, atur variabel lingkungan FASTMCP_*. Server harus berjalan agar klien dapat terhubung.
Python
semgrep-mcp -t streamable-http
Secara default, paket Python akan berjalan dalam mode stdio, jadi Anda harus menyertakan -t streamable-http.
Docker
docker run -p 8000:0000 ghcr.io/semgrep/mcp
Server-sent events (SSE)
[!WARNING] Komunitas MCP menganggap ini sebagai protokol transport warisan dan benar-benar ditujukan untuk kompatibilitas mundur. HTTP Streamable adalah pengganti yang direkomendasikan.
Transport SSE memungkinkan streaming server-ke-klien dengan Server-Send Events untuk komunikasi klien-ke-server dan server-ke-klien. Lihat spesifikasi untuk detail lebih lanjut.
Secara default, server mendengarkan di 127.0.0.1:8000/sse untuk koneksi klien. Untuk mengubahnya, atur variabel lingkungan FASTMCP_*. Server harus berjalan agar klien dapat terhubung.
Python
semgrep-mcp -t sse
Secara default, paket Python akan berjalan dalam mode stdio, jadi Anda harus menyertakan -t sse.
Docker
docker run -p 8000:0000 ghcr.io/semgrep/mcp -t sse
Platform AppSec Semgrep
Secara opsional, untuk terhubung ke Platform AppSec Semgrep:
- Login atau daftar
- Hasilkan token dari Pengaturan
- Tambahkan token ke variabel lingkungan Anda:
-
CLI (
export SEMGREP_APP_TOKEN=<token>) -
Docker (
docker run -e SEMGREP_APP_TOKEN=<token>) -
JSON konfigurasi MCP
-
"env": {
"SEMGREP_APP_TOKEN": "<token>"
}
[!TIP] Silakan hubungi untuk dukungan jika diperlukan. ☎️
Integrasi
Cursor IDE
Tambahkan blok JSON berikut ke file konfigurasi global ~/.cursor/mcp.json atau spesifik proyek .cursor/mcp.json Anda:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}

Lihat dokumen cursor untuk info lebih lanjut.
VS Code / Copilot
Klik tombol instal di bagian atas README ini untuk instalasi tercepat.
Konfigurasi Manual
Tambahkan blok JSON berikut ke file Pengaturan Pengguna (JSON) Anda di VS Code. Anda dapat melakukannya dengan menekan Ctrl + Shift + P dan mengetik Preferences: Open User Settings (JSON).
{
"mcp": {
"servers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
}
Secara opsional, Anda dapat menambahkannya ke file bernama .vscode/mcp.json di ruang kerja Anda:
{
"servers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
Menggunakan Docker
{
"mcp": {
"servers": {
"semgrep": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/semgrep/mcp",
"-t",
"stdio"
]
}
}
}
}
Lihat dokumen VS Code untuk info lebih lanjut.
Windsurf
Tambahkan blok JSON berikut ke file ~/.codeium/windsurf/mcp_config.json Anda:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
Lihat dokumen Windsurf untuk info lebih lanjut.
Claude Desktop
Berikut adalah video singkat yang menunjukkan Claude Desktop menggunakan server ini untuk menulis aturan kustom.
Tambahkan blok JSON berikut ke file claude_desktop_config.json Anda:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
Lihat dokumen Anthropic untuk info lebih lanjut.
Claude Code
claude mcp add semgrep uvx semgrep-mcp
Lihat dokumen Claude Code untuk info lebih lanjut.
OpenAI
Lihat dokumen resmi:
Agents SDK
async with MCPServerStdio(
params={
"command": "uvx",
"args": ["semgrep-mcp"],
}
) as server:
tools = await server.list_tools()
Lihat dokumen OpenAI Agents SDK untuk info lebih lanjut.
Klien Kustom
Contoh klien Python SSE
Lihat contoh lengkap di 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] Beberapa pustaka klien menginginkan
URL: http://localhost:8000/sse dan yang lain hanya menginginkanHOST:localhost:8000. CobaURLdi peramban web untuk mengonfirmasi server berjalan, dan tidak ada masalah jaringan.
Lihat dokumen SDK resmi untuk info lebih lanjut.
Berkontribusi, komunitas, dan menjalankan dari sumber
[!NOTE] Kami sangat menghargai masukan, laporan bug, permintaan fitur, dan kode Anda. Bergabunglah dengan saluran
#mcpSlack komunitas!
Lihat CONTRIBUTING.md untuk info lebih lanjut dan detail tentang cara menjalankan server MCP dari kode sumber.
Alat serupa 🔍
- semgrep-vscode - Ekstensi VS Code resmi
- semgrep-intellij - Plugin IntelliJ
Proyek komunitas 🌟
- semgrep-rules - Koleksi resmi aturan Semgrep
- mcp-server-semgrep - Inspirasi asli yang ditulis oleh Szowesgad dan stefanskiasan
Registri server MCP
Dibuat dengan ❤️ oleh Tim Semgrep