semgrep 仓库! ⚠️此仓库已被弃用,Semgrep MCP 服务器的进一步更新将通过官方的 semgrep 二进制文件进行。
一个用于使用 Semgrep 扫描代码中的安全漏洞的 Model Context Protocol (MCP) 服务器。保护您的 vibe 编码! 😅
Model Context Protocol (MCP) 是一种标准化的 API,适用于像 Cursor、VS Code、Windsurf 或任何支持 MCP 的工具,以获取专业帮助、上下文信息并利用工具的力量。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 生成的代码的安全漏洞
Semgrephttps://mcp.semgrep.ai/sse无身份验证更多信息请参阅 官方文档。
[!WARNING] mcp.semgrep.ai 是一个实验性服务器,可能会意外中断。它将迅速获得新功能。🚀
{
"mcpServers": {
"semgrep": {
"type": "streamable-http",
"url": "https://mcp.semgrep.ai/mcp"
}
}
}
<a href="https://www.loom.com/share/8535d72e4cfc4e1eb1e03ea223a702df"> <img style="max-width:300px;" src="https://gips0.baidu.com/it/u=2897004777,3244828507&fm=3081&app=3081&f=GIF?w=389&h=360"> </a>
启用 LLM 执行操作、进行确定性计算并与外部服务交互。
security_check: 扫描代码的安全漏洞semgrep_scan: 使用给定的配置字符串扫描代码文件的安全漏洞semgrep_scan_with_custom_rule: 使用自定义 Semgrep 规则扫描代码文件get_abstract_syntax_tree: 输出代码的抽象语法树(AST)semgrep_findings: 从 Semgrep AppSec 平台 API 获取 Semgrep 发现supported_languages: 返回 Semgrep 支持的语言列表semgrep_rule_schema: 获取最新的 Semgrep 规则 JSON Schema可重复使用的提示,以标准化常见的 LLM 交互。
write_custom_semgrep_rule: 返回一个提示,帮助编写 Semgrep 规则向 LLM 暴露数据和内容
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
用法:semgrep-mcp [选项]
MCP 服务器的入口点
支持 stdio 和 sse 传输协议。对于 stdio,它将从标准输入读取并写入标准输出。对于 sse,它将在端口 8000 启动一个 HTTP 服务器。
选项:
-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 传输允许服务器到客户端的流式传输,使用 Server-Send Events 进行客户端到服务器和服务器到客户端的通信。更多信息请参阅 [规范](https://modelcontextprotocol.io/docs/con