feat(glitchtip): включить встроенный MCP-сервер образа 6.1.6
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 11s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped

GLITCHTIP_ENABLE_MCP по умолчанию False (settings.py:291), поэтому
https://errors.gendsgn.ru/mcp сегодня отдаёт 404. Флаг читается в
asgi.py:181 (обёртка MCPDjangoDispatcher) и api/api.py:189 — нужен
только web-контейнеру, worker HTTP не отдаёт.

Заменяет неофициальный mcp-glitchtip (coffebar 0.1.2, 2 инструмента)
на вендорский с 17, включая detect_n_plus_one. Аутентификация —
статический APIToken в Authorization: Bearer, полный OAuth не нужен:
фолбэк в apps/oauth/provider.py:281-291 проверен чтением образа 6.1.6
(апстрим-issue #473 описывает более раннее состояние кода).

Blast radius: пересоздание только glitchtip-web, единицы секунд без
приёма событий. Схема БД и миграции не затрагиваются.
Откат: убрать строку и передеплоить.
This commit is contained in:
lekss361 2026-08-29 13:41:58 +03:00
parent c09215f779
commit b3713144ba

View file

@ -613,6 +613,34 @@ services:
DEFAULT_FROM_EMAIL: ${GLITCHTIP_FROM_EMAIL:-errors@gendsgn.ru}
ENABLE_USER_REGISTRATION: "true"
ENABLE_ORGANIZATION_CREATION: "false"
# Встроенный MCP-сервер GlitchTip (появился в 6.1, у нас образ 6.1.6).
# settings.py:291 — `GLITCHTIP_ENABLE_MCP = env.bool(..., False)`, то есть по
# умолчанию ВЫКЛЮЧЕН, и https://errors.gendsgn.ru/mcp сейчас отдаёт 404
# (проверено curl'ом 29.08). Флаг читается в двух местах: asgi.py:181
# оборачивает ASGI-приложение в MCPDjangoDispatcher, api/api.py:189 цепляет
# роуты. Отсюда — переменная нужна ТОЛЬКО web-контейнеру: worker крутит
# celery и HTTP не отдаёт вовсе.
#
# ЗАЧЕМ. Заменяет неофициальный npm-пакет mcp-glitchtip (coffebar, 0.1.2 от
# 25.08.2025, всего 2 инструмента) на вендорский с 17 инструментами, среди
# которых detect_n_plus_one и get_transaction_trend. Четыре span-инструмента
# требуют DuckDB и без него просто не отработают — остальные 13 не зависят.
#
# АУТЕНТИФИКАЦИЯ. Клиент может ходить статическим APIToken в заголовке
# `Authorization: Bearer`, полный OAuth-флоу не обязателен: провайдер имеет
# фолбэк (apps/oauth/provider.py:281-291 — «check regular API tokens ... for
# MCP clients using Bearer auth instead of the full OAuth flow»), который
# валидирует токен через apps/mcp/auth.py. Проверено чтением ИМЕННО образа
# 6.1.6: апстрим-issue #473 про 401 на Bearer описывает более раннее
# состояние кода и здесь уже неактуален. Минимальные scope токена —
# org:read + project:read + event:read (apps/mcp/server.py, _check_scopes).
#
# BLAST RADIUS. Пересоздаётся только glitchtip-web (env — свойство создания
# контейнера): единицы секунд без приёма событий, клиентские SDK буферизуют.
# Схема БД и миграции не затрагиваются — это чистый флаг роутинга.
# ОТКАТ: убрать строку, передеплоить; /mcp снова станет 404, а старый
# npm-клиент продолжит работать через /api/0/ — он этим флагом не задет.
GLITCHTIP_ENABLE_MCP: "true"
restart: always
mem_limit: 512m
# Образ glitchtip:6.1.6 НЕ содержит wget/curl (только python3) → старый