Skip to main content
Glama
PS-minalprasad

BugPilot MCP Server

BugPilot

AI-агент для анализа дефектов в инженерии на основе ИИ

Основная архитектура: BugPilot работает на чистом, сквозном декомпозированном конвейере: React / Vite → FastAPI Backend → ReAct Orchestrator → Специализированные агенты → MCP Client → MCP Server → 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

search_bugs

query: str, limit: int = 20

Поиск дефектов по ключевому слову в ключе задачи, заголовке, сводке или описании.

2

get_bug

bug_id: str

Получение полных сведений об одном дефекте (серьезность, приоритет, первопричина, влияние на бизнес, окружение, шаги воспроизведения, версия исправления).

3

get_bug_metrics

sprint_id: Optional[str], component: Optional[str], project: Optional[str]

Агрегированные количества дефектов, распределение открытых и закрытых, разбивка по серьезности.

4

get_bug_trends

sprint_id: Optional[str], component: Optional[str], project: Optional[str]

Ежемесячные тренды создания и закрытия дефектов, историческая скорость завершения спринтов.

5

get_aging_bugs

min_age_days: float = 0.0, limit: int = 50

Открытые дефекты, отсортированные по убыванию возраста в днях, для выявления рисков SLA.

6

get_reopened_bugs

component: Optional[str], limit: int = 50

Дефекты, перешедшие из статуса "Решено/Закрыто" обратно в "Открыто/В работе" (reopen_count > 0).

7

get_component_risk

component: Optional[str], project: Optional[str]

Оценки риска на уровне компонентов (0–100), количество активных открытых задач и индикаторы радиуса поражения.

8

get_release_risk

release: Optional[str]

Оценка готовности версии исправления / релиза, общая оценка риска и вердикт по развертыванию.

9

get_bug_history

bug_id: str

Хронологическая история переходов статусов, временные метки переоткрытия и комментарии разработчиков.

10

get_related_bugs

bug_id: str, limit: int = 10

Связанные дефекты, имеющие общий контекст компонента, техническую первопричину или явные идентификаторы связанных задач.


3. Динамическая оркестрация ReAct и сравнительный анализ

Агент-оркестратор работает на основе подлинного цикла Рассуждение + Действие (ReAct):

  1. Намерение и защита от выхода за пределы домена — Ранние проверки отфильтровывают неинженерные запросы без лишних затрат LLM/инструментов.

  2. Динамический выбор инструментов — LLM решает каждое действие (CALL_TOOL, DELEGATE или FINISH) на основе запроса, динамически обнаруженных инструментов и накопленных наблюдений.

  3. Итеративная проверка нескольких кандидатов — Для сравнительных запросов и запросов ранжирования ("проанализируйте дефекты аутентификации и определите задачу с самым высоким риском") search_bugs находит кандидатов, а Оркестратор итеративно вызывает get_bug для каждого кандидата-дефекта, прежде чем разрешить FINISH, обеспечивая сбор полных технических данных (первопричина, радиус поражения, шаги воспроизведения).

  4. Дифференцированная оценка риска на основе данных — Оценивает серьезность, приоритет, статус, производственную среду, влияние на безопасность (например, SOC2/угон сессии) и технические первопричины (например, состояние гонки, сбой). Генерирует ненасыщаемые оценки (0.0–99.5), чтобы избежать искусственных совпадений 100/100.

  5. Оценка качества агентом рефлексии — Проверяет сгенерированные отчеты на соответствие эталонным данным 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 Agent Framework + Делегирование специалистам

LLM Шлюз

Механизм вывода

Groq API (llama-3.3-70b-versatile) Основной + Локальный Ollama (llama3.1:8b) Резервный

Протокол инструментов

Уровень инструментов

Официальный Python MCP SDK (mcp>=1.0.0) через stdio

Уровень данных

Постоянная БД

SQLAlchemy 2.0 ORM + SQLite (sqlite:///./bugpilot.db)

Безопасность

Аутентификация и RBAC

PyJWT (HS256) + Passlib (bcrypt) + Ограничение арендатора на основе заголовков

Качество

Рефлексия и тесты

Обоснование агентом рефлексии + Pytest (329 тестов, 100% проход)


6. Руководство по настройке и запуску

Предварительные требования

  • Python 3.12+

  • Node.js 18+ (для фронтенда)

  • Ключ API Groq (необязательно — приложение работает и без него, переходя на локальный 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 responses

2. Запуск автономного MCP-сервера

# Windows
.\.venv\Scripts\python -m mcp_server.server

# macOS / Linux
.venv/bin/python -m mcp_server.server

3. Запуск 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 dev

Dev-сервер Vite проксирует запросы /api на бэкенд FastAPI на порту 8000 (см. vite.config.ts), поэтому оба сервиса должны работать одновременно.

5. Запуск набора тестов

# Run all unit and integration tests (329 tests)
pytest tests/unit tests/integration -q

Вызовы LLM имитируются во время тестов (см. 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 тестовых случаев.

Тест на параллельность/нагрузку (1–50 одновременных пользователей) также включен через evaluation/load_tester.py. При до 25 одновременных пользователях система удерживает 0% ошибок; при 50 одновременных пользователях уровень ошибок возрастает до ~66%, что указывает на то, что текущая однопроцессная установка еще не настроена для высоконагруженного производственного трафика. См. Известные ограничения ниже.

Примечание о цифрах стоимости/токенов: значения estimated_total_cost_usd и average_tokens_per_query в evaluation_report.json являются оценками на основе подсчета слов, а не реальными данными об использовании API Groq. Относитесь к ним как к приблизительным индикаторам, а не к счетам.


8. Известные ограничения

В интересах прозрачности для рецензентов:

  • Потолок параллельности — нагрузочное тестирование показывает резкий рост уровня ошибок при 50 одновременных пользователях (см. выше). Подходит для демо/использования в небольших командах в текущем виде; потребуется пул соединений / асинхронная настройка для более крупного производственного трафика.

  • Оценка (не измерение) токенов/стоимости — цифры стоимости в отчете оценки являются эвристическими оценками на основе подсчета слов, а не реальным учетом использования API.

  • Небольшой золотой набор для оценки — автоматическая оценка охватывает 23 репрезентативных запроса; более широкое покрытие (больше состязательных/инъекционных случаев, больше пограничных случаев) еще больше укрепило бы доверие.

  • generate_pdf.py — это автономная утилита экспорта документации с путем вывода по умолчанию, специфичным для Windows; передайте явный аргумент имени файла в macOS/Linux.

---.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes a SQLite database to AI assistants with structured, read-safe access. Includes five tools for schema exploration, querying, and sampling data.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to explore and query SQLite databases through read-only tools, with defense-in-depth sandboxing preventing any data modifications.
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    Enables 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.
    6
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to safely query and explore SQLite databases through read-only, guard-protected tools that block writes, sensitive table access, and runaway queries.
    1
    MIT