项目简介
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 客户端的实现和您的提示工程。
信息
分类
开发者工具