项目简介

SonarQube MCP 服务器是一个 Model Context Protocol (MCP) 实现,旨在无缝集成 SonarQube Server 或 SonarQube Cloud 的代码质量与安全能力到各种 LLM 客户端(如 Cursor、Claude Code、VS Code 等)。它允许 LLM 客户端通过标准化的 JSON-RPC 协议访问 SonarQube 的功能,包括代码分析、问题查询、质量门状态检查、指标获取等,甚至可以直接分析代码片段。

主要功能点

  • 代码分析与安全: 直接对代码片段或文件进行 SonarQube 分析,发现代码质量和安全漏洞。
  • 依赖风险查询: 查询 SonarQube 项目的软件成分分析 (SCA) 风险,获取依赖库的安全信息。(需 SonarQube Server 2025.4 企业版及更高版本并启用高级安全功能)
  • 问题管理: 搜索组织项目中的 SonarQube 问题,并能修改问题状态(接受、误报、重新打开)。
  • 质量门与质量配置: 获取项目质量门状态,列出所有质量门,以及查看支持的编程语言和规则仓库。
  • 代码度量与项目信息: 获取组件(项目、目录、文件)的代码度量数据,搜索可用指标,并查找组织的 SonarQube 项目。
  • 系统状态监控: 查询 SonarQube Server 的健康状态、系统信息、日志及存活检查。(仅限 SonarQube Server)
  • 企业与组合管理: 列出 SonarQube Cloud 中的企业和组合(仅限 SonarQube Cloud)。
  • 源代码与SCM信息: 获取 SonarQube 中文件的原始源代码及 SCM(版本控制)提交信息。
  • Webhook 管理: 创建和列出 SonarQube 组织或项目的 Webhook。

安装步骤

最简单的安装方式是使用官方 Docker 镜像。根据您是连接 SonarQube Cloud 还是 SonarQube Server,选择以下方法:

  • 连接 SonarQube Cloud:

    docker run -i --rm -e SONARQUBE_TOKEN=<您的SonarQube令牌> -e SONARQUBE_ORG=<您的SonarQube组织Key> mcp/sonarqube
    • '<您的SonarQube令牌>': 您的 SonarQube Cloud API 令牌。
    • '<您的SonarQube组织Key>': 您的 SonarQube Cloud 组织 Key。
  • 连接 SonarQube Server:

    docker run -i --rm -e SONARQUBE_TOKEN=<您的SonarQube令牌> -e SONARQUBE_URL=<您的SonarQube服务器URL> mcp/sonarqube
    • '<您的SonarQube令牌>': 您的 SonarQube Server 用户令牌。
    • '<您的SonarQube服务器URL>': 您的 SonarQube Server 基础 URL。

服务器配置 (MCP 客户端配置)

当您的 MCP 客户端(如 Cursor、Claude Code 或 VS Code)需要连接 SonarQube MCP 服务器时,它需要配置 MCP 服务器的启动命令 (command) 及其参数 (args) 才能与 MCP 服务器建立连接。以下是 JSON 格式的配置示例,您需要根据您的安装方式(Docker 或本地 JAR)以及 SonarQube 环境进行调整:

  • Docker 方式连接 SonarQube Cloud 的配置示例:

    {
      "sonarqube": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-e",
          "SONARQUBE_TOKEN",
          "-e",
          "SONARQUBE_ORG",
          "mcp/sonarqube"
        ],
        "env": {
          "SONARQUBE_TOKEN": "<您的SonarQube令牌>",
          "SONARQUBE_ORG": "<您的SonarQube组织Key>"
        }
      }
    }
    • 'command': 启动服务器的命令,这里是 'docker'。
    • 'args': 传递给 'command' 的参数列表。其中:
      • '-i', '--rm' 是 Docker 运行参数,'-i' 保持标准输入打开,'--rm' 在容器退出时自动删除。
      • '-e SONARQUBE_TOKEN', '-e SONARQUBE_ORG' 用于将环境变量传递给 Docker 容器。
      • 'mcp/sonarqube' 是官方 SonarQube MCP 服务器 Docker 镜像名称。
    • 'env': 包含 MCP 服务器运行所需的环境变量。
      • 'SONARQUBE_TOKEN': 替换为您的 SonarQube Cloud API 令牌。
      • 'SONARQUBE_ORG': 替换为您的 SonarQube Cloud 组织 Key。
  • Docker 方式连接 SonarQube Server 的配置示例:

    {
      "sonarqube": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-e",
          "SONARQUBE_TOKEN",
          "-e",
          "SONARQUBE_URL",
          "mcp/sonarqube"
        ],
        "env": {
          "SONARQUBE_TOKEN": "<您的SonarQube令牌>",
          "SONARQUBE_URL": "<您的SonarQube服务器URL>"
        }
      }
    }
    • 'command', 'args': 含义与上一个示例相同。
    • 'env':
      • 'SONARQUBE_TOKEN': 替换为您的 SonarQube Server 用户令牌。
      • 'SONARQUBE_URL': 替换为您的 SonarQube Server 基础 URL。
  • 本地 JAR 方式连接 SonarQube Server/Cloud 的配置示例:

    {
      "sonarqube": {
        "command": "java",
        "args": [
          "-jar",
          "<path_to_sonarqube_mcp_server_jar>"
        ],
        "env": {
          "STORAGE_PATH": "<path_to_your_mcp_storage>",
          "SONARQUBE_TOKEN": "<您的SonarQube令牌>",
          "SONARQUBE_ORG": "<您的SonarQube组织Key>" // 或 "SONARQUBE_URL": "<您的SonarQube服务器URL>"
        }
      }
    }
    • 'command': 启动服务器的命令,这里是 'java'。
    • 'args':
      • '-jar': 运行 JAR 文件的 Java 命令参数。
      • '<path_to_sonarqube_mcp_server_jar>': 替换为您本地 SonarQube MCP 服务器 JAR 文件的绝对路径(例如:'build/libs/sonarqube-mcp-server.jar')。
    • 'env':
      • 'STORAGE_PATH': 替换为 MCP 服务器用于存储文件的可写入目录的绝对路径。
      • 'SONARQUBE_TOKEN': 替换为您的 SonarQube API 令牌。
      • 'SONARQUBE_ORG': 如果连接 SonarQube Cloud,替换为您的组织 Key。
      • 'SONARQUBE_URL': 如果连接 SonarQube Server,替换为您的服务器 URL。

基本使用方法

配置好 MCP 客户端后,您的 LLM 应用即可通过 MCP 服务器与 SonarQube 进行交互。例如,LLM 可能会通过调用 'analyze_code_snippet' 工具来获取代码片段的质量分析结果,或者调用 'search_sonar_issues_in_projects' 来查询特定项目的代码问题。具体的交互方式取决于 LLM 客户端的实现和您的提示工程。

信息

分类

开发者工具