feat(glitchtip): включить встроенный MCP-сервер образа 6.1.6 #3209

Merged
bot-backend merged 1 commit from feat/glitchtip-mcp into main 2026-08-29 10:50:24 +00:00
Collaborator

Что

Одна строка GLITCHTIP_ENABLE_MCP: "true" в окружении glitchtip-web. Остальные +27 строк — комментарий по стилю файла.

Почему

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

Заменяет неофициальный npm-клиент mcp-glitchtip (coffebar 0.1.2 от 25.08.2025, 2 инструмента) на вендорский — 17 инструментов, включая detect_n_plus_one и get_transaction_trend. Четыре span-инструмента требуют DuckDB и без него не отработают; остальные 13 от него не зависят.

Только web

Worker крутит celery и HTTP не отдаёт — переменная ему не нужна, в его блок не добавлена.

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

Статический 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, а не master: апстрим-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/ — он этим флагом не задет.

Проверка после деплоя

curl -s -o /dev/null -w '%{http_code}
' https://errors.gendsgn.ru/mcp   # ожидаем НЕ 404

⚠️ Тайминг

Деплой триггерится push'ем в main (docker-compose.prod.yml в paths). Переезд на Selectel (#3057) намечен на 30.08 — мерж стоит согласовать с этим окном.

## Что Одна строка `GLITCHTIP_ENABLE_MCP: "true"` в окружении `glitchtip-web`. Остальные +27 строк — комментарий по стилю файла. ## Почему `GLITCHTIP_ENABLE_MCP` по умолчанию `False` (`settings.py:291`), поэтому `https://errors.gendsgn.ru/mcp` сейчас отдаёт **404** (проверено curl'ом 29.08). Флаг читается в `asgi.py:181` (обёртка `MCPDjangoDispatcher`) и `api/api.py:189`. Заменяет неофициальный npm-клиент `mcp-glitchtip` (coffebar `0.1.2` от 25.08.2025, **2 инструмента**) на вендорский — **17 инструментов**, включая `detect_n_plus_one` и `get_transaction_trend`. Четыре span-инструмента требуют DuckDB и без него не отработают; остальные 13 от него не зависят. ## Только web Worker крутит celery и HTTP не отдаёт — переменная ему не нужна, в его блок не добавлена. ## Аутентификация Статический 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**, а не master: апстрим-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/` — он этим флагом не задет. ## Проверка после деплоя ``` curl -s -o /dev/null -w '%{http_code} ' https://errors.gendsgn.ru/mcp # ожидаем НЕ 404 ``` ## ⚠️ Тайминг Деплой триггерится push'ем в `main` (`docker-compose.prod.yml` в `paths`). Переезд на Selectel (#3057) намечен на 30.08 — мерж стоит согласовать с этим окном.
bot-backend added 1 commit 2026-08-29 10:46:02 +00:00
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
b3713144ba
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, единицы секунд без
приёма событий. Схема БД и миграции не затрагиваются.
Откат: убрать строку и передеплоить.
bot-backend merged commit 4a9df83209 into main 2026-08-29 10:50:24 +00:00
bot-backend deleted branch feat/glitchtip-mcp 2026-08-29 10:50:25 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#3209
No description provided.