MCP SonarCloud服务器
  
SonarCloud的模型上下文协议(MCP)服务器实现,提供与SonarCloud项目、问题、质量门和安全热点交互的工具。
默认布局: - 配置:~/.config/lukleh/mcp-sonarcloud/config.toml- 凭据:通过MCP客户端或shell环境注入 - 国家:~/.local/state/lukleh/mcp-sonarcloud/- 隐藏物:~/.cache/lukleh/mcp-sonarcloud/
特性
此MCP服务器提供了15个全面的工具,其中包含详细的参数文档和示例:
项目管理(3个工具)
- search_my_sonarqube_项目:按页码列出您组织中的所有SonarCloud项目
- show_组件:获取特定项目或组件的详细元数据
- 组件树:遍历项目的文件/目录结构
问题(4个工具)
- search_sonar_issues_in_项目:按拉取请求、严重性(信息、低、中、高、阻塞)等搜索过滤问题
- list_issue_authors:发现对问题有贡献的SCM作者
- get_issue_changelog:检索问题的更改历史记录
- list_issue_tags:列出问题上使用的可用标签
质量门(5个工具)
- 获取_项目_质量_日期_状态:获取项目、分支或pull请求的质量门状态(OK、ERROR、WARN、NONE)
- 列表_质量_日期:列出贵组织的所有质量门
- 显示_质量_日期:获取特定质量门的详细条件
- 搜索_质量_网站:查找与质量门相关的项目
- 获取_质量_日期_项目:为项目分配质量门
安全热点(3个工具)
- 搜索热点:使用文件、分支或PR筛选器在项目中搜索安全热点
- show_热点:获取特定热点的详细信息
- 更改热点状态:更改热点的状态(TO_REVIEW或REVIEW,分辨率:已固定、安全、已确认)
所有工具都包括全面的参数描述、有效的值文档和最佳AI代理集成的使用示例。
先决条件
- Python 3.11或更高版本
- 紫外线 包管理器
- 带有API令牌的SonarCloud帐户
- Claude Code或Codex AI客户端
快速开始
1.获取SonarCloud代币
- 登录到 SonarCloud
- 点击您的头像→ 我的账户 → 安全
- 在“生成令牌”下,输入名称(例如“MCP服务器”)
- 点击 生成
- 复制并保存令牌 -你再也看不到了!
2.查找您的组织密钥
- 在SonarCloud上转到您的组织
- 请查看URL:
https://sonarcloud.io/organizations/YOUR-ORG-KEY - 这
YOUR-ORG-KEY部分是您组织的关键
3.安装服务器
# Run the published package without cloning the repository
uvx mcp-sonarcloud --write-sample-config
# Or install it once and reuse the command directly
uv tool install mcp-sonarcloud
mcp-sonarcloud --write-sample-config4.创建配置文件
上面的命令将starter配置写入 ~/.config/lukleh/mcp-sonarcloud/config.toml. 您可以随时确认已解析的运行时位置:
uvx mcp-sonarcloud --print-paths编辑 ~/.config/lukleh/mcp-sonarcloud/config.toml:
base_url = "https://sonarcloud.io"
organization = "your-org-key"
timeout_sec = 305.设置令牌环境变量
集 SONARCLOUD_TOKEN 在用于启动服务器的环境中。用于本地 shell测试,您可以直接导出它:
export SONARCLOUD_TOKEN=your-token-here6.配置您的AI客户端
克劳德代码:
claude mcp add sonarcloud \
--scope {local, user, or project} \
-e SONARCLOUD_TOKEN=your-token-here \
-- uvx mcp-sonarcloud食品法典:
codex mcp add sonarcloud \
--env SONARCLOUD_TOKEN=your-token-here \
-- uvx mcp-sonarcloud重要:替换 your-token-here 使用您真正的SonarCloud代币。
7.重新启动和测试
- 重新启动AI客户端
- 试着问:“你能列出我的SonarCloud项目吗?”
配置
文件
config.toml
- base_url (可选):SonarCloud或SonarQube基本URL - organization (可选):SonarCloud组织键 - timeout_sec (可选):HTTP超时(秒)
环境超越
环境变量是秘密的来源,也覆盖文件值 当存在时:
SONARCLOUD_TOKENSONARCLOUD_ORGANIZATIONSONARCLOUD_URLSONARCLOUD_TIMEOUT_SEC
命令行测试
您可以直接测试服务器:
# Show the resolved runtime paths
uvx mcp-sonarcloud --print-paths
# Write or refresh the default config file
uvx mcp-sonarcloud --write-sample-config
uvx mcp-sonarcloud --write-sample-config --overwrite
# Export the token for local testing
export SONARCLOUD_TOKEN=your-token-here
# Run the server with the default home-directory config
uvx mcp-sonarcloud
# Or point at a different config root
uvx mcp-sonarcloud --config-dir /path/to/config-dir本地开发
如果您想处理存储库本身:
git clone https://github.com/lukleh/mcp-sonarcloud.git
cd mcp-sonarcloud
uv sync --extra dev
uv run pytest -q
uv run mcp-sonarcloud --print-paths用法示例
自然语言查询
配置后,您可以询问您的AI客户端:
- 列出项目:“显示我的所有SonarCloud项目”
- 检查质量门:“PR 123上项目X的质量门状态如何?”
- 搜索热点:“查找项目X中的所有安全热点”
- 获取热点详细信息:“显示热点AY1234567890的详细信息”
- 更新热点:“将热点AY1234567890标记为已审核且安全”
- 搜索问题:“查找项目X的pull请求123中的所有拦截器问题”
工具示例(Python)
列出项目
# Get first page of projects
search_my_sonarqube_projects(page="1")Pull请求中的搜索问题
# Search for issues in a specific pull request
search_sonar_issues_in_projects(
projects=["my-project"],
pullRequestId="123",
ps=100
)检查质量门状态
# Get quality gate status for a pull request
get_project_quality_gate_status(
projectKey="my-project",
pullRequest="123"
)搜索安全热点
# Search hotspots in a project
search_hotspots(
projectKey="my-project",
pullRequest="123"
)
# Search hotspots in a specific file
search_hotspots(
projectKey="my-project",
files="src/main/java/com/example/MyClass.java",
branch="main"
)获取热点详细信息
# Get detailed information about a hotspot
show_hotspot(hotspot="AX1234567890")更改热点状态
# Mark a hotspot as reviewed and safe
change_hotspot_status(
hotspot="AX1234567890",
status="REVIEWED",
resolution="SAFE"
)
# Mark a hotspot for review
change_hotspot_status(
hotspot="AX1234567890",
status="TO_REVIEW"
)有效状态值:
TO_REVIEW:标记以供审查REVIEWED:标记为已审核(需要解决)
有效分辨率值(当状态=已审阅时):
FIXED:漏洞已修复SAFE:代码是安全的,不是漏洞ACKNOWLEDGED:风险已得到承认,但已被接受
故障排除
常见问题
“配置文件已存在”
--write-sample-config除非您添加,否则不会替换现有文件--overwrite- 使用
uvx mcp-sonarcloud --print-paths确认哪个配置路径处于活动状态
“SONARCLOUD_TOKEN环境变量是必需的”
- 仔细检查您的令牌是否在环境变量中设置正确
- 验证令牌周围没有多余的空格或引号
“401未经授权”
- 您的令牌可能无效或已过期
- 从SonarCloud生成新令牌并更新配置
MCP服务器不可用
- 验证服务器是否已添加:
claude mcp list或codex mcp list - 跑
uvx mcp-sonarcloud --print-paths在shell中确认程序包启动干净 - 尝试删除并重新添加服务器
- 检查您的AI客户端日志是否有错误
使用的API端点
此服务器使用以下SonarCloud API终结点:
组件/项目
GET /api/components/search-列出项目GET /api/components/show-显示组件元数据GET /api/components/tree-遍历组件层次结构
问题
GET /api/issues/search-搜索问题GET /api/issues/authors-列出问题作者GET /api/issues/changelog-获取问题更改历史记录GET /api/issues/tags-列出问题标签
质量门
GET /api/qualitygates/project_status-获取质量门状态GET /api/qualitygates/list-列出质量门GET /api/qualitygates/show-显示质量门详细信息GET /api/qualitygates/search-按质量门搜索项目GET /api/qualitygates/get_by_project-获得项目质量门
安全热点
GET /api/hotspots/search-搜索安全热点GET /api/hotspots/show-显示热点详细信息POST /api/hotspots/change_status-更改热点状态
有关API的完整文档,请参阅 SONARCLOUD_API_SUPPORT.md.
贡献
欢迎投稿!请随时提交问题或拉取请求。
释放
维护人员发布说明上线 发布.md.
许可证
MIT许可证-有关详细信息,请参阅许可证文件
