使用说明

项目简介

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 注入漏洞的扫描结果。"
  • 查找魔术数字: "找出代码中的所有魔术数字,并建议用常量替换。"

更多使用示例和详细功能说明,请参考仓库中的 README.mdUSAGE.md 文件。

信息

分类

开发者工具