MCP Server Semgrep
一个符合模型上下文协议(Model Context Protocol)的服务器,集成了 Semgrep 静态分析工具和 Anthropic Claude 等 AI 助手,通过对话式界面实现高级代码分析、安全漏洞检测和代码质量改进。
README
MCP Server Semgrep
技术支持:
关于本项目
本项目最初的灵感来自于 Semgrep 工具、Replit 团队 及其 Agent V2 的强大功能,以及 stefanskiasan/semgrep-mcp-server 的实现,但经过重大架构变更,已得到发展,从而增强并简化了安装和维护。
MCP Server Semgrep 是一个符合 模型上下文协议 的服务器,它将强大的 Semgrep 静态分析工具与 Anthropic Claude 等 AI 助手集成。它可以通过对话界面直接实现高级代码分析、安全漏洞检测和代码质量改进。
集成优势
对于开发人员和开发团队:
- 整体源代码分析 - 检测整个项目中的问题,而不仅仅是单个文件
- 主动错误检测 - 在潜在问题成为关键错误之前识别它们
- 持续代码质量改进 - 定期扫描和重构可逐步改进代码库
- 风格一致性 - 识别和修复代码中的不一致之处,例如:
- CSS 中任意的 z-index 层
- 不一致的命名约定
- 代码重复
- 使用“魔法数字”而不是命名常量
对于安全:
- 已知漏洞的自动代码验证 - 扫描已知的安全问题模式
- 自定义安全规则 - 创建项目特定的规则
- 团队教育 - 通过检测潜在问题来教授安全编程实践
对于项目维护和开发:
- “实时”文档 - AI 可以解释为什么代码片段存在问题以及如何修复它
- 减少技术债务 - 系统地检测和修复问题区域
- 改进代码审查 - 自动检测常见问题,从而可以将精力集中在更复杂的问题上
主要特点
- 与官方 MCP SDK 直接集成
- 简化的架构,具有整合的处理程序
- 简洁的 ES 模块实现
- 高效的错误处理和路径验证,以确保安全
- 提供英语和波兰语的界面和文档
- 全面的单元测试
- 广泛的文档
- 跨平台兼容性(Windows、macOS、Linux)
- 灵活的 Semgrep 安装检测和管理
功能
Semgrep MCP Server 提供以下工具:
- scan_directory: 扫描源代码以查找潜在问题
- list_rules: 显示 Semgrep 支持的可用规则和语言
- analyze_results: 详细分析扫描结果
- create_rule: 创建自定义 Semgrep 规则
- filter_results: 按各种条件过滤结果
- export_results: 以各种格式导出结果
- compare_results: 比较两组结果(例如,更改前后)
常见用例
- 部署前的代码安全分析
- 检测常见的编程错误
- 在团队中强制执行编码标准
- 重构和提高现有代码的质量
- 识别样式和代码结构中的不一致之处(例如,CSS、组件组织)
- 开发人员关于最佳实践的教育
- 验证修复的正确性(比较扫描前后)
安装
前提条件
- Node.js v18+
- TypeScript(用于开发)
选项 1:从 Smithery.ai 安装(推荐)
安装和使用 MCP Server Semgrep 的最简单方法是通过 Smithery.ai:
- 访问 Smithery.ai 上的 MCP Server Semgrep
- 按照安装说明将其添加到您的 MCP 兼容客户端
- 配置任何可选设置,例如 Semgrep API 令牌
这是 Claude Desktop 和其他 MCP 客户端的推荐方法,因为它会自动处理所有依赖项和配置。
选项 2:从 NPM 注册表安装
# 使用 npm
npm install -g mcp-server-semgrep
# 使用 pnpm
pnpm add -g mcp-server-semgrep
# 使用 yarn
yarn global add mcp-server-semgrep
该软件包也可在其他注册表上找到:
选项 3:从 GitHub 安装
# 使用 npm
npm install -g git+https://github.com/Szowesgad/mcp-server-semgrep.git
# 使用 pnpm
pnpm add -g git+https://github.com/Szowesgad/mcp-server-semgrep.git
# 使用 yarn
yarn global add git+https://github.com/Szowesgad/mcp-server-semgrep.git
选项 4:本地开发设置
- 克隆存储库:
git clone https://github.com/Szowesgad/mcp-server-semgrep.git
cd mcp-server-semgrep
- 安装依赖项(支持所有主要的包管理器):
# 使用 pnpm(推荐)
pnpm install
# 使用 npm
npm install
# 使用 yarn
yarn install
- 构建项目:
# 使用 pnpm
pnpm run build
# 使用 npm
npm run build
# 使用 yarn
yarn build
注意: 安装过程将自动检查 Semgrep 的可用性。如果未找到 Semgrep,您将收到有关如何安装它的说明。
Semgrep 安装选项
Semgrep 可以通过多种方式安装:
-
通过包管理器:
# 使用 pnpm pnpm add -g semgrep # 使用 npm npm install -g semgrep # 使用 yarn yarn global add semgrep -
Python pip:
pip install semgrep -
Homebrew (macOS):
brew install semgrep -
Linux:
sudo apt-get install semgrep # 或 curl -sSL https://install.semgrep.dev | sh -
Windows:
pip install semgrep
与 Claude Desktop 集成
有两种方法可以将 MCP Server Semgrep 与 Claude Desktop 集成:
方法 1:通过 Smithery.ai 安装(推荐)
- 访问 Smithery.ai 上的 MCP Server Semgrep
- 单击“在 Claude Desktop 中安装”
- 按照屏幕上的说明进行操作
方法 2:手动配置
- 安装 Claude Desktop
- 更新 Claude Desktop 配置文件 (
claude_desktop_config.json) 并将其添加到您的服务器部分:
{
"mcpServers": {
"semgrep": {
"command": "node",
"args": [
"/your_path/mcp-server-semgrep/build/index.js"
],
"env": {
"SEMGREP_APP_TOKEN": "your_semgrep_app_token"
}
}
}
}
- 启动 Claude Desktop 并开始询问有关代码分析的问题!
使用示例
项目扫描
你能扫描一下 /projects/my-application 目录中的源代码,看看是否有潜在的安全问题吗?
样式一致性分析
分析项目 CSS 文件中的 z-index 值,并识别不一致之处和潜在的图层冲突。
创建自定义规则
创建一个 Semgrep 规则,用于检测输入清理函数的不当使用。
过滤结果
只显示与 SQL 注入漏洞相关的扫描结果。
识别有问题模式
查找代码中的所有“魔法数字”,并建议用命名常量替换它们。
创建自定义规则
您可以为项目的特定需求创建自定义规则。以下是您可以创建的规则示例:
用于检测不一致 z-index 的规则:
rules:
- id: inconsistent-z-index
pattern: z-index: $Z
message: "Z-index $Z 可能不符合项目的分层系统"
languages: [css, scss]
severity: WARNING
用于检测已弃用导入的规则:
rules:
- id: deprecated-import
pattern: import $X from 'old-library'
message: "您正在使用已弃用的库。考虑使用 'new-library'"
languages: [javascript, typescript]
severity: WARNING
开发
测试
pnpm test
项目结构
├── src/
│ ├── config.ts # 服务器配置
│ └── index.ts # 主要入口点和所有处理程序实现
├── scripts/
│ └── check-semgrep.js # Semgrep 检测和安装助手
├── build/ # 编译后的 JavaScript(构建后)
└── tests/ # 单元测试
更多文档
有关使用该工具的详细信息,请参见:
- USAGE.md - 详细的使用说明
- README_PL.md - 波兰语文档
- examples/ - 示例有趣且实用的 Semgrep 规则 - “代码恐怖大厅”
许可证
本项目采用 MIT 许可证 - 有关详细信息,请参见 LICENSE 文件。
开发人员
- Maciej Gad - 一位半年前还找不到
bash的兽医 - Klaudiusz - 独立的以太存在,以及 Anthropic 的 Claude Sonnet 3.5-3.7 的独立实例,居住在美国加利福尼亚州 GPU 的循环中
从 CLI 新手到 MCP 工具开发者的旅程
🤖 在 Claude Code 和 MCP Tools 的终极帮助下开发
致谢
- stefanskiasan 的原始灵感
- Anthropic 的 Claude 和 MCP 协议
- Semgrep 的出色静态分析工具
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。