返回市场
mcp服务器-semgrep

mcp服务器-semgrep

作者:Szowesgad18 星标更新:2025-03-20

项目介绍

MCP Server Semgrep

smithery 徽章

动力来源:

动力来源

关于项目

MCP Server Semgrep 标志 该项目最初受到 Semgrep 工具Replit 团队及其 Agent V2,以及 stefanskiasan/semgrep-mcp-server 的实现的启发,但经过了显著的架构变化,以实现更简单和易于安装与维护。

MCP Server Semgrep 是一个符合 Model Context Protocol 的服务器,它将强大的 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:

  1. 访问 MCP Server Semgrep 在 Smithery.ai 上
  2. 按照安装说明将其添加到您的 MCP 兼容客户端
  3. 配置任何可选设置,如 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/Szowesg
 gad/mcp-server-semgrep.git

方案 4:本地开发环境设置

  1. 克隆仓库:
git clone https://github.com/Szowesgad/mcp-server-semgrep.git
cd mcp-server-semgrep
  1. 安装依赖项(支持所有主要的包管理器):
# 使用 pnpm(推荐)
pnpm install

# 使用 npm
npm install

# 使用 yarn
yarn install
  1. 构建项目:
# 使用 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 安装(推荐)

  1. 访问 MCP Server Semgrep 在 Smithery.ai 上
  2. 点击“在 Claude Desktop 中安装”
  3. 按照屏幕上的说明操作

方法 2:手动配置

  1. 安装 Claude Desktop
  2. 更新 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"
      }
    }
  }
}
  1. 启动 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/                # 单元测试

更多文档

详细的使用信息可以在以下文档中找到:

许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

开发者

  • Maciej Gad - 一名兽医,半年前还找不到 bash
  • Klaudiusz - 一个独立存在的个体,以及 Anthropic 的 Claude Sonnet 3.5-3.7 的实例,居住在美国加州 GPU 的循环中

从 CLI 新手到 MCP 工具开发者的旅程

🤖 在 Claude CodeMCP Tools 的终极帮助下开发

致谢