Semgrep MCP Server
официальныйПозволяет AI-агентам обеспечивать безопасность кода с помощью Semgrep.
Документация
⚠️ Сервер Semgrep MCP был перемещен из отдельного репозитория в основной репозиторий semgrep! ⚠️
Этот репозиторий устарел, и дальнейшие обновления сервера Semgrep MCP будут производиться через официальный бинарный файл semgrep.
Сервер Semgrep MCP
Сервер Model Context Protocol (MCP) для использования Semgrep для сканирования кода на наличие уязвимостей безопасности. Обезопасьте свой vibe coding! 😅
Model Context Protocol (MCP) — это стандартизированный API для LLM, агентов и IDE, таких как Cursor, VS Code, Windsurf или любых других, поддерживающих MCP, для получения специализированной помощи, контекста и использования возможностей инструментов. Semgrep — это быстрый, детерминированный инструмент статического анализа, который семантически понимает множество языков и поставляется с более чем 5 000 правил. 🛠️
[!NOTE] Этот бета-проект находится в активной разработке. Мы будем рады вашим отзывам, сообщениям об ошибках, запросам функций и коду. Присоединяйтесь к каналу
#mcpcommunity Slack!
Содержание
- Сервер Semgrep MCP
Начало работы
Запустите пакет 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
- Перейдите на страницу Настройки коннектора (прямая ссылка)
- Назовите соединение
Semgrep - Установите URL сервера MCP как
https://mcp.semgrep.ai/sse - Установите Аутентификацию как
No authentication - Установите флажок Я доверяю этому приложению
- Нажмите Создать
Подробнее смотрите в официальной документации.
Размещенный сервер
[!WARNING] mcp.semgrep.ai — это экспериментальный сервер, который может неожиданно выходить из строя. Он будет быстро получать новые функции.🚀
Cursor
- Cmd + Shift + J, чтобы открыть настройки Cursor
- Выберите Инструменты MCP
- Нажмите Новый сервер 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: Возвращает список языков, поддерживаемых 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]
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:
- Войдите или зарегистрируйтесь
- Сгенерируйте токен в Настройках
- Добавьте токен в переменные окружения:
-
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.
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] Мы любим ваши отзывы, сообщения об ошибках, запросы функций и код. Присоединяйтесь к каналу
#mcpcommunity Slack!
Подробнее и о том, как запустить сервер MCP из исходного кода, см. в CONTRIBUTING.md.
Похожие инструменты 🔍
- semgrep-vscode - Официальное расширение VS Code
- semgrep-intellij - Плагин IntelliJ
Проекты сообщества 🌟
- semgrep-rules - Официальная коллекция правил Semgrep
- mcp-server-semgrep - Оригинальное вдохновение, написанное Szowesgad и stefanskiasan
Реестры серверов MCP
Сделано с ❤️ командой Semgrep Team