Semgrep MCP Server

официальный

Позволяет AI-агентам обеспечивать безопасность кода с помощью Semgrep.

Документация

⚠️ Сервер Semgrep MCP был перемещен из отдельного репозитория в основной репозиторий semgrep! ⚠️

Этот репозиторий устарел, и дальнейшие обновления сервера 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:

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. Перейдите на страницу Настройки коннектора (прямая ссылка)
  2. Назовите соединение Semgrep
  3. Установите URL сервера MCP как https://mcp.semgrep.ai/sse
  4. Установите Аутентификацию как No authentication
  5. Установите флажок Я доверяю этому приложению
  6. Нажмите Создать

Подробнее смотрите в официальной документации.

Размещенный сервер

[!WARNING] mcp.semgrep.ai — это экспериментальный сервер, который может неожиданно выходить из строя. Он будет быстро получать новые функции.🚀

Cursor

  1. Cmd + Shift + J, чтобы открыть настройки Cursor
  2. Выберите Инструменты MCP
  3. Нажмите Новый сервер MCP.
{
  "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: Вывод абстрактного синтаксического дерева (AST) кода

Облачная платформа (требуется вход и токен Semgrep)

  • semgrep_findings: Получение находок Semgrep из API платформы Semgrep AppSec

Мета

  • supported_languages: Возвращает список языков, поддерживаемых Semgrep
  • semgrep_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]

  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 обеспечивает связь через стандартные потоки ввода и вывода. Это особенно полезно для локальных интеграций и инструментов командной строки. Подробнее см. в спецификации.

Python

semgrep-mcp

По умолчанию пакет Python будет работать в режиме stdio. Поскольку используются стандартные потоки ввода и вывода, может показаться, что инструмент завис без вывода, но это ожидаемое поведение.

Docker

Этот сервер публикуется в реестре контейнеров Github (ghcr.io/semgrep/mcp)

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

По умолчанию контейнер Docker находится в режиме SSE, поэтому вам нужно будет указать -t stdio после имени образа и запустить с -i для работы в интерактивном режиме.

Потоковый HTTP

Потоковый HTTP позволяет передавать потоковые ответы через JSON RPC с помощью HTTP POST запросов. Подробнее см. в спецификации.

По умолчанию сервер прослушивает 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

События, отправляемые сервером (SSE)

[!WARNING] Сообщество MCP считает этот транспортный протокол устаревшим и предназначенным в основном для обратной совместимости. Рекомендуемой заменой является Потоковый HTTP.

Транспорт SSE обеспечивает потоковую передачу от сервера к клиенту с помощью Server-Sent 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. Сгенерируйте токен в Настройках
  3. Добавьте токен в переменные окружения:
    • CLI (export SEMGREP_APP_TOKEN=<token>)

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

    • JSON конфигурации MCP

    "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 в файл пользовательских настроек (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!

Подробнее и о том, как запустить сервер MCP из исходного кода, см. в CONTRIBUTING.md.

Похожие инструменты 🔍

Проекты сообщества 🌟

Реестры серверов MCP

Semgrep Server MCP server

Сделано с ❤️ командой Semgrep Team