Skip to main content

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) 传输模式:ssestdio

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 部署

  1. 修改 deploy/k8s/configmap.yaml 中的非敏感配置:

    • SONARQUBE_URL
    • MCP_SERVICE_NAME(修改 Nacos 注册名称)
    • NACOS_NAMESPACE
  2. 修改 deploy/k8s/secret.yaml 中的敏感配置(base64 编码):

    echo -n "your_username" | base64
    echo -n "your_password" | base64
    
  3. 部署:

    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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sonarqube_mcp_server-1.0.0.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sonarqube_mcp_server-1.0.0-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

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

Hashes for sonarqube_mcp_server-1.0.0.tar.gz
Algorithm Hash digest
SHA256 9a9edd31ef398ffb3f7499ba1fd2f25ec79648620f429942fa28dedb53cd74ea
MD5 f9f5dace6a75788a93782ee13eb0318c
BLAKE2b-256 713e190f36b0ee7d24cfb1824f98ecf69cef47f21639ac0a3ef2431429330784

See more details on using hashes here.

File details

Details for the file sonarqube_mcp_server-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sonarqube_mcp_server-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c81ced1af93b6dd2322a651a65a72310cf5a8e77275d4de7f9ffae947884dcbe
MD5 0f61fc594f56617d64576db3c7797a5f
BLAKE2b-256 ada129a433db751e1840252bd2fc8f66437e1b325f7da05bedf8ec5f8bb4023f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page