项目简介
mcp-server-semgrep 是一个基于 Model Context Protocol (MCP) 的服务器,它将强大的静态代码分析工具 Semgrep 集成到 AI 助手(如 Anthropic Claude)中。通过这个服务器,AI 助手可以调用 Semgrep 工具来分析代码,检测安全漏洞,并改进代码质量。
主要功能点
- 代码扫描 (scan_directory): 对指定目录下的源代码进行 Semgrep 扫描,查找潜在的代码问题和安全漏洞。
- 规则列表 (list_rules): 列出 Semgrep 支持的规则和编程语言,帮助用户了解 Semgrep 的分析能力。
- 结果分析 (analyze_results): 分析 Semgrep 扫描结果文件,提供关于代码质量和安全问题的统计和摘要信息。
- 自定义规则 (create_rule): 允许用户创建自定义 Semgrep 规则,以满足项目特定的代码检查需求。
- 结果过滤 (filter_results): 根据严重程度、规则 ID、文件路径等条件过滤 Semgrep 扫描结果,以便用户关注特定类型的问题。
- 结果导出 (export_results): 将 Semgrep 扫描结果导出为 JSON、SARIF 或文本等多种格式,方便用户进行报告生成和进一步分析。
- 结果比较 (compare_results): 比较两次 Semgrep 扫描结果,找出代码变更引入的新问题和已修复的旧问题。
安装步骤
-
克隆仓库:
git clone https://github.com/Szowesgad/mcp-server-semgrep.git cd mcp-server-semgrep -
安装依赖: 确保你的系统已安装 Node.js v18+ 和 pnpm。然后运行:
pnpm install安装过程中会自动检查 Semgrep 是否已安装。如果未安装,会提示安装 Semgrep 的方法。
-
构建项目:
pnpm run build
服务器配置
要将 mcp-server-semgrep 集成到 MCP 客户端(例如 Claude Desktop),你需要配置客户端的服务器设置。以下是一个 'claude_desktop_config.json' 配置文件片段示例:
{ "mcpServers": { "semgrep": { "command": "node", "args": [ "/your_patch/mcp-server-semgrep/build/index.js" ], "env": { "SEMGREP_APP_TOKEN": "your_sepgrep_pro_app_token" } } } }
配置参数说明:
- '"semgrep"': 服务器名称,可以自定义,用于在 MCP 客户端中标识该服务器。
- '"command": "node"': 启动服务器的命令,这里使用 Node.js 运行时。
- '"args": [...]': 传递给启动命令的参数列表。
- '"/your_patch/mcp-server-semgrep/build/index.js"': 需要替换为 mcp-server-semgrep 项目 'build/index.js' 文件的绝对路径。 这是服务器的入口文件。
- '"env": {...}': 环境变量配置(可选)。
- '"SEMGREP_APP_TOKEN": "your_sepgrep_pro_app_token"': Semgrep Pro 应用程序令牌(如果需要)。 如果你使用 Semgrep Pro 功能,需要设置此环境变量。如果使用开源 Semgrep,可以忽略此项。
注意: MCP 客户端只需要服务器的启动命令和参数,无需关注项目代码。用户只需根据实际安装路径修改 'args' 中的路径即可。
基本使用方法
配置完成后,在 MCP 客户端中,你可以通过自然语言指令调用 Semgrep Server 提供的工具,例如:
- 扫描项目代码: "请扫描 '/projects/my-application' 目录下的代码,检查潜在的安全问题。"
- 分析 CSS 样式一致性: "分析项目中 CSS 文件的 z-index 值,找出不一致的地方。"
- 创建自定义规则: "创建一个 Semgrep 规则,检测不当使用输入消毒函数的情况。"
- 过滤 SQL 注入漏洞: "只显示与 SQL 注入漏洞相关的扫描结果。"
- 查找 Magic Number: "找出代码中所有的 Magic Number,并建议用常量替换。"
更多使用示例和规则创建方法请参考仓库中的 'README.md' 和 'USAGE.md' 文件。
信息
分类
开发者工具