项目简介

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 扫描结果,找出代码变更引入的新问题和已修复的旧问题。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/Szowesgad/mcp-server-semgrep.git
    cd mcp-server-semgrep
  2. 安装依赖: 确保你的系统已安装 Node.js v18+ 和 pnpm。然后运行:

    pnpm install

    安装过程中会自动检查 Semgrep 是否已安装。如果未安装,会提示安装 Semgrep 的方法。

  3. 构建项目:

    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' 文件。

信息

分类

开发者工具