Semgrep MCP Server

resmi

Yapay zeka ajanlarının Semgrep ile kodu güvence altına almasını sağlar.

Dokümantasyon

⚠️ Semgrep MCP sunucusu bağımsız bir depodan ana semgrep deposuna! taşındı ⚠️

Bu depo kullanımdan kaldırılmıştır ve Semgrep MCP sunucusuna yönelik diğer güncellemeler resmi semgrep ikili dosyası aracılığıyla yapılacaktır.

Semgrep logo

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

Semgrep MCP Sunucusu

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

Kodu güvenlik açıklarına karşı taramak için Semgrep kullanan bir Model Bağlam Protokolü (MCP) sunucusu. Vibe coding işleminizi güvence altına alın! 😅

Model Bağlam Protokolü (MCP), LLM'ler, Ajanlar ve Cursor, VS Code, Windsurf gibi IDE'ler veya MCP'yi destekleyen herhangi bir şey için özel yardım almak, bağlam edinmek ve araçların gücünden yararlanmak üzere standartlaştırılmış bir API'dir. Semgrep, birçok dili anlamsal olarak anlayan ve 5.000'den fazla kuralla gelen hızlı, deterministik bir statik analiz aracıdır. 🛠️

[!NOTE] Bu beta projesi aktif olarak geliştirilmektedir. Geri bildirimlerinizi, hata raporlarınızı, özellik isteklerinizi ve kodlarınızı bekliyoruz. #mcp topluluk Slack kanalına katılın!

İçindekiler

Başlarken

Python paketini uv kullanarak bir CLI komutu olarak çalıştırın:

uvx semgrep-mcp # see --help for more options

Veya bir Docker konteyneri olarak çalıştırın:

docker run -i --rm ghcr.io/semgrep/mcp -t stdio

Cursor

Örnek mcp.json

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"],
      "env": {
        "SEMGREP_APP_TOKEN": "<token>"
      }
    }
  }
}

Otomatik olarak kullanmak için .cursor/rules dosyanıza bir talimat ekleyin:

Always scan code generated using Semgrep for security vulnerabilities

ChatGPT

  1. Connector Settings sayfasına gidin (doğrudan bağlantı)
  2. Bağlantıyı Semgrep olarak adlandırın
  3. MCP Server URL'sini https://mcp.semgrep.ai/sse olarak ayarlayın
  4. AuthenticationNo authentication olarak ayarlayın
  5. I trust this application onay kutusunu işaretleyin
  6. Create düğmesine tıklayın

Daha fazla ayrıntı için resmi belgelere bakın.

Barındırılan Sunucu

[!WARNING] mcp.semgrep.ai beklenmedik şekilde bozulabilecek deneysel bir sunucudur. Hızla yeni işlevler kazanacaktır.🚀

Cursor

  1. Cursor Ayarlarını açmak için Cmd + Shift + J tuşlarına basın
  2. MCP Tools'u seçin
  3. New MCP Server'a tıklayın.
{
  "mcpServers": {
    "semgrep": {
      "type": "streamable-http",
      "url": "https://mcp.semgrep.ai/mcp"
    }
  }
}

Demo

API

Araçlar

LLM'lerin eylemler gerçekleştirmesini, deterministik hesaplamalar yapmasını ve harici hizmetlerle etkileşime girmesini sağlar.

Kodu Tara

  • security_check: Kodu güvenlik açıklarına karşı tara
  • semgrep_scan: Belirli bir yapılandırma dizesiyle kod dosyalarını güvenlik açıklarına karşı tara
  • semgrep_scan_with_custom_rule: Özel bir Semgrep kuralı kullanarak kod dosyalarını tara

Kodu Anla

  • get_abstract_syntax_tree: Kodun Soyut Sözdizimi Ağacı (AST) çıktısını ver

Bulut Platformu (oturum açma ve Semgrep jetonu gereklidir)

  • semgrep_findings: Semgrep AppSec Platform API'sinden Semgrep bulgularını getir

