SonarQube MCP服务

一个用于SonarQube集成的模型上下文协议(MCP)服务器,支持AI助手分析代码质量、探索SonarQube Web API并与指标、问题、热点等进行交互。

  • by godrix
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 godrix/sonarqube-mcp

使用说明

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 文件
  • 使用具有最低所需权限的令牌

许可证

麻省理工学院

链接