mcp代码安全分析器

@semgrep/mcp
1 Stars 701 次浏览 semgrep 更新于 2026-08-23

一种MCP服务器,它为Semgrep提供了一个全面的接口,使用户能够通过模型上下文协议扫描代码以查找安全漏洞、创建自定义规则并分析扫描结果。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "semgrep": {
      "args": [
        "semgrep-mcp"
      ],
      "command": "uvx"
    }
  }
}

服务介绍

Semgrep MCP 服务器

在 VS Code UV 中安装
在 VS Code Docker 中安装
在 VS Code semgrep.ai 中安装
PyPI
Docker
在 VS Code Insiders 中安装
在 VS Code Insiders 中安装

一个用于通过 Semgrep 扫描代码中安全漏洞的MCP服务器。保护你的vibe coding! 😅

模型上下文协议 (MCP) 是一种标准化API,它允许LLMs、代理和像Cursor、VS Code、Windsurf等IDE或任何支持MCP的东西获得专门的帮助、上下文,并利用工具的力量。Semgrep是一种快速且确定性的静态分析工具,它可以语义理解许多语言,并自带超过5,000条规则。🛠️

[!NOTE]
此测试版项目正在积极开发中,我们非常希望得到您的反馈、错误报告、功能请求以及代码贡献。请加入#mcp 社区Slack频道!

目录

开始使用

使用 uv 作为 CLI 命令运行 python 包

uvx semgrep-mcp # see --help for more options

或作为 docker 容器 运行:

docker run -i --rm ghcr.io/semgrep/mcp -t stdio 

光标

示例 mcp.json

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"],
      "env": {
        "SEMGREP_APP_TOKEN": "<token>"
      }
    }
  }
}

在您的 .cursor/rules 中添加一条指令以自动使用

Always scan code generated using Semgrep for security vulnerabilities

托管服务器

[!WARNING]
这是一个实验性服务器,可能会出现问题。一旦 MCP 规范在未来不久支持 HTTP 流式传输和 OAuth,它将获得新功能。 🚀

mcp.json

{
  "mcpServers": {
    "semgrep": {
      "url": "https://mcp.semgrep.ai/sse"
    }
  }
}

演示

API

工具

使 LLM 能够执行操作、进行确定性计算并与外部服务交互。

代码扫描

  • security_check: 扫描代码中的安全漏洞
  • semgrep_scan: 使用给定的配置字符串扫描代码文件中的安全漏洞
  • semgrep_scan_with_custom_rule: 使用自定义 Semgrep 规则扫描代码文件

理解代码

  • get_abstract_syntax_tree: 输出代码的抽象语法树 (AST)

元数据

  • supported_languages: 返回 Semgrep 支持的语言列表
  • semgrep_rule_schema: 获取最新的 semgrep 规则 JSON Schema

提示

可重用的提示,以标准化常见的 LLM 交互。

  • write_custom_semgrep_rule: 返回一个帮助编写 Semgrep 规则的提示

资源

向 LLM 暴露数据和内容

  • semgrep://rule/schema: 使用 JSON schema 的 Semgrep 规则 YAML 语法规范
  • semgrep://rule/{rule_id}/yaml: 从 Semgrep 注册表中获取完整的 Semgrep 规则 YAML 格式

用法

此 Python 包发布为 semgrep-mcp,可以使用 pippipxuvpoetry 或任何 Python 包管理器安装和运行。

$ pipx install semgrep-mcp
$ semgrep-mcp --help

Usage: semgrep-mcp [OPTIONS]

  Entry point for the MCP server

  Supports both stdio and sse transports. For stdio, it will read from stdin
  and write to stdout. For sse, it will start an HTTP server on port 8000.

Options:
  -v, --version                Show version and exit.
  -t, --transport [stdio|sse]  Transport protocol to use (stdio or sse)
  -h, --help                   Show this message and exit.

标准输入/输出 (stdio)

stdio 传输通过标准输入和输出流实现通信。这对于本地集成和命令行工具特别有用。更多详情请参阅规范

Python

semgrep-mcp

默认情况下,Python 包将以 stdio 模式运行。因为它使用的是标准输入和输出流,看起来工具似乎挂起且没有任何打印输出,但这是正常的。

Docker

该服务器已发布到 Github 的容器注册表 (ghcr.io/semgrep/mcp)

docker run -i --rm ghcr.io/semgrep/mcp -t stdio

默认情况下,Docker 容器处于 SSE 模式,因此你需要在镜像名称后加上 -t stdio 并以 -i 选项运行,以便在交互模式下运行。

