使用说明
SonarQube MCP 集成
一个全面的模型上下文协议(MCP)服务器,它实现了AI助手与SonarQube之间的无缝集成,通过自然语言交互促进代码质量分析、项目管理和指标查询。
继续改进这个MCP(多路复用通信协议/管理系统/等,具体根据上下文确定)
🚀 特性
核心能力
- 自然语言接口使用对话式AI与SonarQube进行交互
- 全面的项目管理创建、管理和分析项目
- 质量指标分析实时代码质量和覆盖率指标
- 问题管理搜索、分配和跟踪代码问题
- 安全分析漏洞检测与安全热点管理
- **质量门(或质量控制点)**监控和管理质量门状态
- 交互式仪表板基于Web的用户界面,用于可视化和配置
技术特点
- MCP协议合规性全面实施模型上下文协议
- 高性能Redis 缓存和连接池
- 可扩展架构支持Kubernetes,具备水平扩展能力
- 安全第一基于令牌的身份验证和全面的安全措施
- 已准备好投入生产Docker容器、监控和备份解决方案
📋 先决条件
- Python 3.11及以上版本
- SonarQube 9.9+ (社区版或企业版)
- Docker 20.10及以上版本 (用于容器化部署)
- Kubernetes 1.25及以上版本 (用于生产部署)
- Redis (可选,用于缓存)
🛠️ 快速入门
选项1:Docker Compose(推荐)
-
克隆仓库:
git clone https://github.com/your-org/sonarqube-mcp.git cd sonarqube-mcp -
配置环境:
# Copy and edit the development environment file cp docker/environments/.env.development docker/environments/.env.development.local # Edit the file and replace 'your_sonarqube_token_here' with your actual token nano docker/environments/.env.development.local -
启动服务:
# Start all services with development configuration docker compose -f docker/compose/base/docker-compose.yml \ -f docker/compose/environments/development.yml \ --env-file docker/environments/.env.development \ up --build -
访问应用程序:
| 服务 | URL | 端口 | 凭证 |
|---|---|---|---|
| http://localhost:8501 | 8501 | - | ** |
| http://localhost:9000/sonarqube | 9000 | admin / admin | 翻译为中文是: |
| http://localhost:8001/health | 8001 | - | ** |
| http://localhost:8082 | 8082 | admin@example.com / admin | 翻译为中文为: |
| http://localhost:8081 | 8081 | - | 翻译为中文是: |
| http://localhost:8025 | 8025 | - | ** |
| 本地主机:5432 | 5432 | sonarqube / sonarqube_dev_password | ** |
- **| 本地主机:6379 | 6379 | redis_dev_password |**配置SonarQube连接
- :
- 在 http://localhost:8501 打开 Streamlit 应用
- 前往配置页面
http://localhost:9000/sonarqube - 输入SonarQube URL:
- 输入您的SonarQube令牌
测试并保存配置 📖(这个符号本身在中文中没有直接对应的翻译,它通常代表“书”或“书籍”的意思,用于表示与书籍相关的概念或内容。) 有关详细的Docker配置,请参阅
docker/README.md(文件名,可翻译为“docker/读我文件.md”或保持原样,因为文件名通常不翻译)
Docker 辅助脚本
# Make the script executable (Linux/Mac)
chmod +x scripts/docker-helper.sh
# Initial setup
./scripts/docker-helper.sh setup
# Start services
./scripts/docker-helper.sh start
# Check status and URLs
./scripts/docker-helper.sh status
./scripts/docker-helper.sh urls
# View logs
./scripts/docker-helper.sh logs mcp-server
# Open shell in container
./scripts/docker-helper.sh shell postgres
# For help with all commands
./scripts/docker-helper.sh
为了方便起见,请使用 Docker 辅助脚本:
-
选项2:本地开发安装依赖项
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt -
**:**配置环境
export SONARQUBE_URL="https://your-sonarqube-instance.com" export SONARQUBE_TOKEN="your_sonarqube_token" -
**:**启动服务
# Terminal 1: Start MCP Server python -m src.mcp_server.server # Terminal 2: Start Streamlit App streamlit run src/streamlit_app/app.py
:
-
选项3:Kubernetes生产环境部署部署基础设施
kubectl apply -f k8s/namespace.yaml kubectl apply -f k8s/secrets.yaml kubectl apply -f k8s/postgres.yaml kubectl apply -f k8s/redis.yaml -
**:**部署应用程序
kubectl apply -f k8s/mcp-server.yaml kubectl apply -f k8s/streamlit-app.yaml kubectl apply -f k8s/ingress.yaml -
: 部署监控
kubectl apply -f k8s/monitoring/
(可选):
📖 文档
- 用户文档 安装指南
- - 完整的安装与配置指南 API 文档
- 全面的API参考 故障排除指南
- 常见问题及解决方案
- 开发者文档 架构概述
- - 系统架构与设计 贡献指南
- - 如何为项目做贡献 开发环境设置
- 本地开发环境
- Docker 文档 Docker 设置指南
- - 完整的Docker配置指南 配置文件
- 服务配置文档
🔧 配置
环境变量
| 变量 | 描述 | 必需 | 默认值 |
|----------|-------------|----------|---------| SONARQUBE_URL |(无对应中文)|(无对应中文)|(无对应中文)|(无对应中文)|
| SONARQUBE_TOKEN | SonarQube 实例 URL | 是 | - |
| SONARQUBE_ORGANIZATION | SonarQube 用户令牌 | 是 | - |
| REDIS_URL | 组织密钥(SonarCloud)| 否 | - | redis://localhost:6379/0 |
| Redis 连接 URL | 否 | CACHE_TTL | 300 |
| 缓存生存时间(秒) | 否 | LOG_LEVEL | INFO |
| 日志级别 | 否 |
- |
- SonarQube令牌设置 登录到您的SonarQube实例 首选 我的账户
- →
- 安全
- 生成一个具有适当权限的新令牌:
- 浏览项目
- 执行分析
处理事务/管理问题
管理安全热点
{
"name": "list_projects",
"arguments": {
"search": "my-project",
"page": 1,
"page_size": 50
}
}
{
"name": "get_measures",
"arguments": {
"component": "my-project",
"metric_keys": "coverage,bugs,vulnerabilities,code_smells"
}
}
{
"name": "search_issues",
"arguments": {
"componentKeys": "my-project",
"severities": "MAJOR,CRITICAL",
"statuses": "OPEN"
}
}
🎯 使用示例
MCP工具使用
- 自然语言查询
- 与MCP服务器连接的AI助手:
- “给我展示一下my-project的代码覆盖率”
- “列出认证模块中的所有关键问题”
“最新构建的质量门状态如何?”
graph TB
subgraph "Client Layer"
AI[AI Assistant]
UI[Streamlit UI]
end
subgraph "Application Layer"
MCP[MCP Server]
WEB[Streamlit App]
end
subgraph "Service Layer"
SQC[SonarQube Client]
CACHE[Redis Cache]
end
subgraph "Data Layer"
SQ[SonarQube Server]
end
AI --> MCP
UI --> WEB
MCP --> SQC
WEB --> SQC
SQC --> CACHE
SQC --> SQ
“将所有安全漏洞分配给john.doe”
- 🏗️ 建筑学🔒 安全
- 基于令牌的认证确保SonarQube令牌认证的安全性
- HTTPS 强制执行所有通信在传输过程中均经过加密
- 输入验证全面的输入清理和验证
- RBAC 支持通过SonarQube权限实现基于角色的访问控制
安全加固
集装箱安全最佳实践
- 📊 监控
GET /health - 健康检查
GET /_stcore/health - MCP服务器:
GET /api/system/status
Streamlit 应用:
- SonarQube:
- 指标(Prometheus)
- 请求次数和持续时间
- 缓存命中率
错误率
- 活跃连接
- 记录日志
- 结构化JSON日志记录
- 请求/响应追踪
错误追踪
性能指标
- 🚀 部署
- 生产检查清单
- [ ] 配置HTTPS/TLS证书
- [ ] 设置监控和警报
- [ ] 配置备份程序
- [ ] 实现日志聚合
- [ ] 设置资源限制和自动扩展
[ ] 配置网络策略
- [ ] 设置CI/CD流水线扩展时的考量因素
- 水平扩展MCP服务器和Streamlit应用程序是无状态的
- 缓存用于分布式缓存的Redis集群
- 负载均衡Nginx 或云负载均衡器
数据库
# Run unit tests
pytest tests/unit/ -v
# Run integration tests
pytest tests/integration/ -v
# Run with coverage
pytest --cov=src --cov-report=html
# Run linting
ruff check src/ tests/
black --check src/ tests/
mypy src/
使用 PostgreSQL 主/从复制配置 SonarQube
🧪 测试 🤝 贡献(或:参与贡献) 我们欢迎投稿!请参阅我们的
贡献指南
- 详情请见。
- 开发环境设置
- 为仓库创建分支(或“克隆仓库”)
- 创建一个特性分支
- 进行你的更改
- 添加测试
运行测试套件
提交拉取请求 📄 许可证 这个项目遵循MIT许可证授权——详见
许可证
- 文件中有详细信息。🆘 支持 文档
- **查看我们的全面(信息/服务/等,具体根据上下文确定)**文档 问题
- **通过以下方式报告错误或请求功能:**GitHub Issues(在GitHub上提交的问题或讨论) 讨论
- 参与社区讨论GitHub 讨论区
安全
请将安全问题报告至 security@yourorg.com
- 🗺️ 路线图
- 当前版本(v2.0.1)- 最新发布
- ✅ 核心MCP协议实现
- ✅ SonarQube 集成
- ✅ Streamlit 网页界面
- ✅ Docker 容器化 ✅ Kubernetes 部署✅
- 新 修复了MCP服务器端口一致性(8001)✅
- 新 改进了错误处理和会话状态管理✅
- 新 更新了与Streamlit的兼容性(v1.50+)✅ 翻译为中文是:✅(这个符号本身在中文中通常不直接翻译,它表示“正确”或“已确认”的意思,所以可以理解为“正确”或“已确认”)
- 新 增强的Docker配置和健康检查✅
新
- 生产就绪的配置模板
- 即将推出的特性(v3.0.0)
- [ ] 高级分析与报告
- [ ] 自定义质量门模板
- [ ] Webhook 集成
- [ ] 多租户支持
- [ ] 增强的安全功能
[ ] 实时通知
- [ ] 改进的缓存策略
- 未来增强功能(v4.0)
- [ ] 机器学习见解
- [ ] 高级可视化
- [ ] 插件架构
[ ] 移动应用程序
[ ] 企业功能
- 📈 性能基准(或标准)
- 响应时间大多数操作在2秒以内完成
- 吞吐量每个实例每分钟处理100+个请求
- 缓存命中率> 在正确配置下可达70%
内存使用情况
- 每个服务实例512MB以内
- 优化技巧
- 启用 Redis 缓存以提高性能
- 在高吞吐量场景中使用连接池
配置适当的资源限制
监控并调整缓存TTL值
📝 更新日志 版本1.1.0(2024年10月24日)- 稳定性和配置更新
- **🔧 修理工具或扳手的符号(具体含义需结合上下文,此处仅为符号本身)**已修复
- MCP服务器端口一致性在所有配置中将标准化的MCP服务器端口设置为8001
- 会话状态错误修复了Streamlit会话状态初始化问题
use_container_width弃用警告width="stretch"已更新 - to适用于 Streamlit 1.50 及以上版本
- Docker Compose 语法从生产配置中移除了过时的版本字段
健康检查递归 修复了MCP客户端健康检查中的无限递归问题
- **🚀 表情符号“🚀”通常表示火箭、快速前进或加速,可以翻译为“🚀”(保持原样)或根据上下文意译为“火箭”、“快速前进”等。在这里,直接保留其原样作为翻译。**改进了
- 错误处理增强错误处理,实现优雅降级
- 异步操作在MCP客户端中采用更优的异步/等待模式
- Docker 配置清理了生产覆盖项和服务定义
- 记录日志改进了结构化日志记录,增强了错误追踪能力
文档 更新了README文件,包含当前配置和故障排除信息
- **🔒(锁形符号,通常表示安全、保密或锁定的状态)**安全
- 集装箱安全改进了文件权限处理
- 网络配置更好的服务隔离和通信
生产模板
增强型生产配置模板 v1.0.0(2024-10-20)- 初始发布
- ✨(闪亮的星星或光芒闪烁的表情)
- 特点/特性
- 完整的MCP协议实现
- SonarQube与全面API覆盖的集成
- 带有实时数据的Streamlit网页界面
- 支持多环境的Docker容器化
- Kubernetes 部署配置
使用Redis缓存进行性能优化
- 全面监控和健康检查 🏆 致谢
- FastMCP - MCP协议实现
- Streamlit(注:这是一个专有名词,通常直接音译,不改变其原意) - 网络应用框架
- SonarQube(中文常译为“索纳尔库布”或直接使用其英文名,根据上下文可灵活翻译,此处提供一种常见译法) - 代码质量平台
httpx
