tracker-mcp
by sdamarketing
README.md
# traker-mcp — MCP-сервер для Яндекс Трекера
[](https://github.com/sdamarketing/tracker_mcp/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/tracker-mcp)
[](https://skills.sh/sdamarketing/tracker_mcp)
[](https://raw.githubusercontent.com/sdamarketing/tracker_mcp/main/install.sh)
Проще говоря: **этот сервер учит вашего AI-ассистента работать с Яндекс Трекером.**
Вы говорите ассистенту «найди мои задачи», «создай задачу в очереди TREK», «закрой
TASK-123 с резолюцией “Решён”» — а он делает это через API Трекера сам, без копирования ссылок руками.
Работает с любым MCP-клиентом: **VS Code (Copilot), Cursor, Claude Desktop,
Claude Code, opencode, Windsurf, Zed, JetBrains AI Assistant**.
> 📘 Подробное руководство для новичков (получение токена, пошаговая настройка
> каждого клиента, решение проблем) — в **[docs/SETUP.md](docs/SETUP.md)**.
## Ресурсы и промпты (MCP)
Помимо инструментов сервер отдаёт:
- **Resources** (`resources/list`, `resources/read`) — tracker:// URI для чтения контекста без вызова инструментов:
- `tracker://issue/{KEY}` — карточка задачи с описанием и последними 20 комментариями (markdown);
- `tracker://queue/{KEY}` — очередь + обязательные поля создания задач;
- `tracker://board/{ID}` — доска с колонками и статусами;
- `tracker://catalog/statuses|priorities|types|resolutions|linktypes` — справочники (делят TTL-кэш с инструментами);
- `tracker://myself` — ваш профиль.
- **Prompts** (`prompts/list`, `prompts/get`) — готовые сценарии с аргументами: `standup`, `weekly-report`, `triage`, `sprint-review`, `close-issue`, `create-issue`. В клиентах с поддержкой промптов вызываются как slash-команды.
## Что умеет
187 инструментов — **полное покрытие** [API Трекера v3](https://yandex.ru/support/tracker/ru/api/about-api):
| Категория | Что можно делать |
|---|---|
| **Задачи** | искать (фильтр, язык запросов, query 2.0, scroll >10k, подсказки), создавать, читать, редактировать, переносить, менять статус, связывать, история |
| **Комментарии** | добавлять, читать (список и по одному), редактировать, удалять, реакции |
| **Чеклисты** | задачи + проекты/портфели: добавлять, отмечать, двигать, удалять |
| **Учёт времени** | записи по задаче и поиск по авторам/датам |
| **Вложения** | список, метаданные, **скачивание** (картинки/текст/база), миниатюры, загрузка, временные файлы |
| **Массово** | редактирование, перенос и закрытие задач; bulk-обновление проектов/целей |
| **Отчёты и фильтры** | сохранённые отчёты для виджетов, CRUD сохранённых фильтров |
| **Очереди** | CRUD (вкл. удаление/восстановление), права доступа, версии, компоненты, локальные поля, макросы, теги |
| **Автоматизация** | триггеры и автодействия (CRUD + логи), **воркфлоу** (статусы и переходы) |
| **Доски** | CRUD, пагинация, колонки CRUD, **спринты** (создать/запустить/архив) |
| **Дашборды** | создание дашбордов и виджетов («Время цикла») |
| **Проекты, цели, портфели** | CRUD, комментарии, чеклисты, вложения, связи, события, права, ключевые результаты и метрики (через fields) |
| **Справочники** | чтение И запись: типы, статусы, приоритеты, резолюции; глобальные поля и категории |
| **Внешние приложения** | связи задач с внешними системами (Jira и др.) |
| **Отсутствия** | отпуска/болезни/командировки (admin) |
| **Миграция** | импорт задач/комментариев/связей/трудозатрат/вложений «задним числом» (admin) |
## Безопасность для агентов
- Каждый инструмент несёт **MCP-аннотации**: чтения помечены `readOnlyHint`, все `delete_*` —
`destructiveHint` — клиенты показывают их как подтверждаемые/Безопасные операции.
- Все `delete_*` и `bulk_*` требуют `confirm: true` (агент сначала показывает, что удалит).
- `TRACKER_READ_ONLY=1` — сервер отдаёт **только 80 инструментов чтения**, запись скрыта
полностью. Для «просто посмотреть» интеграций.
## Скилл для AI-агентов (skills.sh)
К серверу прилагается **скилл `yandex-tracker`** — процедурные знания для агента:
язык запросов Трекера, корректные значения полей (приоритеты, статусы, резолюции),
рецепты («найди мои задачи», «закрой с резолюцией», bulk-правки) и грабли API
(`dueDate` vs `releaseDate`, обязательная резолюция при закрытии, IAM-токены ≤12ч).
```bash
npx skills add sdamarketing/tracker_mcp
```
Устанавливает скилл во все обнаруженные агенты (Claude Code, Cursor, opencode,
Codex и ещё 75+). Мастер `npm run setup` тоже предлагает установить скилл
вместе с настройкой MCP-клиента. Репозиторий скилла: [skills.sh/sdamarketing/tracker_mcp](https://skills.sh/sdamarketing/tracker_mcp).
## Установка в одну команду (macOS / Linux / WSL)
```bash
curl -fsSL https://raw.githubusercontent.com/sdamarketing/tracker_mcp/main/install.sh | bash
```
Скрипт сам: проверит систему → поставит Node.js через nvm, если его нет
(спросит согласия, sudo не нужен) → скачает сервер в `~/.traker-mcp` → соберёт
и проверит его → запустит **мастер настройки**: ключи Трекера (ввод скрыт),
проверка ключей в API, выбор AI-клиента (VS Code, Cursor, Claude Desktop,
Claude Code, opencode, Windsurf, Zed, JetBrains) и итоговый отчёт.
**Повторный запуск той же командой = обновление сервера** (конфиги клиентов не трогаются).
> 🔎 Хотите сначала прочитать скрипт? Уберите `| bash` и посмотрите вывод:
> `curl -fsSL https://raw.githubusercontent.com/sdamarketing/tracker_mcp/main/install.sh`
>
> 🪟 **Windows:** установите через WSL командой выше или вручную — см. ниже.
## Установка из npm (без клонирования)
```bash
npm install -g tracker-mcp
tracker-mcp setup # интерактивный мастер: ключи Трекера + настройка AI-клиента
```
После этого сервер доступен командой `tracker-mcp` (в конфиг AI-клиента её и
прописывайте). Другие команды: `tracker-mcp update`, `tracker-mcp links`,
`tracker-mcp --help`.
## Official MCP Registry
Сервер опубликован в официальном реестре MCP как
`io.github.sdamarketing/tracker-mcp` (npm + Docker-пакеты, env-переменные описаны
в `server.json`). Клиенты с поддержкой реестра найдут его по имени.
## Docker (без установки чего-либо, кроме Docker)
Образ публикуется в GitHub Container Registry при каждом релизе (`v*-тег`):
```bash
# stdio (MCP-клиент запускает контейнер сам)
docker run -i --rm -e TRACKER_TOKEN -e TRACKER_ORG_ID ghcr.io/sdamarketing/tracker-mcp
# HTTP-режим
docker run --rm -p 3407:3407 -e TRACKER_TOKEN -e TRACKER_ORG_ID \
-e MCP_AUTH_TOKEN=вашключ ghcr.io/sdamarketing/tracker-mcp serve --host 0.0.0.0
```
В конфиге агента вместо `command: node` используется
`command: docker, args: ["run","-i","--rm","-e","TRACKER_TOKEN","-e","TRACKER_ORG_ID","ghcr.io/sdamarketing/tracker-mcp"]`.
## Ручная установка (Windows или без curl)
**Шаг 1.** Убедитесь, что есть Node.js 20+ (проверка: `node -v`).
**Шаг 2.** Соберите сервер:
```bash
git clone <адрес-этого-репозитория>
cd traker_mcp
npm install
npm run build
npm run smoke # проверка: должно быть "OK: ... 187 tools listed"
```
**Шаг 3.** Подготовьте две вещи из Трекера:
- **токен** — как получить: [docs/SETUP.md, раздел 3](docs/SETUP.md#3-токен-яндекс-трекера)
- **ID организации** — как найти: [docs/SETUP.md, раздел 4](docs/SETUP.md#4-id-организации)
**Шаг 4.** Запустите мастер установки:
```bash
npm run setup
```
Мастер спросит ключи (токен — скрытым вводом), проверит их в API Трекера,
покажет интерактивное меню клиентов (↑↓ + Enter) и настроит выбранные
(можно несколько подряд) —
через их CLI или дописав конфиг с бэкапом, — а в конце выведет отчёт.
Альтернатива: `npm run links` — откроет страницу в браузере с кнопками
установки в один клик (VS Code, Cursor, Claude Desktop) и конфигами всех
клиентов для ручного копирования.
## Подключение к вашему агенту
| Ваш агент | Быстрый способ | Конфиг-файл |
|---|---|---|
| **VS Code** (Copilot) | `npm run setup` (CLI `code`) | `.vscode/mcp.json` |
| **Cursor** | `npm run setup` | `~/.cursor/mcp.json` |
| **Claude Desktop** | `npm run setup` | `claude_desktop_config.json` |
| **Claude Code** (терминал) | `npm run setup` (CLI `claude`) | `~/.claude.json` |
| **opencode** | `npm run setup` | `~/.config/opencode/opencode.json` |
| **Windsurf** | `npm run setup` | `~/.codeium/windsurf/mcp_config.json` |
| **Zed** | `npm run setup` | `settings.json` (`context_servers`) |
| **JetBrains IDE** | `npm run setup` | `.mcp.json` в корне проекта |
Пошаговые инструкции с точными путями для macOS/Windows/Linux:
**[docs/SETUP.md](docs/SETUP.md#6-подключение-к-вашему-агенту)**.
## Проверка
После установки перезапустите агента и спросите:
> «Вызови инструмент get_current_user» — вернётся ваш профиль из Трекера.
> «Найди мои задачи в Трекере» — сработает find_issues.
## Частые проблемы
| Симптом | Причина и решение |
|---|---|
| `Missing required environment variable TRACKER_TOKEN` | токен не передан — перегенерируйте ссылки (`npm run links`) или проверьте `env` в конфиге |
| `Yandex Tracker API error 401` | неверный токен или токен истёк (IAM живёт ≤12 часов) |
| `Yandex Tracker API error 403: Organization is not available` | неверный `TRACKER_ORG_ID` или организация не подключена к Трекеру |
| Сервер не запускается в Claude Desktop (macOS) | используйте абсолютный путь к node — уже так в сгенерированном конфиге |
| У агента нет инструментов | сервер отключён — включите в списке MCP-серверов клиента и перезапустите |
Больше решений — [docs/SETUP.md, раздел 8](docs/SETUP.md#8-если-что-то-не-работает).
## Настройка сервера
| Переменная | Обязательна | Описание |
|---|---|---|
| `TRACKER_TOKEN` | да | OAuth-токен (`y0_...`, Яндекс 360) или IAM-токен (`t1....`, Yandex Cloud) |
| `TRACKER_ORG_ID` | да | Идентификатор организации |
| `TRACKER_AUTH` | нет | `oauth` (по умолчанию) или `iam` — определяет заголовки `X-Org-ID` / `X-Cloud-Org-ID` |
| `TRACKER_API_URL` | нет | По умолчанию `https://api.tracker.yandex.net/v3` |
| `TRACKER_LANG` | нет | `ru` или `en` — язык локализованных полей |
| `TRACKER_READ_ONLY` | нет | `1` — агенту видны только read-only инструменты (80 шт) |
| `TRACKER_CACHE_TTL_MS` | нет | TTL кэша справочников (по умолчанию 10 минут) |
### HTTP-режим (`serve`)
По умолчанию сервер работает по stdio (для локальных агентов). Для сетевого
доступа (команда, удалённый клиент, проксирование):
```bash
tracker-mcp serve --port 3407 --host 127.0.0.1 # значения по умолчанию
MCP_AUTH_TOKEN=s3cret tracker-mcp serve # ключ к эндпоинту (Bearer)
curl localhost:3407/health # {"ok":true,"tools":187}
```
- Эндпоинт MCP: `POST/GET/DELETE /mcp` (Streamable HTTP, stateless)
- Без `MCP_AUTH_TOKEN` привязка к не-loopback-адресу отклоняется — токен
Трекера живёт в env, голый порт в сети недопустим
- Конфиг клиента для HTTP: `"url": "http://127.0.0.1:3407/mcp"` +
`"headers": {"Authorization": "Bearer s3cret"}`
## Безопасность
- Токен даёт агенту **те же права, что у вас в Трекере**. Выдавайте минимальные
права (для чтения хватит `tracker:read`).
- Храните токен в `.env` (уже в `.gitignore`) или в конфиге клиента, не в коде.
- `install-links.html` содержит токен — скрипт добавляет его в `.gitignore` сам.
## Разработка
```bash
npm run typecheck # проверка типов
npm run build # сборка в dist/
npm run smoke # запуск и список инструментов без обращения к API
npm run setup # интерактивный мастер установки для AI-клиентов
npm run links # страница с кнопками установки (deeplinks)
```
Архитектура и полный список инструментов — в [docs/SETUP.md](docs/SETUP.md) и в коде `src/tools/`.
## Лицензия и поддержка
Проблемы и идеи — в issues репозитория. API Трекера меняется — следите за
[официальной документацией](https://yandex.ru/support/tracker/ru/api/about-api).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues