Skip to main content
Glama

Copy the translated translation# Taiga MCP Server

CI npm version Node.js License MCP

Model Context Protocol (MCP) server for Taiga project management — написан на TypeScript и построен на Model Context Protocol SDK поверх транспорта stdio (с опциональным потоковым HTTP-транспортом для удалённых и веб-клиентов). Он подключает LLM-клиентов к инстансам Taiga для просмотра и управления проектами, рабочими элементами (тикетами, пользовательскими историями, задачаима, эпиками), спринтами, комментариями, вложениями и wiki-страницами.

Сервер объединяет все возможности в 6 инструментов с диспетчеризацией операций, рассчитанных на минимальную нагрузку на токены и на получение плотных текстовых ответов, читаемых как человеком, так и LLM.

Содержание

Related MCP server: @illodev/taiga-mcp

Возможности

  • Шесть инструментов, двадцать восемь операций : проекты, рабочие элементы, спринты, комментарии, вложения и wiki-страницы — весь полезный выход tools/list не превышает ~10 493 символов (~2 800 токенов).

  • Понятные человеку идентификаторы: проекты — по ID или slug; рабочие элементы — по ID в базе данных или #reference; участники — по ID, имени пользователя, полному имени или "me"; статусы, приоритеты, серьёзности, типы задач и имена спринтов разрешаются на стороне сервера.

  • Плотный текстовый вывод: одна строка на запись в списках, чистые представления в виде «ключ-значение»; пустые коллекции сообщаются как данные, а не как ошибки.

  • Пакетное создание до 20 рабочих элементов за один вызов; удаления намеренно выполняются только по отдельности.

  • Средства надёжности: повторные попытки при ограничении частоты с учётом Retry-After, таймауты HTTP 30 секунд, кэш метаданных на 60 секунд и отсутствие автоматических повторов при 5xx (мутирующие запросы могли быть применены).

  • Безопасность вложений: загрузки с привязкой к имени хоста, ограничение 10 & МБ, защита от перезаписи и отсутствие туманов ключей аундинизации при обращении к хостяам, отдающим медиа.

  • Два транспорта: по умолчанию stdio; потоковый HTTP на адрес замыкания, если задан TAIGA_HTTP_PORT.

Требования и конфигурация

  • Node.js >= 20.11

  • Учётная запись Taiga на taiga.io или собственный экземпляр Taiga

  • Настройте три переменные окружения:

Переменная

Описание

По умолчанию

TAIGA_API_URL

Базовый URL REST API Taiga (должен включать /api/v1)

https://api.taiga.io/api/v1

TAIGA_USERNAME

Имя пользователя или email Taiga

Обязательно

TAIGA_PASSWORD

Пароль учётной записи Taiga

Обязательно

Дополнительные переменные для транспорта:

Переменная

Описание

По умолчанию

TAIGA_HTTP_PORT

Если задана — обслуживать MCP по потоковой HTTP вместо stdio

(не задан: stdio)

TAIGA_HTTP_HOST

Адрес привязки для HTTP-транспорта

127.0.0.1

Быстрый старт

Быстрее всего запустить Claude Desktop через npx (без клонирования репозитория):

{
  "mcpServers": {
    "taiga": {
      "command": "npx",
      "args": ["-y", "mcp-taiga"],
      "env": {
        "TAIGA_USERNAME": "your_username",
        "TAIGA_PASSWORD": "your_password"
      }
    }
  }
}

Все приведённые ниже конфигурации построены по этой схеме; отличаются только расположение файла и синтаксис обёртки.

Учётные данные и .env: локальная копия репозитория автоматически загружает .env из его корня (см. .env.example). При установке через npx этого не происходит: dotenv вычисляет путь относительно места установки пакета в npm-кэше, поэтому учтные данные, передаваемые через npx, ОБЯЗАТЕЛЬНО должны быть заданы в блоке env каждой клиентской конфигурации, как показано выше.

Запуск из локальной копии репозитория

git clone https://github.com/negoro26/mcp-taiga.git
cd mcp-taiga && npm ci && npm run build
cp .env.example .env   # fill in TAIGA_USERNAME / TAIGA_PASSWORD

Затем укажите любому клиенту путь к собранной точке входа вместо npx:

{
  "mcpServers": {
    "taiga": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-taiga/dist/src/index.js"]
    }
  }
}

Здесь блок env не нужен: сервер сам загрузит .env из корня репозитория. В репозитории также содержится готовый .mcp.json, поэтому разработчики, работающие в копии проекта, могут сразу использовать локальную сборку.

Установка и конфигурация

Настройка для каждого клиента с использованием опубликованного npm-пакета. В каждом сниппете учётные данные передаются встроенно; подставьте собственные значения.

Claude Code

Область проекта (проверена в репозиторий, доступна команде):

// .mcp.json at repository root
{
  "mcpServers": {
    "taiga": {
      "command": "npx",
      "args": ["-y", "mcp-taiga"],
      "env": {
        "TAIGA_USERNAME": "your_username",
        "TAIGA_PASSWORD": "your_password"
      }
    }
  }
}

Или добавьте из CLI (область пользователя задаётся флагом -s user, локальная — по умолчанию):

claude mcp add taiga \
  -e TAIGA_USERNAME=your_username \
  -e TAIGA_PASSWORD=your_password \
  -- npx -y mcp-taiga

Проверьте с помощью claude mcp list или /mcp в сессии.

Claude Desktop

Отредактируйте файл конфигурации — claude_desktop_config.json через Claude Desktop -> Settings -> Developer -> Edit Config, расположенный в %APPDATA%\Claude\claude_desktop_config.json на Windows или ~/Library/Application Support/Claude/claude_desktop_config.json на macOS, и перезапустите настольное приложение:

{
  "mcpServers": {
    "taiga": {
      "command": "npx",
      "args": ["-y", "mcp-taiga"],
      "env": {
        "TAIGA_USERNAME": "your_username",
        "TAIGA_PASSWORD": "your_password"
      }
    }
  }
}

На Windows, если прямой вызов npx не сработает, используйте cmd /c: "command": "cmd", "args": ["/c", "npx", "-y", "mcp-taiga"].

VS Code и GitHub Copilot

VS Code поддерживает MCP-серверы нативно (1.99+); Copilot Chat подхватывает их автоматически.

// .vscode/mcp.json (workspace) or use Command Palette: "MCP: Add Server"
{
  "servers": {
    "taiga": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-taiga"],
      "env": {
        "TAIGA_USERNAME": "your_username",
        "TAIGA_PASSWORD": "your_password"
      }
    }
  }
}

Запустите сервер из представления Extensions (mcp.json отображает кнопку Start) или выполните MCP: List Servers в панели команд. Входные данные могут ссылаться на секреты через поле "inputs" вместо жёстко заданных паролей.

Cursor

Через CLI (интерфейс повторяет Claude Code):

cursor mcp add taiga -e TAIGA_USERNAME=your_username -e TAIGA_PASSWORD=your_password -- npx -y mcp-taiga

Или отредактируйте ~/.cursor/mcp.json (глобально):

{
  "mcpServers": {
    "taiga": {
      "command": "npx",
      "args": ["-y", "mcp-taiga"],
      "env": {
        "TAIGA_USERNAME": "your_username",
        "TAIGA_PASSWORD": "your_password"
      }
    }
  }
}

Включите сервер в Cursor Settings -> MCP & Integrations, если он не активировался сразу.

Windsurf

Отредактируйте ~/.codeium/windsurf/mcp_config.json (или **Windsurf Settings -> Cascade -> MCP Servers -> Manage MCP -> View Raw Config (Показать исходный конфиг) **) и обновите панель MCP после этого:

{
  "mcpServers": {
    "taiga": {
      "command": "npx",
      "args": ["-y", "mcp-taiga"],
      "env": {
        "TAIGA_USERNAME": "your_username",
        "TAIGA_PASSWORD": "your_password"
      }
    }
  }
}

Cline, Roo Code и Kilo Code

Все три расширения VS Code читают одинаковый JSON-файл настроек, который можно редактировать через панель MCP Servers каждого расширения (значок карандаша открывает исходный файл):

Расширение

Файл настроек (пути для Linux; macOS использует ~/Library/Application Support/Code/User/..., Windows — %APPDATA%\Code\User\...)

Cline

~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

Roo Code

~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json

Kilo Code

~/.config/Code/User/globalStorage/kilocode.kilo-code/settings/mcp_settings.json

Добавьте сервер внутрь корневого объекта "mcpServers":

{
  "mcpServers": {
    "taiga": {
      "disabled": false,
      "timeout": 60,
      "command": "npx",
      "args": ["-y", "mcp-taiga"],
      "env": {
        "TAIGA_USERNAME": "your_username",
        "TAIGA_PASSWORD": "your_password"
      }
    }
  }
}

Когда расширение запросит разрешение на использование инструментов сервера, подтвердите его; автоподтверждение для отдельных инструментов настраивается там же.

Continue.dev

Continue читает MCP-серверы либо из блоков mcpServers: в своей конфигурации, либо из отдельных YAML-файлов в .continue/mcpServers/ (она такжепринимает JSON-конфигурации Claude/Cursor/Cline, помещённые в этот каталог без изменений):

# ~/.continue/config.yaml (or .continue/mcpServers/taiga.yaml with
# name/version/schema metadata fields added)
name: Assistant
version: 1.0.0
schema: v1
mcpServers:
  - name: Taiga
    type: stdio
    command: npx
    args:
      - -y
      - mcp-taiga
    env:
      TAIGA_USERNAME: your_username
      TAIGA_PASSWORD: your_password

Инструменты MCP доступны в режиме агента.

Zed

Добавьте пользовательский сервер контекста в settings.json (zed: open settings):

{
  "context_servers": {
    "taiga": {
      "command": {
        "path": "npx",
        "args": ["-y", "mcp-taiga"],
        "env": {
          "TAIGA_USERNAME": "your_username",
          "TAIGA_PASSWORD": "your_password"
        }
      }
    }
  }
}

JetBrains IDE

Откройте Settings -> Tools -> AI Assistant -> MCP (или отдельную страницу настроек MCP в новых версиях), нажмите Add, выберите As JSON и вставьте:

{
  "mcpServers": {
    "taiga": {
      "command": "npx",
      "args": ["-y", "mcp-taiga"],
      "env": {
        "TAIGA_USERNAME": "your_username",
        "TAIGA_PASSWORD": "your_password"
      }
    }
  }
}

Требуется плагин AI Assistant с включённой поддержкой MCP.

Gemini CLI

Отредактируйте ~/.gemini/settings.json и перезапустите CLI. Инструменты требуют подтверждения на каждый вызов, если вы не внесёте их в список разрешённых:

{
  "mcpServers": {
    "taiga": {
      "command": "npx",
      "args": ["-y", "mcp-taiga"],
      "env": {
        "TAIGA_USERNAME": "your_username",
        "TAIGA_PASSWORD": "your_password"
      },
      "includeTools": ["projects", "work", "sprints", "comments", "attachments", "wiki"]
    }
  }
}

Проверьте регистрацию командой /mcp list в CLI.

Codex CLI

Добавьте таблицу серверов в конфиг ~/.codex/config.toml:

[mcp_servers.taiga]
command = "npx"
args = ["-y", "mcp-taiga"]

[mcp_servers.taiga.env]
TAIGA_USERNAME = "your_username"
TAIGA_PASSWORD = "your_password"

Проверьте с помощью codex mcp list; инструменты появляются как taiga_* внутри сессий.

opencode

Добавьте в opencode.json (в корень проекта или ~/.config/opencode/opencode.json):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "taiga": {
      "type": "local",
      "command": ["npx", "-y", "mcp-taiga"],
      "environment": {
        "TAIGA_USERNAME": "your_username",
        "TAIGA_PASSWORD": "your_password"
      },
      "enabled": true
    }
  }
}

