使用说明
SonarQube MCP服务器
SonarQube集成的模型上下文协议(MCP)服务器。使人工智能助手能够分析代码质量,探索完整的SonarQube Web API,并与指标、问题、热点等进行交互。
特征
- 15个MCP工具 -12个高级分析工具+3个通用Web API工具
- API全面覆盖 --发现并调用SonarQube实例暴露的任何端点
- 只读模式 --可选
SONARQUBE_READ_ONLY标记以阻止写入操作 - 智能项目搜索 --按存储库名称查找项目
- 证券分析 --安全热点和漏洞检测
- 代码质量度量 --覆盖率、错误、代码异味、重复
- 质量门 --检查代码是否符合质量标准
- 枝解析 --比较各分支机构的质量
- 3个AI提示 --智能分析模板
先决条件
- Node.js 18+
- SonarQube帐户(SonarCloud或SonarQube服务器)
- SonarQube身份验证令牌
快速开始
1.通过npx配置(推荐)
添加到Cursor、Claude Desktop或任何MCP客户端-- 无需克隆或构建:
{
"mcpServers": {
"sonarqube": {
"command": "npx",
"args": ["-y", "@godrix/sonarqube-mcp"],
"env": {
"SONARQUBE_URL": "https://sonarcloud.io",
"SONARQUBE_TOKEN": "your_token_here",
"SONARQUBE_READ_ONLY": "false"
}
}
}
}
保存后重新启动MCP客户端。
或者使用一键 安装MCP服务器 此README顶部的按钮。
2.环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
SONARQUBE_URL |
没有 | https://sonarcloud.io |
SonarQube或SonarCloud基本URL |
SONARQUBE_TOKEN |
是 | -- | 身份验证令牌 |
SONARQUBE_READ_ONLY |
没有 | false |
何时 true,通过以下方式阻止写入操作 call-sonar-api |
获取您的令牌:
- SonarCloud: https://sonarcloud.io → 账户→ 安全→ 生成令牌
- SonarQube服务器:行政→ 安全→ 用户→ 生成令牌
3.地方发展(可选)
如果使用则跳过 npx --已发布的npm包包括预构建的JavaScript。
git clone https://github.com/godrix/sonarqube-mcp.git
cd sonarqube-mcp
npm install
cp .env.example .env # fill SONARQUBE_TOKEN
npm run build
将MCP客户端指向克隆:
{
"mcpServers": {
"sonarqube": {
"command": "node",
"args": ["/absolute/path/to/mcp-sonarqube/build/server.js"],
"env": {
"SONARQUBE_URL": "https://sonarcloud.io",
"SONARQUBE_TOKEN": "your_token_here",
"SONARQUBE_READ_ONLY": "false"
}
}
}
}
全局安装替代方案:
npm install -g @godrix/sonarqube-mcp
然后使用 "command": "sonarqube-mcp" 在 mcp.json.
Claude桌面配置路径 --macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json
只读示例 (可安全探索,无突变):
{
"env": {
"SONARQUBE_URL": "https://sonarcloud.io",
"SONARQUBE_TOKEN": "your_token_here",
"SONARQUBE_READ_ONLY": "true"
}
}
4.重新启动MCP客户端
重新启动MCP客户端以加载服务器。
认证
服务器使用 基本身份验证 自动令牌转换:
Your token: squ_abc123...
↓
Add colon: squ_abc123...:
↓
Base64: c3F1X2FiYzEyMy4uLjo=
↓
Header: Authorization: Basic c3F1X2FiYzEyMy4uLjo=
这种转换是自动发生的——只需在环境中提供您的令牌。
可用工具
分析工具(12)——始终为只读
| 工具 | 说明 |
|---|---|
get-projects |
列出项目(支持搜索查询) |
get-project-details |
获取项目信息 |
get-project-branches |
列出分析的分支 |
get-issues |
查找错误、漏洞、代码异味 |
get-hotspots |
需要审查的安全热点 |
get-hotspot-details |
详细热点信息 |
get-metrics |
代码质量度量 |
get-quality-gate-status |
检查质量门是否通过 |
get-project-analyses |
分析历史 |
get-source-code |
查看带有行号的源代码 |
get-duplications |
查找代码重复 |
get-rule-details |
解释违反的规则 |
Web API工具(3)-完整的SonarQube API访问
这些工具使用SonarQube的内置 /api/webservices 发现揭露 每个端点 在您的实例上可用(问题、项目、质量门、webhooks、权限等)。
| 工具 | 说明 |
|---|---|
search-api-endpoints |
按关键字查找可用的API端点 |
describe-api-endpoint |
获取端点的参数和HTTP方法 |
call-sonar-api |
执行任何API调用(GET/POST) |
推荐工作流程:
1. search-api-endpoints → find "issues search"
2. describe-api-endpoint → learn required params (projectKey, severities, ...)
3. call-sonar-api → execute the call
示例-通过通用API搜索问题:
{
"controller": "api/issues",
"action": "search",
"params": {
"projects": "my-project-key",
"severities": "CRITICAL,BLOCKER",
"ps": 50
}
}
示例——分配问题(需要 SONARQUBE_READ_ONLY=false):
{
"controller": "api/issues",
"action": "assign",
"method": "POST",
"params": {
"issue": "AU-Tpxb--iU5OvuD2FLy",
"assignee": "john.doe"
}
}
只读模式行为
当 SONARQUBE_READ_ONLY=true:
- 所有12个分析工具都正常工作(它们始终是只读的)
search-api-endpoints和describe-api-endpoint正常工作call-sonar-api块 POST和变异GET端点(创建、更新、删除、分配等)
当 SONARQUBE_READ_ONLY=false (默认):
- API完全访问,包括写入操作
AI提示词
| 提示 | 描述 |
|---|---|
analyze-project-quality |
用洞察力完成项目分析 |
generate-quality-report |
详细的质量报告 |
prioritize-issues |
按严重程度和影响对问题进行优先级排序 |
使用示例
代码质量分析
"Show critical bugs in project 'my-app'"
"What's the code coverage of 'backend-service'?"
"Did project 'frontend' pass the quality gate?"
探索SonarQube API
"List all SonarQube API endpoints related to quality gates"
"Show parameters for api/issues/search"
"Call api/projects/search with query=my-repo"
安全审查
"Show unreviewed security hotspots"
"Explain hotspot ABC-123 in detail"
发展
使用MCP检查员进行测试
npm run dev
项目结构
@godrix/sonarqube-mcp/
├── src/
│ ├── server.ts # Main server
│ ├── config/
│ │ └── SonarQubeConfig.ts # Environment config
│ ├── services/
│ │ └── SonarQubeService.ts # API integration
│ ├── controllers/
│ │ ├── tools/
│ │ │ ├── SonarQubeToolsController.ts # Analysis tools
│ │ │ └── SonarQubeApiToolsController.ts # Generic Web API tools
│ │ └── prompts/
│ │ └── SonarQubePromptController.ts # MCP prompts
│ └── model/
│ ├── SonarQube.ts # Domain types
│ └── SonarQubeApi.ts # Web API types
├── build/ # Compiled JavaScript
├── .env.example
├── package.json
└── tsconfig.json
故障排除
令牌不工作
- 验证令牌是否完整和正确
- 检查令牌是否具有浏览权限
- 如果需要,生成新令牌
未找到项目
- 验证projectKey是否正确
- 使用
get-projects通过查询找到它 - 检查您是否可以访问SonarQube
在只读模式下操作被阻止
- 集
SONARQUBE_READ_ONLY=false启用写入操作 - 或者使用仅具有浏览权限的令牌以获得额外的安全性
连接错误
- 验证
SONARQUBE_URL是正确的 - 对于本地服务器,确保其正在运行
- 检查防火墙设置
安全
- 只读模式可通过
SONARQUBE_READ_ONLY=true - 存储在环境中的令牌(未进行版本控制)
- base64编码的基本身份验证
- 永不承诺
.env文件 - 使用具有最低所需权限的令牌
许可证
麻省理工学院
