Skip to main content
Glama
fers4t

bugsink-mcp

by fers4t

bugsink-mcp

Полноценный MCP-сервер для чтения и записи MCP для Bugsink (self-hosted, совместимый с Sentry-протоколом трекинг ошибок), построенный напрямую на основе OpenAPI-схемы /api/canonical/0/.

Он появился потому, что существующий пакет bugsink-mcp на npm оборачивает только часть для чтения API (list/get). Этот же покрывает всю каноническую поверхность API: закрытие, заглушение, переоткрытие и удаление проблем, комментирование, а также создание/обновление команд, проектов и релизов — плюс несколько исправлений по сравнению с оригиналом (см. Исправления по сравнению с оригиналом).

Настройка

Требуется Node.js 18.17+.

  1. В Bugsink перейдите в Account Settings → Auth Tokens и создайте токен.

  2. Добавьте сервер в ваш MCP-клиент.

Claude Code

Однострочник через claude mcp CLI:

claude mcp add bugsink \
  -e BUGSINK_URL=https://bugs.example.com \
  -e BUGSINK_TOKEN=<your token> \
  -- npx -y github:fers4t/bugsink-mcp

Это записывает эквивалент следующего в ~/.claude.json (или передайте --scope project, чтобы записать общий .mcp.json вместо локального пользовательского конфига):

{
  "mcpServers": {
    "bugsink": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "github:fers4t/bugsink-mcp"],
      "env": {
        "BUGSINK_URL": "https://bugs.example.com",
        "BUGSINK_TOKEN": "<your token>"
      }
    }
  }
}

После этого перезапустите Claude Code (или начните новую сессию) — списки MCP-инструментов загружаются при старте сессии и не подхватят изменение конфига в середине разговора.

Другие MCP-клиенты

Любой клиент, читающий карту mcpServers (Cursor, Windsurf и т.д.), может использовать ту же JSON-форму, что показана выше: укажите command: npx, args: ["-y", "github:fers4t/bugsink-mcp"] и две обязательные переменные окружения.

npx устанавливает напрямую из GitHub (без публикации в npm) и запускает скрипт prepare для компиляции TypeScript при первом использовании, а при последующих запусках использует свой локальный кэш.

Переменные окружения

Переменная

Обязательна

Описание

BUGSINK_URL

да

Базовый URL вашего экземпляра Bugsink, например https://bugs.example.com

BUGSINK_TOKEN

да

Личный API-токен (Bearer authorization)

BUGSINK_TIMEOUT_MS

нет

Тайм-аут запроса в мс (по умолчанию 15000, ограничено 1000–120000)

См. .env.example. Никогда не коммитьте реальный токен — сервер читает его только из окружения.

Related MCP server: Sierra Navigator Cloud

Инструменты

Подключение

Инструмент

Описание

test_connection

Проверяет работу URL/токена и сообщает, сколько команд видно

Команды

Инструмент

Описание

list_teams

Получить список всех команд

get_team

Получить команду по uuid

create_team

Создать команду

update_team

Переименовать команду или изменить её видимость

Проекты

Инструмент

Описание

list_projects

Список проектов, опционально отфильтрованный по команде

get_project

Получить проект (включая его DSN), опционально раскрывая команду

create_project

Создать проект в команде

update_project

Обновить имя/видимость/флаги оповещений/срок хранения/команду

Проблемы

Инструмент

Описание

list_issues

Список проблем проекта (сортировка по digest_order, digested_event_count или last_seen)

get_issue

Получить проблему по UUID или дружественному ID (например, PROJ-123)

delete_issue

Необратимо удалить проблему и её события

resolve_issue

Закрыть свою

resolve_issue_in_next_release

Закрыть, с регрессией, если более поздний релиз сообщит о ней снова

resolve_issue_in_latest_release

Закрыть начиная с текущего последнего релиза

reopen_issue

Переоткрыть закрытую проблему

mute_issue

Заглушить на неопределённый срок

mute_issue_for

Заглушить на N периодов (например, 3 дня)

mute_issue_until

Заглушить до пересечения порога количества событий в период

unmute_issue

Снять заглушку

add_issue_comment

Добавить комментарий к проблеме

События

Инструмент

Описание

list_events

Список событий (включений) проблемы

get_event

Получить полную информацию о событии, включая теги/контексты/исходный payload

get_stacktrace

Отобразить Markdown-стектрейс для события

Релизы

Инструмент

Описание

list_releases

Список релизов проекта

get_release

Получить релиз по UUID

create_release

Создать релиз (необходим для корректного регресса resolve_issue_in_next_release)

Исправления по сравнению с оригиналом

  • get_stacktrace на самом деле работает. Эндпоинт Bugsink возвращает text/markdown, а не JSON. Оригинальный пакет безусловно вызывал res.json() и выбрасывал Unexpected token '#', "# TypeError"... is not valid JSON при каждом вызове. Этот сервер читает этот эндпоинт как текст.

  • Поддержка записи: закрытие/заглушение/переоткрытие/удаление проблем, комментирование и создание/обновление команд, проектов и релизов — ничего из этого read-only оригинал не предоставлял.

  • Ограниченные тайм-ауты (AbortSignal.timeout, по умолчанию 15с) на каждый запрос, поэтому зависший upstream не сможет бесконечно повесить MCP-процесс.

  • Безопасные повторы: идемпотентные GET-запросы получают ограниченный retry с экспоненциальной задержкой и джиттером на 502/503/504 или сетевой сбой. Мутирующие запросы (POST/PATCH/DELETE) никогда не повторяются автоматически, так как повтор записи, у которой просто потерялся ответ, может привести к дублированию побочных эффектов (например, второго такого же комментария).

  • Валидация входных данных через Zod на каждом аргументе инструмента (числовые ID, UUID, перечисление), поэтому некорректные данные отклоняются локально с понятным сообщением, а не долетают до API.

  • Без секретов в выводе. В ошибках содержатся HTTP-статус и усечённое тело ответа; значение заголовка Authorization никогда не попадает ни в логи, ни в выбрасываемые ошибки.

Замечания по безопасности

  • Это локальный процесс stdio — он не открывает сетевой слушатель. Управление доступом определяется тем, что даёт ваш MCP-клиент, а также владением BUGSINK_TOKEN.

  • Вся диагностика уходит только в stderr; stdout зарезервирован для потока протокола JSON-RPC.

  • BUGSINK_URL должен быть http: или https:; обычный HTTP на нелокальный хост печатает предупреждение (ваш токен будет отправлен без шифрования), но не блокируется — для поддержки внутренних сетей.

  • Относитесь к BUGSINK_TOKEN как к любому другому секрету: держите его вне системы контроля версий, перевыпускайте его в Bugsink при утечке и ограничивайте до минимально привилегированного пользователя.

Разработка

npm install     # installs deps and runs the TypeScript build (prepare script)
npm run typecheck
npm run build   # compile src/ -> dist/
npm run dev     # watch mode

Лицензия

MIT

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Hosted, OAuth-secured MCP server that drives the Sierra Interactive real-estate admin backend, enabling reads, guarded writes, and identity-locked deletes over HTTP without a browser.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Hosted MCP server that exposes your self-hosted Bugsink error tracker as tools for LLMs, enabling issue management, release tracking, and stacktrace retrieval via chat prompts.
    181 npm
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    A lightweight MCP server for tracking bugs and tasks across coding sessions, providing persistent SQLite-backed storage and six tools for logging, inspecting, updating, resolving, and deleting bugs.
    6
    1
    -