服务器发送事件 (SSE)

SSE 传输通过 HTTP POST 请求支持从服务器到客户端的流式传输以及客户端到服务器的通信。更多详情请参阅规范

默认情况下,服务器将在 0.0.0.0:8000/sse 监听客户端连接。要更改这些设置,请设置 FASTMCP_* 环境变量。必须运行服务器才能让客户端连接到它。

Python

semgrep-mcp -t sse

默认情况下,Python 包将以 stdio 模式运行,因此你需要包含 -t sse

Docker

docker run -p 8000:0000 ghcr.io/semgrep/mcp

Semgrep 应用安全平台

若要选择性地连接到 Semgrep 应用安全平台:

  1. 登录 或注册
  2. 设置 页面生成令牌
  3. 将其添加到你的环境变量中
    • CLI (export SEMGREP_APP_TOKEN=<token>)

    • Docker (docker run -e SEMGREP_APP_TOKEN=<token>)

    • MCP 配置 JSON

      "env": {
        "SEMGREP_APP_TOKEN": "<token>"
      }
      

[!TIP]
如有需要,请联系 support@semgrep.com。☎️

集成

Cursor IDE

向你的全局或项目特定配置文件 ~/.cursor/mcp.json.cursor/mcp.json 添加以下 JSON 块:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

cursor MCP 设置

更多信息请参见cursor 文档

VS Code / Copilot

点击此 README 顶部的安装按钮以进行最快速的安装。

手动配置

在 VS Code 中将以下 JSON 块添加到你的用户设置(JSON)文件中。你可以通过按 Ctrl + Shift + P 并键入 Preferences: Open User Settings (JSON) 来完成此操作。

{
  "mcp": {
    "servers": {
      "semgrep": {
        "command": "uvx",
        "args": ["semgrep-mcp"]
      }
    }
  }
}

可选地,你也可以将其添加到工作区中的名为 .vscode/mcp.json 的文件中:

{
  "servers": {
    "semgrep": {
      "command": "uvx",
        "args": ["semgrep-mcp"]
    }
  }
}

使用 Docker

{
  "mcp": {
    "servers": {
      "semgrep": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "ghcr.io/semgrep/mcp",
          "-t",
          "stdio"
        ]
      }
    }
  }
}

更多信息请参见VS Code 文档

Windsurf

向你的 ~/.codeium/windsurf/mcp_config.json 文件添加以下 JSON 块:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

更多信息请参见Windsurf 文档

Claude Desktop

这是一个短视频,展示了 Claude Desktop 如何使用此服务器编写自定义规则。

将以下 JSON 块添加到您的 claude_desktop_config.json 文件中:

{
  "mcpServers": {
    "semgrep": {
      "command": "uvx",
      "args": ["semgrep-mcp"]
    }
  }
}

有关更多信息,请参阅 Anthropic 文档

OpenAI

async with MCPServerStdio(
    params={
        "command": "uvx",
        "args": ["semgrep-mcp"],
    }
) as server:
    tools = await server.list_tools()

有关更多信息,请参阅 OpenAI Agents SDK 文档

自定义客户端

示例 Python SSE 客户端

请参阅 examples/sse_client.py 中的完整示例。

from mcp.client.session import ClientSession
from mcp.client.sse import sse_client


async def main():
    async with sse_client("http://localhost:8000/sse") as (read_stream, write_stream):
        async with ClientSession(read_stream, write_stream) as session:
            await session.initialize()
            results = await session.call_tool(
                "semgrep_scan",
                {
                    "code_files": [
                        {
                            "filename": "hello_world.py",
                            "content": "def hello(): print('Hello, World!')",
                        }
                    ]
                },
            )
            print(results)

[!TIP]
一些客户端库需要 URLhttp://localhost:8000/sse
而其他客户端只需要 HOSTlocalhost:8000
尝试在 Web 浏览器中打开 URL 以确认服务器正在运行且没有网络问题。

有关更多信息,请参阅 官方 SDK 文档

贡献、社区和支持从源代码运行

[!NOTE]
我们非常欢迎您提供反馈、报告错误、提出功能请求和贡献代码。请加入 #mcp 社区 Slack 频道!

有关更多信息以及如何从源代码运行 MCP 服务器的详细信息,请参阅 CONTRIBUTING.md

类似工具 🔍

社区项目 🌟

MCP 服务器注册表


Semgrep 团队 用 ❤️ 制作

相关 MCP 服务