SonarQube集成服务

一个全面的模型上下文协议(MCP)服务器,实现AI助手与SonarQube的无缝集成,通过自然语言交互进行代码质量分析、项目管理和指标咨询。

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

使用说明

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(推荐)

  1. 克隆仓库:

    git clone https://github.com/your-org/sonarqube-mcp.git
    cd sonarqube-mcp
    
  2. 配置环境:

    # 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
    
  3. 启动服务:

    # 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
    
  4. 访问应用程序:

服务 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 **
  1. **| 本地主机: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 辅助脚本:

  1. 选项2:本地开发安装依赖项

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    pip install -r requirements.txt
    
  2. **:**配置环境

    export SONARQUBE_URL="https://your-sonarqube-instance.com"
    export SONARQUBE_TOKEN="your_sonarqube_token"
    
  3. **:**启动服务

    # Terminal 1: Start MCP Server
    python -m src.mcp_server.server
    
    # Terminal 2: Start Streamlit App
    streamlit run src/streamlit_app/app.py
    

:

  1. 选项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
    
  2. **:**部署应用程序

    kubectl apply -f k8s/mcp-server.yaml
    kubectl apply -f k8s/streamlit-app.yaml
    kubectl apply -f k8s/ingress.yaml
    
  3. : 部署监控

    kubectl apply -f k8s/monitoring/
    

(可选):

📖 文档

- 常见问题及解决方案

- 本地开发环境

- 服务配置文档

🔧 配置

环境变量 | 变量 | 描述 | 必需 | 默认值 | |----------|-------------|----------|---------| SONARQUBE_URL |(无对应中文)|(无对应中文)|(无对应中文)|(无对应中文)| | SONARQUBE_TOKEN | SonarQube 实例 URL | 是 | - | | SONARQUBE_ORGANIZATION | SonarQube 用户令牌 | 是 | - | | REDIS_URL | 组织密钥(SonarCloud)| 否 | - | redis://localhost:6379/0 | | Redis 连接 URL | 否 | CACHE_TTL | 300 | | 缓存生存时间(秒) | 否 | LOG_LEVEL | INFO |

| 日志级别 | 否 |

  1. |
  2. SonarQube令牌设置 登录到您的SonarQube实例 首选 我的账户
  3. →
    • 安全
    • 生成一个具有适当权限的新令牌:
    • 浏览项目
    • 执行分析

处理事务/管理问题

管理安全热点

{
  "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

🧪 测试 🤝 贡献(或:参与贡献) 我们欢迎投稿!请参阅我们的

贡献指南

  1. 详情请见。
  2. 开发环境设置
  3. 为仓库创建分支(或“克隆仓库”)
  4. 创建一个特性分支
  5. 进行你的更改
  6. 添加测试

运行测试套件

提交拉取请求 📄 许可证 这个项目遵循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缓存进行性能优化


httpx