一个用于使用 Semgrep 扫描代码以查找安全漏洞的模型上下文协议(MCP)服务器。保护你的 vibe coding!😅
模型上下文协议 (MCP) 是一个标准化的 API,用于 LLMs、Agents 和像 Cursor、VS Code、Windsurf 或任何支持 MCP 的 IDE,以获取专业帮助、获取上下文并利用工具的力量。Semgrep 是一个快速、确定性的静态分析工具,语义上理解多种 语言 并附带超过 5,000 条规则。🛠️
[!NOTE]
这个测试版项目正在积极开发中。我们非常欢迎你的反馈、错误报告、功能请求和代码。加入#mcp
社区 Slack 频道!
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": "<token>"
}
}
}
}

在你的 .cursor/rules
中添加一条指令以自动使用:
始终使用 Semgrep 扫描生成的代码以查找安全漏洞
Semgrep
https://mcp.semgrep.ai/sse
No authentication
更多详情请参阅 官方文档。
[!WARNING]
mcp.semgrep.ai 是一个实验性服务器,可能会意外中断。它将快速获得新功能。🚀
{
"mcpServers": {
"semgrep": {
"type": "streamable-http",
"url": "https://mcp.semgrep.ai/mcp"
}
}
}

使 LLMs 能够执行操作、进行确定性计算并与外部服务交互。
security_check
: 扫描代码以查找安全漏洞semgrep_scan
: 使用给定的配置字符串扫描代码文件以查找安全漏洞semgrep_scan_with_custom_rule
: 使用自定义 Semgrep 规则扫描代码文件get_abstract_syntax_tree
: 输出代码的抽象语法树 (AST)supported_languages
: 返回 Semgrep 支持的语言列表semgrep_rule_schema
: 获取最新的 semgrep 规则 JSON Schema可重用的提示,用于标准化常见的 LLM 交互。
write_custom_semgrep_rule
: 返回一个提示,帮助编写 Semgrep 规则向 LLMs 公开数据和内容
semgrep://rule/schema
: 使用 JSON schema 规范 Semgrep 规则 YAML 语法semgrep://rule/{rule_id}/yaml
: 从 Semgrep 注册表中获取完整的 Semgrep 规则 YAML 格式这个 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,它将在端口 8000 上启动 HTTP 服务器。 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 通过 HTTP POST 请求实现流式 JSON RPC 响应。更多详情请参阅 规范。
默认情况下,服务器监听 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 传输通过服务器发送事件实现服务器到客户端的流式通信。更多详情请参阅 规范。
默认情况下,服务器监听 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 应用安全平台:
CLI (export SEMGREP_APP_TOKEN=<token>
)
Docker (docker run -e SEMGREP_APP_TOKEN=<token>
)
MCP 配置 JSON
"env": {
"SEMGREP_APP_TOKEN": "<token>"
}

[!TIP]
如果需要,请 联系支持。☎️
将以下 JSON 块添加到你的 ~/.cursor/mcp.json
全局或 .cursor/mcp.json
项目特定的配置文件中:
{
"mcpServers": {
"semgrep": {
"command": "uvx",
"args": ["semgrep-mcp"]
}
}
}

更多信息请参阅 cursor 文档。
点击此 README 顶部的安装按钮以快速安装。
将以下 JSON 块添加到 VS Code 的用户设置(JSON)文件中。你可以通过按 Ctrl + Shift + P
并输入 Preferences: Open User Settings (JSON)
来执行此操作。
{
"mcp": {
"servers": {
"semgrep": {
