BugPilot MCP Server
BugPilot
基于AI的工程缺陷智能分析代理
核心架构:BugPilot运行在清晰的端到端解耦流水线上: React / Vite → FastAPI后端 → ReAct编排器 → 专业代理 → MCP客户端 → MCP服务器 → 10个只读工具 → SQLite数据库(合成Jira数据)。
1. 系统架构
┌─────────────────────────────────────────────────────────────────────────────┐
│ React / Vite Frontend (TypeScript) │
└──────────────────────────────────────┬──────────────────────────────────────┘
│ HTTP REST API (JWT + RBAC + Tenant Isolation)
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ FastAPI Backend (Port 8000) │
└──────────────────────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ ReAct Orchestrator Agent │
│ Dynamic reasoning loop: Goal → LLM Decision → Tool Call → │
│ Observation → Next Decision → FINISH │
│ [Groq Primary API + Local Ollama Fallback] │
└───────────┬──────────────────────────┼──────────────────────────┬───────────┘
│ │ │
▼ ▼ ▼
┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐
│ Bug Analyst Agent │ │ Trend Analyst Agent │ │ Risk Analyst Agent │
└───────────┬──────────┘ └──────────┬───────────┘ └──────────┬───────────┘
│ │ │
└──────────────────────────┼──────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ MCP Client │
│ Dynamic tool discovery, timeout & sandboxing │
└──────────────────────────────────────┬──────────────────────────────────────┘
│ stdio JSON-RPC Transport
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ MCP Server (mcp_server) │
│ Exposes 10 Strict READ-ONLY Tools │
└──────────────────────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ AnalyticsService │
│ Deterministic metric calculation & statistical trends │
└──────────────────────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ DataProvider Interface (SQLDataProvider / SQLite) │
│ Multi-tenant tenant isolation (`organization_id`) │
└──────────────────────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ SQLite Database (`sqlite:///./bugpilot.db`) │
│ Realistic Jira-style Defect Catalog, Sprints, Users & Audit Trails │
└─────────────────────────────────────────────────────────────────────────────┘严格的数据访问契约
✅ Agent → MCP Client → MCP Server → AnalyticsService → DataProvider → SQLite Data
❌ Agent → Direct Database Access (FORBIDDEN)
❌ Agent → Direct Data File Reading (FORBIDDEN)
❌ External Vector Database / RAG dependencies (FORBIDDEN)代理仅通过动态发现的MCP工具进行交互,确保沙箱隔离和完全可测试性。
Related MCP server: sqlite-analyst
2. 10个MCP工具参考
所有10个工具均为严格的只读工具,按租户范围限定(org_id),并通过MCP协议动态发现:
# | 工具名称 | 必需/可选参数 | 描述及返回证据 |
1 |
|
| 通过关键词在问题键、标题、摘要或描述中搜索缺陷。 |
2 |
|
| 检索单个缺陷的完整详细信息(严重程度、优先级、根本原因、业务影响、环境、复现步骤、修复版本)。 |
3 |
|
| 聚合缺陷计数、开放与已解决分布以及严重程度细分。 |
4 |
|
| 月度创建与解决趋势以及历史冲刺完成速度。 |
5 |
|
| 按存在天数降序排列的开放缺陷,以突出SLA风险。 |
6 |
|
| 从已解决/已关闭状态转回开放/进行中状态的缺陷( |
7 |
|
| 组件级风险评分(0–100)、活跃开放问题数量及影响范围指标。 |
8 |
|
| 修复版本/发布就绪评估、总体风险评分及部署决策。 |
9 |
|
| 按时间顺序的状态转换历史、重新打开时间戳及开发者讨论评论。 |
10 |
|
| 共享组件上下文、技术根本原因或显式关联问题ID的相关缺陷。 |
3. 动态ReAct编排与比较分析
编排器代理基于真正的**推理+行动(ReAct)**循环运行:
意图与领域外防护 — 早期检查过滤非工程类查询,避免浪费LLM/工具调用。
动态工具选择 — LLM根据查询、动态发现的工具以及累积的观察结果决定每个行动(
CALL_TOOL、DELEGATE或FINISH)。迭代多候选检查 — 对于比较和排序查询("分析认证缺陷并识别风险最高的问题"),
search_bugs发现候选对象,编排器在允许FINISH之前迭代地对每个候选缺陷调用get_bug,确保收集完整的技术证据(根本原因、影响范围、复现步骤)。差异化证据驱动的风险评分 — 评估严重程度、优先级、状态、生产环境、安全影响(例如SOC2/会话劫持)以及技术根本原因(例如竞态条件、崩溃)。生成非饱和评分(0.0–99.5),避免人为的100/100平局。
反思代理质量评估 — 根据真实MCP数据验证生成的报告,防止幻觉并确保准确报告。
4. 多租户与RBAC安全
租户隔离 — 每条数据库记录(
issues、sprints、users、audit_logs)均严格按organization_id(例如org-acme)限定范围。跨组织数据访问在存储库和MCP层被阻止。基于角色的访问控制(RBAC):
管理员 — 完全访问权限、用户管理和问题管理。
工程师/开发者 — 创建、更新、转换和分析问题。
查看者 — 对问题、分析和报告的只读访问权限。
密钥管理 — 无硬编码的密钥或凭据。JWT密钥、API密钥和环境变量严格从
.env加载,并排除在版本控制之外。
5. 技术栈
层 | 组件 | 技术 |
前端 | 交互式UI | React 18 + TypeScript + Vite |
后端API | REST API服务器 | FastAPI + Uvicorn + Pydantic v2 |
编排 | 代理循环 | ReAct代理框架 + 专业委派 |
LLM网关 | 推理引擎 | Groq API( |
工具协议 | 工具层 | 官方Python MCP SDK( |
数据层 | 持久化数据库 | SQLAlchemy 2.0 ORM + SQLite( |
安全 | 认证与RBAC | PyJWT(HS256)+ Passlib(bcrypt)+ 基于请求头的租户范围限定 |
质量 | 反思与测试 | 反思代理基础验证 + Pytest(329个测试,100%通过) |
6. 设置与执行指南
前提条件
Python 3.12+
Node.js 18+(用于前端)
Groq API密钥(可选 — 应用无需密钥即可运行,回退到本地Ollama或确定性模式)
1. 后端设置
# Clone and enter project
git clone <repo-url> bugpilot
cd bugpilot
# Create and activate virtual environment
python -m venv .venv
# Windows: .\.venv\Scripts\activate | macOS/Linux: source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Configure environment (defaults to SQLite with zero setup)
cp .env.example .env
# Optional: add your GROQ_API_KEY to .env for live LLM responses2. 运行独立MCP服务器
# Windows
.\.venv\Scripts\python -m mcp_server.server
# macOS / Linux
.venv/bin/python -m mcp_server.server3. 运行FastAPI后端
uvicorn backend.main:app --host 127.0.0.1 --port 8000 --reload数据库在首次启动时自动创建并填充种子数据 — 无需迁移步骤。通过http://127.0.0.1:8000/api/v1/health和http://127.0.0.1:8000/docs验证其健康状态。
4. 构建并运行前端
cd frontend
npm install
npm run devVite开发服务器将/api请求代理到端口8000上的FastAPI后端(参见vite.config.ts),因此两个服务需要同时运行。
5. 执行测试套件
# Run all unit and integration tests (329 tests)
pytest tests/unit tests/integration -qLLM调用在测试期间被模拟(参见tests/conftest.py),因此测试套件无需Groq/Ollama连接即可确定性运行。由于多个测试会启动新的MCP服务器子进程,完整套件需要几分钟时间 — 这是预期行为,并非挂起。
7. 评估与质量结果
BugPilot附带一个自动化评估框架(evaluation/),该框架根据23个查询的黄金数据集对代理进行评分,涵盖11个维度 — 意图准确性、工具选择、基础验证、幻觉率、轨迹有效性、指令遵循、安全性和延迟 — 无需手动评分。使用以下命令自行运行:
python -m evaluation.run_eval最新提交的结果(evaluation_report.json):
指标 | 结果 |
任务成功率 | 21 / 23(91.3%) |
幻觉率 | 0.0% |
工具调用成功率 | 100% |
代理路由准确率 | 95.7% |
平均延迟 | 2.3秒(P95:4.6秒) |
两个未通过的查询是意图路由的边缘情况(例如,查询被分类为COMPONENT_ANALYSIS而非METRIC),而非幻觉或失败 — 代理在23个测试用例中从未编造信息。
还通过evaluation/load_tester.py包含了一个并发/负载测试(1–50个并发用户)。在最多25个并发用户时,系统保持0%的错误率;在50个并发用户时,错误率上升至约66%,表明当前的单实例设置尚未针对高并发生产流量进行调优。请参见下面的已知限制。
关于成本/令牌数量的说明:
evaluation_report.json中的estimated_total_cost_usd和average_tokens_per_query值是基于单词数量的估算值,而非真实的Groq API使用数据。请将其视为粗略指标,而非计费数据。
8. 已知限制
为便于审阅者了解情况:
并发上限 — 负载测试显示,在50个并发用户时错误率急剧上升(见上文)。当前适用于演示/小团队使用;需要连接池/异步调优以应对更大的生产流量。
估算(而非实测)的令牌/成本跟踪 — 评估报告中的成本数据是基于单词数量的启发式估算,而非真实的API使用核算。
小型黄金评估集 — 自动化评估涵盖23个代表性查询;更广泛的覆盖范围(更多对抗性/提示注入案例、更多边缘情况)将进一步增强信心。
generate_pdf.py是一个独立的文档导出工具,具有Windows特定的默认输出路径;在macOS/Linux上请传递显式的文件名参数。
This server cannot be deployed
Maintenance
Related MCP Connectors
Sandbox workspace tools: search, file read, DB queries, integrations. Returns synthetic data.
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
- dataOAuthco.thinair
PostgreSQL, MySQL, and SQL Server in one session. 26 read-only MCP tools for AI agents.
Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceExposes a SQLite database to AI assistants with structured, read-safe access. Includes five tools for schema exploration, querying, and sampling data.-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to explore and query SQLite databases through read-only tools, with defense-in-depth sandboxing preventing any data modifications.MIT
- AlicenseCqualityAmaintenanceEnables querying a repository's resolved bug history through six read-only tools, allowing agents to check patches against past failures, retrieve regression tests, and replay behavior cases to prevent regressions.6Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to safely query and explore SQLite databases through read-only, guard-protected tools that block writes, sensitive table access, and runaway queries.1MIT