Goberbot Semgrep MCP服务器
一个生产就绪的模型上下文协议(MCP)服务器,将Semgrep静态分析与Cursor IDE和其他MCP兼容客户端集成在一起。基于Docker的部署具有自定义安全和代码质量规则。
🚀 快速启动(新机器设置)
使用3个命令启动并运行:
# 1. Clone and navigate
git clone goberbot-semgrep && cd goberbot-semgrep
# 2. Start the server
./start-server.sh
# 3. Configure Cursor IDE (see SETUP.md)📚 完整的设置指南: 看 SETUP.md 详细说明
📖 包含内容
- 自定义MCP服务器 -FastMCP 2.13.1,具有原生流式http传输
- Semgrep集成 -版本1.144.0,完全支持CLI
- 自定义规则 -14安全和代码质量规则
- Docker部署 -一个命令启动
docker-compose - 测试文件 -用于验证的易受攻击的代码示例
项目阶段
第一阶段:本地STDIO设置✅ 完成
在本地设置和测试Semgrep集成。
结果:
- ✅ Semgrep命令行界面 -自定义规则功能齐全
- ✅ 自定义规则 -测试文件中检测到17个漏洞
- ✅ 远程MCP -工作在
https://mcp.semgrep.ai/mcp - ❌ 本地MCP -弃用的软件包(无扫描工具)
关键发现: 生产使用所需的自定义MCP服务器(第3阶段)
第二阶段:码头化和远程部署🔄 (下一页)
容器化并部署Semgrep MCP以进行远程访问。
第三阶段:定制包装📋 (未来)
构建包装器代码以适应特定的用例。
______________________________________________________________________
第一阶段:本地STDIO设置
先决条件
- Python 3.8+
- pipx(推荐)或pip
- Semgrep命令行界面(1.138.0+版本)
安装
- 安装Semgrep命令行界面:
# Using Homebrew (macOS/Linux)
brew install semgrep
# Or using pip
pip install semgrep
# Verify installation
semgrep --version- 安装Semgrep MCP:
# Recommended: Using pipx for isolated environment
pipx install semgrep-mcp
# Alternative: Using pip
pip install semgrep-mcp- 登录到Semgrep(可选-用于Pro功能):
semgrep login运行MCP服务器(STDIO模式)
默认STDIO模式:
semgrep-mcp明确的STDIO规范:
semgrep-mcp -t stdio服务器将:
- 读取自 标准输入 (标准输入)
- 写信给 标准输出 (标准输出)
- 将错误记录到 标准错误 (标准误差)
测试MCP服务器
选项1:使用MCP检查器(推荐)
npx @modelcontextprotocol/inspector semgrep-mcp选项2:使用curl进行手动测试
创建测试请求文件 test-request.json:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}发送请求:
cat test-request.json | semgrep-mcp客户端的MCP配置
适用于克劳德桌面
增添 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"semgrep": {
"command": "semgrep-mcp",
"args": []
}
}
}用于游标IDE
添加到光标MCP设置:
{
"mcpServers": {
"semgrep": {
"command": "semgrep-mcp",
"args": []
}
}
}自定义规则设置
- 创建规则目录:
mkdir -p custom-rules- 添加自定义规则 (例如:
custom-rules/security.yaml):
rules:
- id: detect-eval-usage
pattern: eval(...)
message: "Dangerous use of eval() detected"
languages: [javascript, typescript]
severity: ERROR
- id: hardcoded-secrets
pattern: |
password = "..."
message: "Potential hardcoded password detected"
languages: [python, javascript]
severity: WARNING- 本地测试规则:
semgrep --config custom-rules/ path/to/code可用的MCP工具
Semgrep MCP服务器提供以下工具:
- 代码扫描:分析代码片段或文件
- 漏洞检测:识别安全问题
- 自定义规则执行:应用组织特定规则
- 支持多种语言:JavaScript、Python、Java、Go等
故障排除
问题:找不到命令
# Ensure pipx bin directory is in PATH
pipx ensurepath问题:Semgrep版本太旧
# Upgrade Semgrep
pip install --upgrade semgrep问题:MCP服务器没有响应
# Check if server is running
ps aux | grep semgrep-mcp
# Check logs
semgrep-mcp 2> debug.log______________________________________________________________________
第二阶段:Docker和远程部署(WIP)
Docker设置
拉取官方图片:
docker pull ghcr.io/semgrep/mcp使用STDIO运行:
docker run -i --rm ghcr.io/semgrep/mcp -t stdio使用HTTP传输运行:
docker run -p 8000:8000 --rm ghcr.io/semgrep/mcp -t streamable-http部署选项
选项A:云运行/ECS/类似
- 最适合有状态的容器服务
- 支持HTTP和STDIO
- 易于扩展和管理
选项B:Fly.io
# Install flyctl
curl -L https://fly.io/install.sh | sh
# Deploy
fly launch方案C:铁路
# Install Railway CLI
npm install -g @railway/cli
# Deploy
railway up备注Cloudflare Wrangler是为Workers(JS/WASM)设计的,不适合Python容器。考虑Cloudflare的容器平台或替代方案。
______________________________________________________________________
第3阶段:自定义MCP服务器✅ 完成 - 推荐路径
为什么定制? 经过第一阶段的测试,我们发现:
- ❌ 本地
semgrep-mcp软件包已弃用(没有扫描工具) - ⚠️ 远程服务器(
mcp.semgrep.ai)有效但有风险:
- 外部依赖(可以关闭) - 隐私问题(代码发送到外部服务器) - 无法进行自定义 - 无法使用来自的自定义规则 custom-rules/
解决方案: 内置自定义MCP服务器包装Semgrep CLI✅
已实现的功能:
- ✅ 具有流式HTTP的FastMCP 2.0
- ✅ 完全控制功能
- ✅ 本地执行(隐私和安全)
- ✅ 自定义规则集成(
custom-rules/) - ✅ 混合规则加载(URL→ 捆绑的→ S3就绪)
- ✅ Docker原生部署
- ✅ EC2部署就绪
- ✅ 健康检查和监测
- ✅ 三个MCP工具:scan_code、list_available_rules、reload_rules
快速入门:
cd mcp-server
./quick-start.sh请参阅:
mcp-server/README.md用途EC2-DEPLOYMENT.md用于云部署
______________________________________________________________________
项目结构
goberbot-semgrep/
├── README.md # This file
├── EC2-DEPLOYMENT.md # AWS EC2 deployment guide
├── PHASE1-CHECKLIST.md # Phase 1 testing results
├── PHASE3-ARCHITECTURE.md # Phase 3 technical design
├── STRATEGIC-SUMMARY.md # Strategic analysis
├── custom-rules/ # Custom Semgrep rules
│ ├── security.yaml # Security vulnerability rules
│ └── code-quality.yaml # Code quality rules
├── mcp-server/ # Custom MCP Server (Phase 3) ✅
│ ├── server.py # FastMCP 2.0 server
│ ├── semgrep_runner.py # Semgrep CLI wrapper
│ ├── requirements.txt # Python dependencies
│ ├── Dockerfile # Container definition
│ ├── docker-compose.yml # Local testing setup
│ ├── Makefile # Convenience commands
│ ├── quick-start.sh # One-command startup
│ ├── test-server.sh # Integration tests
│ └── README.md # Server documentation
├── scripts/ # Test and utility scripts
│ ├── test-local-scan-custom.sh
│ ├── test-local-scan-native.sh
│ └── test-local-scan-all.sh
└── tests/ # Test files and results
├── sample-code/
│ ├── vulnerable.js
│ └── vulnerable.py
└── results-*.json资源
后续步骤
已完成(第一阶段)
- ✅ 在本地安装并测试Semgrep CLI
- ✅ 创建自定义安全和代码质量规则
- ✅ 使用Cursor IDE(远程MCP服务器)进行测试
- ✅ 验证自定义规则(测试文件中有17个发现)
- ✅ 记录学习和局限性
已完成(第3阶段)✅
- ✅ 内置自定义MCP服务器 -完成了
- 使用HTTP传输实现FastMCP 2.0 - 带有混合规则加载的Semgrep CLI包装器 - Docker化,易于部署 - EC2部署指南已创建
下一步(生产就绪)
- 部署到EC2 (参见
EC2-DEPLOYMENT.md)
- 启动EC2实例 - 部署Docker容器 - 配置游标IDE
- 团队整合
- 与团队共享EC2端点 - 设置VPN或SSH隧道以确保安全 - 考虑多个实例的可用性
可选增强功能
- 添加身份验证(JWT令牌)
- 实现S3规则获取
- 添加缓存以提高性能
- Git差异扫描集成
- 指标仪表板
