MCP Server for SonarQube - allows AI assistants to query bugs, vulnerabilities, code smells, security hotspots and more
Project description
SonarQube MCP Server
基于 Python 开发的 SonarQube MCP Server,支持通过账号密码登录,自动生成 API Token,并支持注册到 Nacos MCP 注册中心。
功能特性
- 账号密码登录:自动调用 SonarQube API 生成 Token,无需手动配置 Token
- Nacos 注册:配置
NACOS_SERVER_ADDR后自动注册到 Nacos MCP 注册中心 - 多传输模式:支持 SSE(Docker/K8s 部署)和 stdio(本地调试)
- Docker/K8s 部署:完整的容器化部署支持
提供的工具
| 工具 | 说明 |
|---|---|
search_projects |
搜索 SonarQube 项目 |
list_project_branches |
列出项目分支 |
search_issues |
搜索 Bug、漏洞、代码异味 |
search_hotspots |
搜索安全热点 |
get_hotspot_detail |
获取安全热点详情 |
get_project_measures |
获取项目质量指标 |
get_quality_gate_status |
获取质量门状态 |
get_source_code |
获取源代码 |
search_rules |
搜索编码规则 |
环境变量说明
SonarQube 配置
| 变量名 | 必填 | 默认值 | 说明 |
|---|---|---|---|
SONARQUBE_URL |
否 | https://sonarqube.xiujiadian.com |
SonarQube 服务地址 |
SONARQUBE_USERNAME |
是 | - | SonarQube 登录用户名 |
SONARQUBE_PASSWORD |
是 | - | SonarQube 登录密码 |
MCP Server 配置
| 变量名 | 必填 | 默认值 | 说明 |
|---|---|---|---|
MCP_SERVICE_NAME |
否 | sonarqube-mcp-server |
MCP 服务名称(Nacos 注册名称) |
MCP_HOST |
否 | 0.0.0.0 |
监听地址 |
MCP_PORT |
否 | 18001 |
监听端口 |
MCP_TRANSPORT |
否 | sse(有Nacos)/ stdio(无Nacos) |
传输模式:sse 或 stdio |
Nacos 配置(可选)
不配置
NACOS_SERVER_ADDR时,服务以标准 FastMCP 模式运行,不注册到 Nacos。
| 变量名 | 必填 | 默认值 | 说明 |
|---|---|---|---|
NACOS_SERVER_ADDR |
否 | - | Nacos 服务地址,如 192.168.1.100:8848 |
NACOS_NAMESPACE |
否 | public |
Nacos 命名空间 |
NACOS_USERNAME |
否 | - | Nacos 用户名(开启鉴权时需要) |
NACOS_PASSWORD |
否 | - | Nacos 密码(开启鉴权时需要) |
安装
从 PyPI 安装(推荐)
pip install sonarqube-mcp-server
# 或使用 uvx 免安装运行
uvx sonarqube-mcp-server
从源码安装
git clone https://github.com/YOUR_USERNAME/sonarqube-mcp-server.git
cd sonarqube-mcp-server
pip install .
快速启动
PyPI 安装后使用(stdio 模式)
export SONARQUBE_USERNAME=your_username
export SONARQUBE_PASSWORD=your_password
sonarqube-mcp-server
本地开发(stdio 模式)
pip install -e .
export SONARQUBE_USERNAME=your_username
export SONARQUBE_PASSWORD=your_password
python3 -m sonarqube_mcp_server.server
Docker 部署
构建镜像
docker build -t sonarqube-mcp-server:1.0.0 .
最简启动(无 Nacos)
docker run -d \
--name sonarqube-mcp-server \
-p 18001:18001 \
-e SONARQUBE_USERNAME=your_username \
-e SONARQUBE_PASSWORD=your_password \
sonarqube-mcp-server:1.0.0
指定 SonarQube 地址
docker run -d \
--name sonarqube-mcp-server \
-p 18001:18001 \
-e SONARQUBE_URL=https://your-sonarqube.example.com \
-e SONARQUBE_USERNAME=your_username \
-e SONARQUBE_PASSWORD=your_password \
sonarqube-mcp-server:1.0.0
启用 Nacos 注册(指定服务名称)
docker run -d \
--name sonarqube-mcp-server \
-p 18001:18001 \
-e SONARQUBE_URL=https://your-sonarqube.example.com \
-e SONARQUBE_USERNAME=your_username \
-e SONARQUBE_PASSWORD=your_password \
-e NACOS_SERVER_ADDR=192.168.1.100:8848 \
-e NACOS_NAMESPACE=public \
-e NACOS_USERNAME=nacos \
-e NACOS_PASSWORD=nacos \
-e MCP_SERVICE_NAME=sonarqube-mcp-server \
sonarqube-mcp-server:1.0.0
说明:
MCP_SERVICE_NAME是注册到 Nacos 的服务名称,AI 客户端通过此名称发现该 MCP 服务。默认值为sonarqube-mcp-server,同一 Nacos 部署多个实例时需要区分名称。
自定义端口
docker run -d \
--name sonarqube-mcp-server \
-p 18002:18002 \
-e SONARQUBE_USERNAME=your_username \
-e SONARQUBE_PASSWORD=your_password \
-e MCP_PORT=18002 \
sonarqube-mcp-server:1.0.0
Docker Compose 部署
创建 .env 文件:
SONARQUBE_URL=https://your-sonarqube.example.com
SONARQUBE_USERNAME=your_username
SONARQUBE_PASSWORD=your_password
NACOS_SERVER_ADDR=192.168.1.100:8848
NACOS_NAMESPACE=public
NACOS_USERNAME=nacos
NACOS_PASSWORD=nacos
MCP_SERVICE_NAME=sonarqube-mcp-server
启动:
docker-compose up -d
Kubernetes 部署
-
修改
deploy/k8s/configmap.yaml中的非敏感配置:SONARQUBE_URLMCP_SERVICE_NAME(修改 Nacos 注册名称)NACOS_NAMESPACE
-
修改
deploy/k8s/secret.yaml中的敏感配置(base64 编码):echo -n "your_username" | base64 echo -n "your_password" | base64
-
部署:
kubectl apply -f deploy/k8s/
MCP 客户端配置
SSE 模式(Docker/K8s)
{
"mcpServers": {
"sonarqube": {
"url": "http://your-host:18001/sse"
}
}
}
stdio 模式(本地)
{
"mcpServers": {
"sonarqube": {
"command": "sonarqube-mcp-server",
"env": {
"SONARQUBE_URL": "https://your-sonarqube.example.com",
"SONARQUBE_USERNAME": "your_username",
"SONARQUBE_PASSWORD": "your_password"
}
}
}
}
健康检查
服务启动后,可通过以下方式检查端口是否正常:
# 检查端口连通性
python3 -c "import socket; s=socket.socket(); s.settimeout(3); s.connect(('127.0.0.1',18001)); s.close(); print('healthy')"
# 查看容器状态
docker ps | grep sonarqube-mcp-server
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sonarqube_mcp_server-1.0.0.tar.gz.
File metadata
- Download URL: sonarqube_mcp_server-1.0.0.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a9edd31ef398ffb3f7499ba1fd2f25ec79648620f429942fa28dedb53cd74ea
|
|
| MD5 |
f9f5dace6a75788a93782ee13eb0318c
|
|
| BLAKE2b-256 |
713e190f36b0ee7d24cfb1824f98ecf69cef47f21639ac0a3ef2431429330784
|
File details
Details for the file sonarqube_mcp_server-1.0.0-py3-none-any.whl.
File metadata
- Download URL: sonarqube_mcp_server-1.0.0-py3-none-any.whl
- Upload date:
- Size: 12.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c81ced1af93b6dd2322a651a65a72310cf5a8e77275d4de7f9ffae947884dcbe
|
|
| MD5 |
0f61fc594f56617d64576db3c7797a5f
|
|
| BLAKE2b-256 |
ada129a433db751e1840252bd2fc8f66437e1b325f7da05bedf8ec5f8bb4023f
|