使用说明
项目简介
Semgrep 代码分析服务器 (mcp-server-semgrep) 是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在通过集成强大的静态代码分析工具 Semgrep,为大型语言模型 (LLM) 客户端(如 Claude Desktop)提供代码安全和质量分析功能。它允许用户通过自然语言指令,利用 LLM 客户端调用 Semgrep 的各项分析能力,例如扫描代码目录、列出规则、分析结果等,从而提升代码质量和安全性。
主要功能点
- 代码安全漏洞扫描: 使用 Semgrep 扫描指定目录下的源代码,检测潜在的安全漏洞。
- 代码质量分析: 检测代码中的潜在问题,例如风格不一致、代码重复、魔术数字等,提升代码可维护性。
- 自定义规则: 支持创建自定义 Semgrep 规则,以满足特定项目的代码检查需求。
- 结果分析与过滤: 提供对 Semgrep 扫描结果的分析、过滤和导出功能,方便用户理解和处理扫描结果。
- 规则列表: 展示 Semgrep 支持的规则和语言,帮助用户选择合适的扫描配置。
- 结果对比: 比较不同版本代码的扫描结果,快速了解代码变更引入的新问题或已修复的旧问题。
安装步骤
前提条件
- Node.js v18+
安装方式
推荐使用 npm 进行全局安装:
npm install -g mcp-server-semgrep
或者,您也可以选择从 GitHub 仓库安装或进行本地开发安装,请参考仓库 README.md 文件中的详细安装指南。
Semgrep 安装
本服务器依赖 Semgrep 工具,如果您的系统中未安装 Semgrep,安装过程中脚本会自动检测并提示您安装。您可以根据提示信息,选择适合您系统的 Semgrep 安装方式,例如使用 npm, pip, brew 或 apt-get 等包管理器进行安装。
服务器配置
要将 Semgrep 代码分析服务器与 MCP 客户端(例如 Claude Desktop)连接,您需要在 MCP 客户端的配置文件中添加服务器配置信息。以下是一个 Claude Desktop 客户端配置示例,您需要将 '/path/to/mcp-server-semgrep/build/index.js' 替换为 mcp-server-semgrep 实际安装路径下的 'build/index.js' 文件路径。
{ "mcpServers": { "semgrep": { "command": "node", "args": [ "/path/to/mcp-server-semgrep/build/index.js" ], "env": { "SEMGREP_APP_TOKEN": "your_semgrep_app_token" // 可选: Semgrep Pro API Token,用于使用 Pro 规则集 } } } }
查找 'build/index.js' 路径
如果您使用 'npm install -g mcp-server-semgrep' 进行全局安装,您可以使用以下命令查找 'build/index.js' 的实际路径:
npm root -g
该命令会输出 npm 全局模块安装目录,通常为 '/usr/local/lib/node_modules' 或 '~/.npm-global/lib/node_modules'。 假设 'npm root -g' 输出为 '/usr/local/lib/node_modules',则 'build/index.js' 的完整路径可能为 '/usr/local/lib/node_modules/mcp-server-semgrep/build/index.js'。 请根据您的实际情况进行替换。
SEMGREP_APP_TOKEN (可选)
'SEMGREP_APP_TOKEN' 是 Semgrep Pro 的 API Token。 如果您拥有 Semgrep Pro 账户并希望使用 Pro 规则集进行更深入的代码分析,您可以在 'env' 配置中设置此环境变量。 如果您没有 Pro Token,可以不配置此项,服务器将使用免费的 Semgrep 规则集。
基本使用方法
配置完成后,您可以在 MCP 客户端中通过自然语言指令调用 Semgrep 代码分析服务器的功能。以下是一些使用示例:
- 扫描代码目录: "请扫描 '/projects/my-application' 目录下的代码,检查潜在的安全问题。"
- 分析 CSS 风格: "分析项目中 CSS 文件的 z-index 值,找出不一致的地方。"
- 创建自定义规则: "创建一个 Semgrep 规则,检测不安全的输入验证函数使用。"
- 过滤扫描结果: "只显示 SQL 注入漏洞的扫描结果。"
- 查找魔术数字: "找出代码中的所有魔术数字,并建议用常量替换。"
信息
分类
开发者工具