by Semgrep (open source) Claude Desktop, Claude Code, Cursor
MCP-сервер для статического анализа кода с помощью Semgrep. Позволяет AI-агентам сканировать кодовую базу на уязвимости, ошибки и нарушения политик — 3000+ готовых правил. Возможности: - Сканирование файлов и директорий на security-уязвимости - Правила для OWASP Top 10, CWE, CVE-паттернов - Языки: Python, JS, Go, Java, Ruby, PHP, C/C++, Rust и другие - Создание и запуск кастомных правил - Анализ diff (только изменённый код) - Интеграция с semgrep.dev registry
# pip install semgrep-mcp
# Требуется semgrep: pip install semgrep
# Claude Desktop — claude_desktop_config.json:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
# Claude Code (CLI):
claude mcp add semgrep -- uvx semgrep-mcp
# OpenCode — ~/.config/opencode/opencode.json:
{
"mcp": {
"semgrep": {
"type": "local",
"command": ["uvx", "semgrep-mcp"]
}
}
}
semgrep! ⚠️Данный репозиторий был упразднён, и дальнейшие обновления сервера Semgrep MCP будут доступны через официальный бинарный файл semgrep.
Сервер протокола контекста модели (MCP) для использования Semgrep для сканирования кода на наличие уязвимостей безопасности. Обеспечьте безопасность вашего вайб-кодинга! 😅
Протокол контекста модели (MCP) — это стандартизированный API для LLM, агентов и IDE, таких как Cursor, VS Code, Windsurf или любой другой, поддерживающей MCP, для получения специализированной помощи, контекста и использования возможностей инструментов. Semgrep — это быстрый, детерминированный инструмент статического анализа, который семантически понимает множество языков и содержит более 5 000 правил. 🛠️
[!NOTE] Этот проект в стадии бета-тестирования активно развивается. Мы будем рады вашей обратной связи, отчётам об ошибках, запросам на функции и коду. Присоединяйтесь к каналу
#mcpв сообществе Slack!
Запустите Python-пакет как CLI-команду, используя uv:
uvx semgrep-mcp # смотрите --help для дополнительных опций
Или запустите как Docker-контейнер:
docker run -i --rm ghcr.io/semgrep/mcp -t stdio
Пример mcp.json
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"],
"env": {
"SEMGREP_APP_TOKEN": "<токен>"
}
}
}
}
Добавьте инструкцию в ваш .cursor/rules для автоматического использования:
Always scan code generated using Semgrep for security vulnerabilities
Semgrephttps://mcp.semgrep.ai/sseБез аутентификацииПодробнее см. в официальной документации.
[!WARNING] mcp.semgrep.ai — это экспериментальный сервер, который может работать с неожиданными ошибками. Он будет быстро получать новый функционал.🚀
{
"mcpServers": {
"semgrep": {
"type": "streamable-http",
"url": "https://mcp.semgrep.ai/mcp"
}
}
}
Позволяют LLM выполнять действия, делать детерминированные вычисления и взаимодействовать с внешними сервисами.
security_check: Сканирование кода на наличие уязвимостей безопасностиsemgrep_scan: Сканирование файлов кода на наличие уязвимостей безопасности с заданной строкой конфигурацииsemgrep_scan_with_custom_rule: Сканирование файлов кода с использованием пользовательского правила Semgrepget_abstract_syntax_tree: Вывод абстрактного синтаксического дерева (AST) кодаsemgrep_findings: Получение результатов Semgrep из API платформы Semgrep AppSecsupported_languages: Возвращает список языков, поддерживаемых Semgrepsemgrep_rule_schema: Получает последнюю JSON-схему правила SemgrepПовторно используемые промпты для стандартизации распространённых взаимодействий с LLM.
write_custom_semgrep_rule: Возвращает промпт для помощи в написании правила SemgrepОткрывают данные и контент для LLM
semgrep://rule/schema: Спецификация синтаксиса YAML правила Semgrep с использованием JSON-схемы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]
Точка входа для MCP-сервера
Поддерживает как stdio, так и sse транспортные протоколы. Для stdio он будет читать из stdin
и писать в stdout. Для sse он запустит HTTP-сервер на порту 8000.
Options:
-v, --version Показать версию и выйти.
-t, --transport [stdio|sse] Используемый транспортный протокол (stdio или sse)
-h, --help Показать это сообщение и выйти.
Транспорт stdio обеспечивает коммуникацию через потоки стандартного ввода и вывода. Это особенно полезно для локальных интеграций и инструментов командной строки. Подробности см. в спецификации.
semgrep-mcp
По умолчанию Python-пакет будет работать в режиме stdio. Поскольку он использует потоки стандартного ввода и вывода, будет казаться, что инструмент завис без вывода, но это ожидаемое поведение.
Этот сервер опубликован в реестре контейнеров Github (ghcr.io/semgrep/mcp)
docker run -i --rm ghcr.io/semgrep/mcp -t stdio
По умолчанию Docker-контейнер находится в режиме SSE, поэтому вам придется добавить -t stdio после имени образа и запустить с -i для работы в интерактивном режиме.
Потоковый HTTP обеспечивает потоковые ответы через JSON RPC с помощью HTTP POST-запросов. Подробности см. в спецификации.
По умолчанию сервер слушает на 127.0.0.1:8000/mcp для подключений клиентов. Чтобы изменить какие-либо настройки, установите переменные окружения FASTMCP_*. Сервер должен работать для подключения клиентов.
semgrep-mcp -t streamable-http
По умолчанию Python-пакет будет работать в режиме stdio, поэтому вам придется добавить -t streamable-http.
docker run -p 8000:0000 ghcr.io/semgrep/mcp
[!WARNING] Сообщество MCP считает это устаревшим транспортным протоколом, и он действительно предназначен для обратной совместимости. Рекомендуемой заменой является Потоковый HTTP.
Транспорт SSE обеспечивает потоковую передачу от сервера к клиенту с помощью Server-Send Events для коммуникации от клиента к серверу и от сервера к клиенту. Подробности см. в спецификации.
По умолчанию сервер слушает на 127.0.0.1:8000/sse для подключений клиентов. Чтобы изменить какие-либо настройки, установите переменные окружения FASTMCP_*. Сервер должен работать для подключения клиентов.
semgrep-mcp -t sse
По умолчанию Python-пакет будет работать в режиме stdio, поэтому вам придется добавить -t sse.
docker run -p 8000:0000 ghcr.io/semgrep/mcp -t sse
Опционально, для подключения к платформе Semgrep AppSec:
CLI (export SEMGREP_APP_TOKEN=<токен>)
Docker (docker run -e SEMGREP_APP_TOKEN=<токен>)
Конфигурационный JSON MCP
"env": {
"SEMGREP_APP_TOKEN": "<токен>"
}
[!TIP] Пожалуйста, свяжитесь с поддержкой при необходимости. ☎️
Добавьте следующий JSON-блок в ваш глобальный файл конфигурации ~/.cursor/mcp.json или специфичный для проекта .cursor/mcp.json:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
)
Больше информации см. в документации cursor.
Нажмите кнопки установки в верхней части этого README для самой быстрой установки.
Добавьте следующий JSON-блок в ваш файл пользовательских настроек (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"]
}
}
}
{
"mcp": {
"servers": {
"semgrep": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/semgrep/mcp",
"-t",
"stdio"
]
}
}
}
}
Больше информации см. в документации VS Code.
Добавьте следующий JSON-блок в ваш файл ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
Больше информации см. в документации Windsurf.
Вот короткое видео, показывающее, как Claude Desktop использует этот сервер для написания пользовательского правила.
Добавьте следующий JSON-блок в ваш файл claude_desktop_config.json:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}
Больше информации см. в документации Anthropic.
claude mcp add semgrep uvx semgrep-mcp
Больше информации см. в документации Claude Code.
Смотрите официальную документацию: - https://platform.openai.com/docs/mcp - https://platform.openai.com/docs/guides/tools-remote-mcp
async with MCPServerStdio(
params={
"command": "uvx",
"args": ["semgrep-mcp"],
}
) as server:
tools = await server.list_tools()
Больше информации см. в документации OpenAI Agents SDK.
Полный пример см. в 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в сообществе Slack!
Смотрите CONTRIBUTING.md) для получения дополнительной информации и подробностей о том, как запустить MCP-сервер из исходного кода.
Сделано с ❤️ командой Semgrep