Обратите внимание на ключ environment в единственном числе и форму command в виде массива — они отличаются от схемы в стиле Claude.

Amp

Для серверов уровня пользователя предпочтительно использовать CLI:

amp mcp add taiga -- npx -y mcp-taiga

Или объявите amp.mcpServers в ~/.config/amp/settings.json (варианты в рабочей области .amp/settings.json требуют сначала выполнить amp mcp approve taiga):

{
  "amp.mcpServers": {
    "taiga": {
      "command": "npx",
      "args": ["-y", "mcp-taiga"],
      "env": {
        "TAIGA_USERNAME": "your_username",
        "TAIGA_PASSWORD": "your_password"
      }
    }
  }
}

Pi

Pi читает MCP-конфиг в стиле Claude из двух областей: ~/.pi/agent/mcp.json (пользователь) и .mcp.json или mcp.json в рабочей области (проект). Отредактируйте пользовательский файл:

{
  "mcpServers": {
    "taiga": {
      "command": "npx",
      "args": ["-y", "mcp-taiga"],
      "env": {
        "TAIGA_USERNAME": "your_username",
        "TAIGA_PASSWORD": "your_password"
      }
    }
  }
}

Удалённые серверы используют "url" и "transport": "http". Управление серверами через /mcp в сессии (/mcp add, /mcp list, включение/выключение для каждого сервера).

В этом репозитории есть собственный .mcp.json, так что при запуске pi в локальной копии автоматически используется локальная сборка (учётные данные там не нужны — сервер сам загрузит .env репозитория).

Oh My Pi

omp использует ядро агента pi, но со своим корнем конфигурации. Отредактируйте ~/.omp/agent/mcp.json:

{
  "mcpServers": {
    "taiga": {
      "command": "npx",
      "args": ["-y", "mcp-taiga"],
      "env": {
        "TAIGA_USERNAME": "your_username",
        "TAIGA_PASSWORD": "your_password"
      }
    }
  }
}

MCP-серверы подключаются при создании сессии — после редактирования перезапустите omp. Инструменты отображаются как taiga_*; конфигурации уровня проекта определяются по логике pi (включая .mcp.json из этого репозитория).

Удалённые и веб-клиенты (HTTP-транспортировка)

Задайте TAIGA_HTTP_PORT, чтобы те же шесть инструментов были доступны по потоковому HTTP вместо stdio — это удобно для клиентов, которые не могут запускать локальные процессы, или для одного общего экземпляра:

TAIGA_HTTP_PORT=3000 npx -y mcp-taiga
# serves http://127.0.0.1:3000/mcp

Свойства: режим без состояния (без session-заголовков); привязка к 127.0.0.1, если не задан TAIGA_HTTP_HOST (не-loopback адреса привязки выводит в stderr предупреждение о обычном HTTP); для объявляемого хоста включена защита от DNS-rebinding; повреждённый JSON отклоняется с -32700; на /mcp обрабатываются только POST (405 для остальных методов).

Клиенты подключаются по URL, а не по команде:

{
  "mcpServers": {
    "taiga": {
      "url": "http://127.0.0.1:3000/mcp"
    }
  }
}

Аналоги для Continue.dev: type: streamable-http с полем url:; для opencode: type: "remote" с полем url:. Поскольку процесс запускается вручную, а не клиентом, экспортируйте TAIGA_USERNAME/TAIGA_PASSWORD в этой оболочке (или используйте systemd unit, контейнер и т. п.).

Контейнеры

Входящий в набор двухстадийный Dockerfile использует Node 22 Alpine с непривилегированным пользователем node. Стадия сборки компилирует TypeScript, стадия запуска включает только собранный результат в каталоге dist/src и production-зависимости.

Соберите образ контейнера:

docker build -t mcp-taiga .

Запустите контейнер, подклучаясь к стандартному вводу-выводу:

docker run --rm -i --env-file .env mcp-taiga

Podman работает с прямой заменой: замените docker на podman.

Укажите MCP-клиенту контейнер, запускаемый через этот раннер:

{
  "mcpServers": {
    "taiga": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "--env-file", "/absolute/path/to/.env", "mcp-taiga"]
    }
  }
}

При HTTP-развёртывании опубликуйте пост

Намеренно не существует compose-файла. MCP stdio-сервер должен запускаться с прямым подключением к потокам stdin и stdout своего клиента и завершаться, когда этот поток stdin закрывается. Супервизоры процессов или compose-окружения, пытающиеся поддерживать фоновые сервисы в живых, вызывают бесконечные циклы перезапуска и конфликты имён контейнеров.

