Semgrep MCP Server

resmi

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

Semgrep logo

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

Server MCP Semgrep

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

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 #mcp Slack komunitas!

Daftar Isi

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

  1. Buka halaman Pengaturan Konektor (tautan langsung)
  2. Beri nama koneksi Semgrep
  3. Atur URL Server MCP ke https://mcp.semgrep.ai/sse
  4. Atur Autentikasi ke No authentication
  5. Centang kotak Saya percaya aplikasi ini
  6. 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

  1. Cmd + Shift + J untuk membuka Pengaturan Cursor
  2. Pilih Alat MCP
  3. 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 keamanan
  • semgrep_scan: Pindai file kode untuk kerentanan keamanan dengan string konfigurasi yang diberikan
  • semgrep_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 Semgrep
  • semgrep_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 JSON
  • semgrep://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:

  1. Login atau daftar
  2. Hasilkan token dari Pengaturan
  3. 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"]
    }
  }
}

cursor MCP settings

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 menginginkan HOST: localhost:8000. Coba URL di 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 #mcp Slack komunitas!

Lihat CONTRIBUTING.md untuk info lebih lanjut dan detail tentang cara menjalankan server MCP dari kode sumber.

Alat serupa 🔍

Proyek komunitas 🌟

Registri server MCP

Semgrep Server MCP server

Dibuat dengan ❤️ oleh Tim Semgrep