Meta

  • supported_languages: Semgrep'in desteklediği dillerin listesini döndür
  • semgrep_rule_schema: En son semgrep kuralı JSON Şemasını getir

İstemler

Yaygın LLM etkileşimlerini standartlaştırmak için yeniden kullanılabilir istemler.

  • write_custom_semgrep_rule: Bir Semgrep kuralı yazmaya yardımcı olacak bir istem döndür

Kaynaklar

LLM'lere veri ve içerik sunar

  • semgrep://rule/schema: JSON şeması kullanarak Semgrep kuralı YAML sözdiziminin belirtimi
  • semgrep://rule/{rule_id}/yaml: Semgrep kayıt defterinden YAML formatında tam Semgrep kuralı

Kullanım

Bu Python paketi PyPI'de semgrep-mcp olarak yayınlanır ve pip, pipx, uv, poetry veya herhangi bir Python paket yöneticisi ile kurulup çalıştırılabilir.

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

Standart Giriş/Çıkış (stdio)

stdio aktarımı, standart giriş ve çıkış akışları aracılığıyla iletişimi sağlar. Bu, özellikle yerel entegrasyonlar ve komut satırı araçları için kullanışlıdır. Daha fazla ayrıntı için belirtime bakın.

Python

semgrep-mcp

Varsayılan olarak, Python paketi stdio modunda çalışır. Standart giriş ve çıkış akışlarını kullandığından, araç herhangi bir çıktı olmadan asılı kalmış gibi görünecektir, ancak bu beklenen bir durumdur.

Docker

Bu sunucu Github'ın Konteyner Kayıt Defterinde (ghcr.io/semgrep/mcp) yayınlanır

docker run -i --rm ghcr.io/semgrep/mcp -t stdio

Varsayılan olarak, Docker konteyneri SSE modundadır, bu nedenle görüntü adından sonra -t stdio eklemeniz ve etkileşimli modda çalıştırmak için -i ile çalıştırmanız gerekir.

Akışkan HTTP

Akışkan HTTP, HTTP POST istekleri aracılığıyla JSON RPC üzerinden akış yanıtlarını etkinleştirir. Daha fazla ayrıntı için belirtime bakın.

Varsayılan olarak, sunucu istemci bağlantıları için 127.0.0.1:8000/mcp adresini dinler. Bunlardan herhangi birini değiştirmek için FASTMCP_* ortam değişkenlerini ayarlayın. İstemcilerin bağlanabilmesi için sunucunun çalışıyor olması gerekir.

Python

semgrep-mcp -t streamable-http

Varsayılan olarak, Python paketi stdio modunda çalışır, bu nedenle -t streamable-http eklemeniz gerekir.

Docker

docker run -p 8000:0000 ghcr.io/semgrep/mcp

Sunucu Tarafından Gönderilen Olaylar (SSE)

[!WARNING] MCP topluluğu bunu eski bir aktarım protokolü olarak kabul eder ve gerçekten geriye dönük uyumluluk için tasarlanmıştır. Akışkan HTTP önerilen alternatiftir.

SSE aktarımı, istemciden sunucuya ve sunucudan istemciye iletişim için Sunucu Tarafından Gönderilen Olaylar ile sunucudan istemciye akışı etkinleştirir. Daha fazla ayrıntı için belirtime bakın.

Varsayılan olarak, sunucu istemci bağlantıları için 127.0.0.1:8000/sse adresini dinler. Bunlardan herhangi birini değiştirmek için FASTMCP_* ortam değişkenlerini ayarlayın. İstemcilerin bağlanabilmesi için sunucunun çalışıyor olması gerekir.

Python

semgrep-mcp -t sse

Varsayılan olarak, Python paketi stdio modunda çalışır, bu nedenle -t sse eklemeniz gerekir.

Docker

docker run -p 8000:0000 ghcr.io/semgrep/mcp -t sse

Semgrep AppSec Platformu