Соглашения

  • Проекты: проектные аргументы принимают числовой идентификатор проекта (например, 19) или слаг (например, "acme-web").

  • Рабочие элементы: рабочие элементы принимают числовой идентификатор в БД (например, 1888) или ссылку с префиксом # (например, "#70"). Обозначение #reference требует аргумент project для разрешения.

  • Люди: аргументы участников принимают числовой идентификатор пользователя, имя пользователя (например, "jdoe"), полное имя (например, "Jane Doe") или буквленное "me".

  • Таксионимии: названия статусов, приоритетов, уровней серьёзности, типов заявок и спринтов принимаются в человекочитаемом виде и преобразуются в числовые идентификаторы на стороне сервера.

  • Пользовательские истории с несколькими исполнителями: истории Taiga поддерживают нескольких исполнителей через поле assigned_users. Фильтрация по assignee в work list type:story находит и соисполнителей, а в списках показываются все исполнители, а не только основной.

  • Плотные текстовые результаты: результаты — обычный текст, в котором каждая запись выводится плотной строкой, а подробные представления оформлены аккуратными блоками «ключ — значение». Ни один потребитель не читает structuredContent, поэтому результаты содержат только текст. Пустая коллекция сообщается как <items> in <project>: 0, а не как ошибка.

  • Полный список: перечневые endpoints возвращают полные коллекции, потому что клиент отправляет заголовок запроса `x-disable-pagination: true» — это исключает многократные полнопереходные раундттрипы.

Почему шесть инструментов

Множество инструментов одного назначения создаёт серьёзные издержки на контекстное окно ещё до вызова любого из них. Объединение функциональности в 6 инструментов с диспетчеризацией операций удерживает размер полезной нагрузки tools/list на уровне примерно 10 493 символов (~2 800 токенов).

Схемы вывода намеренно отсутствуют в реестру инструментов: мосты MCP-клиентов объединяют текстовый контент и игнорируют outputSchema и structuredContent, поэтому отсутствие выходных схем убирает лишние потери токенов при старте сессии.

Справочник инструментов

Сервер предоставляет 6 инструментов, охватывающих 28 операций.

1. projects

Перечисление и просмотр проектов Taiga, проверка учётных данных.

Операция

Что делает

Обязательные аргументы

Необязательные аргументы

list

Перечислить проекты, где аутентифицированный пользователь — участник

(нет)

(нет)

get

Просмотреть метаданные проекта, владельца, количество участников, активные модули

project

(нет)

whoami

Проверить учётные данные и показать информацию о текущем пользователе

(нет)

(нет)

2. work

Управление заявками, пользовательскими историями, задачами и эпиками (type: issue, story, task, epic).

Операция

Что делает

Обязательные аргументы

Необязательные аргументы

list

Перечислить рабочие элементы с серверными фильтрами

type, project

assignee, watcher, sprint, status, tags, closed, q, orderBy, limit, parent (задачи)

get

Получить полные сведения и описание элемента

type, item

project (обязательно, если элемент — #ref)

create

Создать один элемент или несколько

type, project, subject (или items для набора; для задач — parent)

description, status, assignee, sprint, tags, priority (issue), issueType (issue), points (story), parent (эпик для истории / по умолчанию для набора), items (макс. 20)

update

Обновить поля существующего элемента

type, item

project (обязательно, если элемент — #ref), subject, description, status, assignee, sprint, tags, priority, severity, issueType, points

link

Привязать пользователяю историю к эпику

type (story), item (история), parent (эпик)

project (обязательно, если item или parent#ref)

unlink

Убрать привязку истории к эпику

type (story), item (история), parent (эпик)

project (обязательно, если item или parent#ref)

delete

Навсегда удалить один рабочий элемент

type, item

project (обязательно, если элемент — #ref)

3. sprints

Управление спринтами (вехами) и проверка статистики хода работ.

Операция

Что делает

Обязательные аргументы

Необязательные аргументы

list

Перечислить спринты в проекте

project

(нет)

get

Получить деталиспринта и назначенные пользовательские истории

sprint

project (обязательно, если спринт задан по имени)

create

Создать новую веху спринта

project, name

start (ГГГГ-ММ-ДД), finish (ГГГГ-ММ-ДД)

stats

Получить статистику прогресса спринта и завершённости

sprint

project (обязательно, если спринт задан по имени)

Удаление спринтов осознанно не выставлено наружу: удаление вехи отвязывает каждую историю и задачу, превращая операцию в правку уровня всей доски, которую следует выполнять в интерфейсе Taiga.

4. comments

Просмотр, добавление, изменение или удаление комментариев к рабочим элементам и вики-страницам (type: issue, story, task, epic, wiki).

Операция

Описание

Обязательные аргументы

Необязательные аргументы

list

Показать комментарии, старые — первыми

type, item

project (обязательно для #ref или слага вики), >включая удалённые

add

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

type, item, text

project (обязательно для #ref или слага вики)

edit

Изменить комментарий по UUID

type, item, commentId, text

project (обязательно для #ref или слага вики)

delete

Мягко удалить комментарий по UUID

type, item, commentId

project (обязательно для #ref или слага вики)

5. attachments

Управление файловыми вложениями в рабочих элементахки и вики-страницах (type: issue, story, task, epic, wiki).

Операция

Что делает

Обязательные аргументы

Необязательные аргументы

list

Перечислить вложения

type, item

project (обязательно для #ref или слага вики)

upload

Загрузить файл из локального каталога или base64

type, item, filePath или fileContent

project, fileName, mimeType, description

download

Получить метаданные вложения; при необходимости — сохранение файла на диск

type, attachmentId

savePath (путь сохранения загруженного файла)

delete

Навсегда удалить вложение

type, attachmentId

(нет)

6. wiki

Управление вики-страницами и подпиской на них внутри проекта.

Операция

Что делает

Обязательные аргументы

Необязательные аргументы

list

Перечислить все вики-страницы в проекте

project

(нет)

get

Посмотреть метаданные вики-страницы и содержимое в Markdown

page (ID или слаг)

project (обязательно, если page — слаг)

create

Создать новую вики-страницу

project, page (слаг)

content

update

Обновить содержимое вики-страницы

page (ID или слаг), content

project (обязательно, если page — слаг)

delete

Навсегда удалить wiki-страницу

page (ID или слаг)

project (обязательно, если page — слаг)

watch

Подписаться или отписаться от вики-страницы

page (ID или слаг)

project (обязательно, если page — слаг), watch (булева, по умолчанию true)

Надёжность и безопасность

Надёжность и безопасность

  • Ограничение частоты запросов (429): Сервер повторяет HTTP-запросы при ответе 429 не более двух раз, учитывая заголовок Retry-After сервера. Если необходимое ожидание превышает 5-секундный лимит (MAX_THROTTLE_WAIT_MS), он немедленно выбрасывает исключение с сообщением о повторной попытке, а не ждёт.

  • Ошибки 5xx никогда не повторяются: Ответы 5xx никогда не повторяются автоматически, потому что изменяющие запросы (например, POST) могли уже быть применены на сервере; повторение создаёт риск появления дублирующихся записей.

  • Кэш метаданных: Метаданные проекта (поиск по slug, членство пользователей и таксономические списки для статусов, приоритетов, уровней критичности и типов задач) кэшируются на 60 секунд (METADATA_TTL_MS) через getMetadata. Рабочие элементы, комментарии и вложения никогда не кэшируются.

  • Таймауты: Для HTTP-запросов установлено 30-секундное время ожидания (REQUEST_TIMEOUT_MS).

  • Принудительное использование HTTPS: Сервер выводит предупреждение в stderr, если TAIGA_API_URL использует незашифрованный HTTP для обращения к хосту, отличному от loopback.

  • Ограничения на скачивание вложений: Скачивание вложений строго ограничено настроенным именем хоста Taiga, перенаправления запрещены (maxRedirects: 0), максимальный размер файла — 10 МБ (MAX_ATTACHMENT_BYTES). При скачивании сборщик не передаёт bearer-токен Taiga на медиахосты.

  • Защита от перезаписи файлов: Скачивание вложения с savePath отказывается перезаписывать существующий локальный файл.

  • Удаление одного объекта за раз: Операции удаления принимают ровно один объект за один раз. Пакетные операции поддерживают только создание (до 20 элементов), что предотвращает случайное удаление по всей доске.

Вопросы безопасности

  • Учётные данные передаются через переменные окружения или файлы конфигурации клиентского окружения, никогда — через аргументы командной строки (доступные из списков процессов) и никогда через репозиторий. Не храните файлы конфигурации клиентского окружения с паролями в системе контроля версий; .gitignore уже исключает .env*, кроме .env.example.

  • Опциональный HTTP-транспорт по умолчанию привязывается к loopback и включает защиту от DNS-rebinding; привязка к маршрутизируемому адресу выводит предупреждение, потому что трафик не шифруется.

  • Скачивание вложений никогда не уводит ваш bearer-токен за пределы хоста Taiga, запрещает перенаправления, ограничивает размер файла и не перезаписывает существующие файлы.

  • Удаление спроектировано работающим с одним объектом за раз; пакетного удаления нет.

FAQ

Какие MCP-клиенты могут его использовать? Любой клиент, работающий через stdio MCP, — руководство по установке описывает семнадцать из них с готовыми конфигурациями — а также клиенты на основе URL через HTTP-транспорт.

Работает ли он с self-hosted Taiga? Да. Укажите в TAIGA_API_URL адрес вашего экземпляра, включая суффикс /api/v1 (например, https://taiga.example.com/api/v1). Всё вызнать аналогично; если запросы возвращают 404, см. раздел Устранение неполадок.

Можно ли подключить более одной учётной записи или экземпляра Taiga? Не в рамках одного процесса — внутри него существует ровно один набор учётных данных, считываемый окружением при старте. Зарегистрируйте дополнительные записи в mcpServers (например, "taiga-work") со своими значениями переменных окружения; каждая станет независимым пространством имён, например mcp__taiga-work__work.

Куда попадает мой пароль? Из вашего блока env в память, а оттуда — только на настроенный экземпляр Taiga при обмене входа. Он никогда не попадает в командную строку (которая процичивается через списки процессов), в журналы, результаты инструментов или на серверы скачивания вложений. См. раздел Вопросы безопасности.

Он только для чтения? Нет: поддержку полное создание, обновление, связывание/отвязку и удаление рабочих элементов, спринтов, обсуждений, вложений и вики-страниц. Удаление спринтов и пакетное удаление намеренно отсутствует — см. Надёжность и безопасность.

Почему только шесть инструментов, когда другие MCP-серверы используют десятки? Экономия контекстного окна: каждое объявление инструмента стоит занимает место при каждом старте сессии. См. Почему шесть инструментов.

Что-то сломалось — с чего начать? Устранение неполадок описывает типовые проблемы; если это не помогает, создайте issue на GitHub с описанием упавшего вызова и содержимым stderr сервера.

Устранение неполадок

  • Сбои аутентификации — запустите инструмент projects с параметром op: whoami; он точно укажет, какой шаг обмена учётными данными не сработал. Проверьте лишние пробелы в значениях окружения и работу учётной записи в веб-интерфейсе Taiga.

  • Self-hosted экземпляр возвращает 404 — в TAIGA_API_URL должен быть указан суффикс /api/v1, например https://taiga.example.com/api/v1.

  • Сервер запускается, но npx-клиент не видит инструментов — убедитесь, что в окружении клиента выполняется Node.js >= 20.11; графические оболочки часто наследуют другой PATH, нежели ваш шелл.

  • Учётные данные игнорируются при запуске через npx — установки npx не читают .env; помещайте учётные данные в блок env конфигурации клиента (только локальные копии автоматически подгружают .env).

  • Конфликт портов в HTTP-режиме — порт занят другим процессом; выберите другой значение TAIGA_HTTP_PORT. Сервер завершает работу с ошибкой прослушивании и кодом возврата, отличным от нуля, а не натравит.

  • Пустые результаты — списки выводят <items> in <project>: 0; это успешный ответ, а не ошибка.

  • Сервер Cursor/Windsurf присутствует, но не активен — после изменения конфигурационных файлов включите переключатель сервера в панели настроек соответствующего приложения; оба приложения кэшировать состояние до обновления.

Разработка

Расположение файлов

src/index.ts            # Entrypoint: createServer() factory, stdio vs HTTP transport selection
src/http.ts             # Streamable HTTP transport (node:http, stateless, DNS-rebinding protected)
src/api.ts              # Authenticated axios transport, generic HTTP helpers (get, post, patch, del), token management, retry policy, metadata cache
src/taiga.ts            # Domain helpers: resolution (projects, items, members, taxonomies, sprints) and optimistic concurrency patch
src/types.ts            # Taiga payload interfaces, tool definitions, and type contracts
src/format.ts           # Dense pipe-separated single-line renderers and detail views
src/utils.ts            # MCP response builders (createSuccessResponse, createErrorResponse, guard) and formatting helpers
src/constants.ts        # Endpoints, limits (batch size, attachment size), status labels, error messages
src/tools/index.ts      # Tool registry aggregating all tools and registering with McpServer
src/tools/projects.ts   # projects tool (list, get, whoami)
src/tools/work.ts       # work tool (list, get, create, update, link, unlink, delete across issues, stories, tasks, epics)
src/tools/sprints.ts    # sprints tool (list, get, create, stats)
src/tools/comments.ts   # comments tool (list, add, edit, delete)
src/tools/attachments.ts # attachments tool (list, upload, download, delete)
src/tools/wiki.ts       # wiki tool (list, get, create, update, delete, watch)
test/unitTest.ts        # Offline unit tests for pure helpers, formatting functions, response builders, and tool invariants
test/protocolTest.ts    # Protocol tests verifying MCP stdio handshake, server capabilities, tool count, and tools/list budget
test/httpTest.ts        # Transport tests verifying the streamable HTTP endpoint: handshake, tools/list, routing rejections
test/apiContractTest.ts # Contract tests driving every tool op against an in-process mock Taiga HTTP server, asserting outgoing HTTP requests
test/integration.ts     # Live integration smoke test against a real Taiga instance (read-only, skips without credentials)

NPM-скрипты

  • npm run build: Компилирует TypeScript из src/ и test/ в dist/ через tsc.

  • npm run check: Проверяет типы TypeScript без генерации выходных файлов (tsc --noEmit).

  • npm run lint: Запускает oxlint по каталогам src/ и test/.

  • npm start: Запускает собранный сервер (node dist/src/index.js).

  • npm test: Компилирует и запускает последовательно наборы unit-, protocol-, contract- и HTTP-транспортных тестов.

  • npm run test:unit: Компилирует и выполняет автономные модульные тесты.

  • npm run test:protocol: Компилирует и запускает тесты протокола MCP через stdio.

  • npm run test:http: Компилирует и запускает тесты потокового HTTP-транспорта.

  • npm run test:contract: Компилирует и запускает контрактные тесты API против мок-сервера Taiga.

  • npm run test:integration: Компилирует и запускает живые интеграционные тесты с реальным экземпляром.

  • npm run prepublishOnly: Выполняет проверку типов, линтер и полный набор тестов перед публикацией.

Тестовые наборы

  1. Unit-тесты (test/unitTest.ts): Автономные модульные тесты проверяют чистые функции форматирования, строители ответов, помощники разрешения идентификаторов и инварианты определения инструментов без сети и учётных данных.

  2. Протокольные тесты (test/protocolTest.ts): Протокольные тесты проверяют реальное stdio-рукопожатие MCP, версию и возможности сервера, схемы инструментов и бюджет символов tools/list на порождаемом серверном процессе.

  3. HTTP-тесты (test/httpTest.ts): Запускает скомпилированный сервер с TAIGA_HTTP_PORT и проверяет реальное рукопожатие потокового HTTP, эхо версии протокола, отсутствие сохранения состояния между запросами, содержимое tools/list и отклонения маршрутов с кодами 400/404/405 на локальных хостах.

  4. Контрактные тесты (test/apiContractTest.ts): Контрактные тесты проверяют, что каждый инструмент и операция отправляют ожидаемые исходящие HTTP-запросы (метод, конечную точку, параметры запроса, заголовки и тело) и корректно обрабатывают ответы внутрипроцессного мокового HTTP-сервера Taiga.

  5. Интеграционные тесты (test/integration.ts): Живые интеграционные smoke-тесты, проверяющие операции инструмента в режиме только чтения на реальном экземпляре Taiga через stdio (пропускаются, если учётные данные не заданы).

Участие в разработке

Пулл-реквесты отправляются в ветку dev; см. CONTRIBUTING.md о модели веток (devstagingmain), рекомендациях к коммитам и процессе релиза.

Журнал изменений

См. CHANGELOG.md.

Лицензия

MIT

Available Tools

6 tools
attachmentsAttachmentsA
Destructive

List, upload, download, or delete attachments across work items and wiki pages.

op

required args

optional args

notes

list

type, item

project

List attachments on a work item or wiki page

upload

type, item, filePath OR fileContent

project, fileName, mimeType, description

Upload file to Taiga host from local path (harness resolves local:// URIs) or base64

download

type, attachmentId

savePath

Fetch metadata and bytes; writes to savePath when given

delete

type, attachmentId

Delete attachment by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
opYesOperation to perform: list, upload, download, delete
itemNoItem numeric ID, #ref, or wiki slug
typeNoTarget item type (issue, story, task, epic, wiki)
projectNoProject ID or slug (required for #ref or wiki slug)
fileNameNoFile name including extension
filePathNoLocal file path on the machine running this server to upload to the Taiga host (the omp harness resolves local:// URIs to filesystem paths before invoking this tool)
mimeTypeNoMIME type of uploaded file
savePathNoLocal filesystem path to save downloaded file
descriptionNoAttachment description text
fileContentNoBase64-encoded file content to upload
attachmentIdNoAttachment ID for download or delete

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds helpful behavioral details beyond the annotations: download writes files to savePath when provided, and upload resolves local:// URIs through the harness. The destructiveHint annotation is consistent with the delete operation, and no annotation contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, well organized, and front-loads the core purpose in one clause. The table conveys a large amount of operation-parameter information without unnecessary prose, and every line adds utility.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has many parameters and a multi-operation structure, but the operation table plus schema descriptions cover the calling requirements well. It could offer more on return shapes, permissions, or side effects, though it remains sufficient for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage of 100 percent means baseline is 3, but the description still adds meaningful value through a required/optional argument matrix per operation. It clarifies the relationship between operation and parameter choice, especially the 'filePath OR fileContent' upload requirement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb set — 'List, upload, download, or delete attachments' — and scopes it to 'work items and wiki pages.' The operation table further disambiguates each action, and the tool name plus resource clearly separates it from sibling tools like comments and wiki.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The table gives clear operational context by mapping each op to required and optional arguments. It implicitly tells the agent when to use an operation but does not explicitly discuss exclusions or mention specific sibling alternatives for choosing between tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

commentsCommentsA
Destructive

List, add, edit, or delete comments on issues, user stories, tasks, epics, and wiki pages. Note: Taiga soft-deletes comments on delete.

| op | required args | optional args | | list | type, item | project, includeDeleted | | add | type, item, text | project | | edit | type, item, commentId, text | project | | delete | type, item, commentId | project |

ParametersJSON Schema
NameRequiredDescriptionDefault
opYesOperation to perform
itemNoItem ID, #reference, or wiki slug
textNoComment markdown text (add, edit)
typeNoItem type
projectNoProject ID or slug (required for #ref or wiki slug)
commentIdNoComment UUID (edit, delete)
includeDeletedNoInclude soft-deleted comments (list)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description reveals a key behavioral nuance: 'Taiga soft-deletes comments on delete'. This explains how deletes behave and makes the includeDeleted parameter meaningful. It also implies deletion might be reversible, which adds context not available from the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single introductory sentence followed by a compact, readable table. Every piece of content in the table contributes to understanding operation-specific argument requirements, with no fluff or repetition of schema details. The purpose is front-loaded in the first clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 params, no output schema, 4 operations), the description provides a complete operation-by-operation breakdown of required and optional arguments. The soft-delete note and the includeDeleted parameter are explained in a way that leaves nothing ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all parameter descriptions (100% coverage), so the baseline is 3. The description's operation matrix adds value by showing which parameters are conditionally required for each 'op' (e.g., commentId only for edit/delete, text only for add/edit), which the schema does not convey. This extra relational information raises the score above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb phrase ('List, add, edit, or delete') and names the exact resource types (issues, user stories, tasks, epics, wiki pages). It unambiguously identifies this tool as the comment-handling tool, separating it from siblings like 'attachments' and 'wiki'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The operation table gives explicit guidance on which arguments are required for each operation (list vs. add vs. edit vs. delete), helping an agent assemble calls correctly. It lacks an explicit statement of when not to use this tool, but the operations are self-explanatory and no true alternative exists among the listed siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projectsProjectsA
Read-onlyIdempotent

List or inspect Taiga projects and verify credentials.

Credentials come from TAIGA_USERNAME and TAIGA_PASSWORD in the environment; the server authenticates on first use. Use whoami to verify them.

op

required args

optional args

notes

list

List projects where authenticated user is member

get

project

Inspect project metadata, owner, member count, active modules

whoami

Verify credentials and show current user info

ParametersJSON Schema
NameRequiredDescriptionDefault
opYesOperation to perform: list, get, or whoami
projectNoProject ID or slug (required for get)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld hints. The description adds behavioral context: credentials are sourced from environment variables and authentication occurs on first use. This explains the tool's interaction with external state without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured, using a table to organize the three operations. No redundant sentences; all content is informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description briefly indicates return types (e.g., 'list projects', 'inspect metadata, owner, member count', 'show current user info'), which is sufficient for a read-only tool. It covers credential handling and operation-specific arguments effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes op and project (100% coverage). The description goes further by mapping each operation to its required/optional arguments, clarifying that get needs project while list and whoami don't, which is not evident from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'List or inspect Taiga projects and verify credentials' and then enumerates three operations (list, get, whoami) in a structured table, making the tool's purpose unmistakable and distinct from siblings like sprints or work.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance to use the whoami operation for credential verification, and the table indicates when each op applies (e.g., get for inspecting a specific project's metadata). While it doesn't name sibling alternatives, the resource-specific scope makes the use case clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sprintsSprintsA

Manage Taiga sprints (milestones): list, inspect, create, or fetch statistics.

Operations:

  • list: List sprints in a project. Requires project.

  • get: Get sprint details and assigned stories. Requires sprint (ID or name); project required if sprint is a name.

  • stats: Get sprint progress statistics and metrics. Requires sprint; project required if sprint is a name.

Sprint deletion is intentionally not exposed: removing a milestone detaches every story and task on it, so it is a board-wide edit that belongs in the Taiga UI. Delete individual work items with the work tool instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYesOperation to perform
nameNoSprint name (for create)
startNoStart date YYYY-MM-DD (for create)
finishNoFinish date YYYY-MM-DD (for create)
sprintNoSprint ID or name (for get, stats)
projectNoProject ID or slug

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate non-read-only, non-destructive, open-world. The description adds valuable context that sprint deletion is intentionally not exposed because it detaches all stories/tasks, a board-wide edit better done in the UI. This goes beyond annotations by explaining the design rationale, though it does not detail auth or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a brief overview and bullet-pointed operations. Every line provides necessary information without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description covers all operations, required parameters, exclusions (deletion), and points to the correct sibling tool for related actions. It is sufficiently complete for an agent to select and invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions. The description adds operational context (e.g., which parameters are required for which op, project needed when sprint is a name) beyond the schema, improving the agent's ability to invoke the tool correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it manages Taiga sprints with specific operations (list, get, create, stats). It distinguishes from siblings by explicitly mentioning the work tool for deletion and implying project tool for project-level tasks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit operation-specific prerequisites (e.g., 'Requires project' for list, 'project required if sprint is a name' for get/stats). Also gives an alternative: 'Delete individual work items with the work tool instead' when discussing deletion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wikiWikiA
Destructive

Create, inspect, update, delete, or watch wiki pages in a project.

op

required args

optional args

notes

list

project

List all wiki pages in project

get

page

project

Inspect wiki page metadata and content; project needed if page is slug

create

project, page

content

Create wiki page; page is the slug

update

page, content

project

Update wiki page content (OCC versioned); project needed if page is slug

delete

page

project

Delete wiki page permanently; project needed if page is slug

watch

page

project, watch

Watch (default) or unwatch wiki page; project needed if page is slug

ParametersJSON Schema
NameRequiredDescriptionDefault
opYesOperation to perform: list, get, create, update, delete, watch
pageNoWiki page ID or slug
watchNoTrue to watch, false to unwatch (default true)
contentNoWiki page content in Markdown
projectNoProject ID or slug

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description exposes meaningful behavior beyond the annotations: delete is described as permanent, update is described as OCC versioned, watch defaults to true, and list/get inspect metadata and content. This goes well beyond the bare readOnlyHint=false and destructiveHint=true annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The operation table is a compact and scannable way to present six different modes in one tool. It is mainly efficient, although the repeated 'project needed if page is slug' note could be consolidated; still, the structure gives high clarity without unnecessary prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is highly complete for selecting and invoking each operation because it maps required args, slugs, content format, watch default, and destructive flag. With no output schema, a little more detail about the actual returned data shape would round it out, but the agent can safely and correctly call the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The table adds per-operation required/optional semantics beyond the raw schema, clarifies page as ID/slug, and explains when project is needed. It also documents content as Markdown and watch default behavior, so an agent can invoke each operation correctly without guessing parameter combinations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a clear action list—'Create, inspect, update, delete, or watch wiki pages'—and then concretely defines each operation against the wiki page resource. This makes the tool's scope unambiguous and keeps the list/get/create/update/delete/watch overloaded operation distinct from sibling resource tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The operation table gives explicit routing for each op and states which arguments are required versus optional, including the important condition that project is needed when page is a slug. It does not explicitly contrast the tool with sibling tools, but the table provides sufficient when-to-use guidance for each operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workWork itemsA
Destructive

Manage Taiga work items (issues, user stories, tasks, epics).

Operations:

  • list: List items with optional filters (project required).

  • get: Get details for a single item (item required).

  • create: Create one item or batch items (project and subject/items required).

  • update: Modify fields on an item (item required).

  • link: Link a user story to an epic (type: story, item: story, parent: epic required).

  • unlink: Remove a user story from an epic (type: story, item: story, parent: epic required).

  • delete: Permanently delete ONE item (item required). Taiga has no trash for work items, so this cannot be undone. Batch is deliberately create-only: up to 20 items can be created in a call, exactly one can be deleted, so a mistaken call cannot clear a board.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFull-text search query
opYesOperation to perform
itemNoItem numeric ID or #ref
tagsNoTags array
typeYesWork item type
itemsNoBatch create items array (max 20)
limitNoMaximum number of items to return
closedNoFilter by closed state
parentNoParent story (tasks) or epic (link/unlink)
pointsNoPoints value matching project point deck (e.g. 1, 3, 5, or "?" for unestimated; stories only)
sprintNoSprint ID or name ("none" to clear)
statusNoStatus name
orderByNoOrder by field, prefix "-" for desc
projectNoProject ID or slug
subjectNoItem subject or title
watcherNoFilter by watcher username, email, or "me"
assigneeNoAssignee username, email, full name, ID, or "me"
priorityNoPriority name (issues only)
severityNoSeverity name (issues only)
issueTypeNoIssue type name (issues only)
descriptionNoItem description markdown

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly warns that delete is permanent and that Taiga has no trash, and explains the batch create-only safeguard prevents accidental board clearing. This adds substantial safety context beyond the destructiveHint annotation, and there is no contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured, starting with a one-line summary followed by a bulleted list of operations. Every sentence provides operational guidance, with no filler or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All seven operations have their required parameters stated, the delete behavior carries a detailed permanence warning with rationale, and the batch limit is explicitly noted. Without an output schema, this description sufficiently covers invocation semantics for a complex 21-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 21 parameters already have descriptions. The tool description only reiterates which parameters are required for specific operations (e.g., project required) without adding new semantic meaning. The schema carries the parameter documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Manage Taiga work items (issues, user stories, tasks, epics)' and enumerates seven distinct operations with specific verbs (list, get, create, update, link, unlink, delete). This makes the tool's purpose unambiguous and clearly distinguishes it from sibling tools like projects, sprints, and wiki.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The operation list provides clear context with required parameters for each operation (e.g., 'project required', 'item required') and includes a safety warning about delete being permanent. However, it does not explicitly state when to use this tool over alternatives, though the separation from siblings is implicit in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv1.0.0
    • First observedattachments
    • First observedcomments
    • First observedprojects
    • First observedsprints
    • First observedwiki
    • First observedwork

TDQS

A4.5/5.0
Disambiguation5/5

Each tool maps to a distinct Taiga resource: projects, work items, sprints, comments, attachments, and wiki. Shared type/item parameters are used for child resources, but the tool purposes do not overlap.

Naming Consistency4/5

Top-level tool names are simple lowercase resource nouns and are internally consistent. The pattern is slightly mixed because some names are plural resources while work and wiki are singular, and the internal op verbs vary between add/create and edit/update.

Tool Count5/5

Six resource-scoped tools is a well-balanced surface for a project-management server. Each tool represents a meaningful functional area without making the tool list overwhelming.

Completeness4/5

The server covers most core workflows: project inspection, work-item CRUD, sprints, comments, attachments, and wiki with lifecycle operations. Deliberate gaps such as project creation/deletion and sprint update/delete prevent it from being fully complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Full-featured MCP server for Taiga project management, enabling AI agents to manage projects, epics, user stories, tasks, issues, sprints, wiki pages, memberships, and roles via Taiga API v1.
    100
    46
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for the Taiga project management API. Enables AI assistants to manage projects, issues, user stories, tasks, epics, sprints, and wiki pages via natural language commands.
    55
    12
    ISC
  • F
    license
    C
    quality
    D
    maintenance
    MCP server for the Zube.io project management API, exposing boards, cards, epics, tickets, sprints, and workspaces as tools for AI assistants.
    42
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/negoro26/mcp-taiga'

If you have feedback or need assistance with the MCP directory API, please join our Discord server