SonarSource/sonarqube-mcp-server
Official SonarQube MCP Server for code quality and security in AI agents
SonarQube MCP Server – AI 增强代码分析快速入门指南
它是什么 – 一个 Model Context Protocol (MCP) 服务器,让 AI 代理(Claude、Gemini、Copilot、Cursor 等)能够与 SonarQube 实例(自托管或 SonarCloud)通信。该服务器在 Docker 容器中运行,并公开一个简单的 JSON-RPC 风格 API,代理可以调用它来:
- 提交整个项目分析
- 即时分析单个代码片段
- 检索发现(缺陷、安全热点、代码异味)以用于基于聊天的编码助手。
为什么重要 – 现代 LLM 驱动的编码助手需要可信、最新的静态分析数据。通过将 SonarQube 接入 MCP 生态系统,您无需自己运行完整扫描即可直接在聊天中获取高质量、语言感知的安全和质量信号。
开始使用(最快方式)
- 打开配置生成器 – https://mcp.sonarqube.com/config-generator.html。它会询问您的 SonarQube 令牌(以及可选的 org 或服务器 URL),然后生成可直接粘贴的 JSON 片段。
- 运行 Docker 镜像 – 生成器已指向
sonarsource/sonarqube-mcp。示例命令:
将环境变量替换为生成器提供的值。docker run --init --pull=always -i --rm \ -e SONARQUBE_TOKEN=$YOUR_TOKEN \ -e SONARQUBE_ORG=$YOUR_ORG # 仅适用于 SonarCloud sonarsource/sonarqube-mcp - 将片段添加到代理的 MCP 配置中 – 每个受支持的代理(Claude、Gemini、Copilot、Cursor、VS Code 等)都有一个小型 UI/按钮,可让您粘贴 JSON。之后,代理可以开始向 SonarQube 请求分析结果。
手动安装(如果您希望自行构建/运行)
- 从 Docker Hub 拉取镜像:
docker pull sonarsource/sonarqube-mcp。 - 或者从本仓库本地构建(参见 GitHub Actions 徽章了解构建状态)。
- 所需的环境变量:
变量 含义 STORAGE_PATH服务器存储缓存和临时文件的容器内绝对路径。官方镜像会自动设置。 SONARQUBE_TOKEN您的 SonarQube 用户令牌(切勿提交)。 SONARQUBE_ORG仅适用于 SonarCloud – 组织密钥。 SONARQUBE_URL自托管 SonarQube 服务器的 URL(SonarCloud 时省略)。 SONARQUBE_PROJECT_KEY可选的默认项目;当您总是处理单个项目时很有用。 SONARQUBE_IDE_PORT当您希望 MCP 服务器与 IDE 嵌入式分析服务器通信时,SonarQube for IDE 使用的端口(在 Linux 上添加 --network=host)。
如何连接到热门 AI 代理
本仓库为许多代理提供了现成片段。模式相同:mcpServers.sonarqube 下的 JSON 对象,告诉代理要运行哪个命令(docker run … sonarsource/sonarqube-mcp)以及要注入哪些环境变量。
| 代理 | 粘贴片段的位置 |
|---|---|
| Claude | claude mcp add sonarqube …(参见 Claude Code 部分) |
| Gemini | gemini extensions install https://github.com/SonarSource/sonarqube-agent-plugins 然后设置环境变量 |
| GitHub Copilot CLI | copilot mcp add UI 或编辑 ~/.copilot/mcp-config.json |
| Cursor | 点击 README 中提供的 URL 的 Cursor 页面上的 Install 按钮 |
| VS Code | 点击 VS Code 部分下的徽章 – 它会打开预填的安装向导 |
| Windsurf、Zed、Kiro、Antigravity | 类似的基于 JSON 的配置文件 – 只需从相应的可折叠部分复制块即可 |
所有片段都遵循相同的形状,例如 SonarCloud:
{
"command": "docker",
"args": ["run","--init","--pull=always","-i","--rm","-e","SONARQUBE_TOKEN","-e","SONARQUBE_ORG","sonarsource/sonarqube-mcp"],
"env": {"SONARQUBE_TOKEN":"<YOUR_TOKEN>","SONARQUBE_ORG":"<YOUR_ORG>"}
}
将占位符替换为您的真实令牌/组织。
安全最佳实践(README 中强调)
- 切勿在命令行上放置令牌 – 它会出现在 shell 历史中。请使用所示的
-e环境变量。 - 切勿提交令牌 – 将其保存在环境变量或机密存储中(GitHub Secrets、Copilot MCP secrets 等)。
- 定期拉取镜像(
--pull=always)以获取最新的安全修复。
何时使用?
- 基于聊天的代码审查 – 询问 Claude 或 Gemini“此 PR 有哪些安全问题?”,代理将通过 MCP 查询 SonarQube 并将发现包含在其回答中。
- IDE 集成助手 – SonarLint/IDE 插件可以调用 MCP 服务器以获取更丰富的上下文,用于即时建议。
- CI/CD 流水线 – 在启用 Copilot 的流水线中添加 MCP 服务器作为步骤,以自动在构建日志中显示 SonarQube 发现。
接下来去哪里?
- 阅读完整的 SonarQube 产品文档:https://www.sonarsource.com/products/sonarqube/。
- 探索 MCP 协议规范(在 SonarSource 文档中搜索“Model Context Protocol”)以了解请求/响应格式。
- 如果您需要自定义行为(例如过滤某些规则类型),请 fork 仓库并修改服务器代码 – CI 徽章显示当前构建健康状态。
TL;DR – SonarQube MCP Server 是一个轻量级的基于 Docker 的桥接器,任何 LLM 驱动的编码助手都可以通过它查询 SonarQube 获取最新的质量和安全分析。使用配置生成器设置,运行容器,将 JSON 片段添加到代理中,您将在 AI 驱动的工作流中获得可信的静态分析数据。
相关
- 项目
- 项目
- 项目
- 项目
- 项目