İsteğe bağlı olarak, Semgrep AppSec Platformuna bağlanmak için:

  1. Oturum açın veya kaydolun
  2. Ayarlar bölümünden bir jeton oluşturun
  3. Jetonu ortam değişkenlerinize ekleyin:
    • CLI (export SEMGREP_APP_TOKEN=<token>)

    • Docker (docker run -e SEMGREP_APP_TOKEN=<token>)

    • MCP yapılandırma JSON'u

    "env": {
      "SEMGREP_APP_TOKEN": "<token>"
    }

[!TIP] Gerekirse destek için ulaşın. ☎️

Entegrasyonlar

Cursor IDE

Aşağıdaki JSON bloğunu ~/.cursor/mcp.json genel veya .cursor/mcp.json projeye özel yapılandırma dosyanıza ekleyin:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

cursor MCP settings

Daha fazla bilgi için cursor belgelerine bakın.

VS Code / Copilot

En hızlı kurulum için bu README'nin üst kısmındaki yükleme düğmelerine tıklayın.

Manuel Yapılandırma

Aşağıdaki JSON bloğunu VS Code'daki Kullanıcı Ayarları (JSON) dosyanıza ekleyin. Bunu Ctrl + Shift + P tuşlarına basıp Preferences: Open User Settings (JSON) yazarak yapabilirsiniz.

{
  "mcp": {
    "servers": {
      "semgrep": {
        "command": "uvx",
        "args": ["semgrep-mcp"]
      }
    }
  }
}

İsteğe bağlı olarak, çalışma alanınızda .vscode/mcp.json adlı bir dosyaya ekleyebilirsiniz:

{
  "servers": {
    "semgrep": {
      "command": "uvx",
        "args": ["semgrep-mcp"]
    }
  }
}

Docker Kullanımı

{
  "mcp": {
    "servers": {
      "semgrep": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "ghcr.io/semgrep/mcp",
          "-t",
          "stdio"
        ]
      }
    }
  }
}

Daha fazla bilgi için VS Code belgelerine bakın.

Windsurf

Aşağıdaki JSON bloğunu ~/.codeium/windsurf/mcp_config.json dosyanıza ekleyin:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

Daha fazla bilgi için Windsurf belgelerine bakın.

Claude Desktop

İşte Claude Desktop'ın özel bir kural yazmak için bu sunucuyu kullandığını gösteren kısa bir video.

Aşağıdaki JSON bloğunu claude_desktop_config.json dosyanıza ekleyin:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

Daha fazla bilgi için Anthropic belgelerine bakın.

Claude Code

claude mcp add semgrep uvx semgrep-mcp

Daha fazla bilgi için Claude Code belgelerine bakın.

OpenAI

Resmi belgelere bakın:

Agents SDK

async with MCPServerStdio(
    params={
        "command": "uvx",
        "args": ["semgrep-mcp"],
    }
) as server:
    tools = await server.list_tools()

Daha fazla bilgi için OpenAI Agents SDK belgelerine bakın.

Özel istemciler

Örnek Python SSE istemcisi

examples/sse_client.py dosyasında tam bir örneğe bakın

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] Bazı istemci kütüphaneleri URL: http://localhost:8000/sse ister ve diğerleri yalnızca HOST: localhost:8000 ister. Sunucunun çalıştığını ve ağ sorunu olmadığını doğrulamak için URL adresini bir web tarayıcısında deneyin.

Daha fazla bilgi için resmi SDK belgelerine bakın.

Katkıda bulunma, topluluk ve kaynaktan çalıştırma

[!NOTE] Geri bildirimlerinizi, hata raporlarınızı, özellik isteklerinizi ve kodlarınızı seviyoruz. #mcp topluluk Slack kanalına katılın!

MCP sunucusunu kaynak kodundan nasıl çalıştıracağınıza dair daha fazla bilgi ve ayrıntı için CONTRIBUTING.md dosyasına bakın.

Benzer araçlar 🔍

Topluluk projeleri 🌟

MCP sunucu kayıtları

Semgrep Server MCP server

Semgrep Ekibi tarafından ❤️ ile yapıldı