Skip to main content
Glama

Taiga MCP Server

CI npm version Node.js License MCP

Model Context Protocol(MCP)サーバーで、Taiga プロジェクト管理プロジェクト向けです。TypeScript で書かれ、Model Context Protocol SDK 上に構築され、stdio トランスポートで動作します(リモートおよび Web クライアント向けに、オプションでストリーミング対応 HTTP トランスポートも利用可能)。LLM クライアントと Taiga インスタンスを接続し、プロジェクト、成果物(課題、ユーザーストーリー、タスク、エピック)、スプリント、コメント、添付ファイル、Wiki ページを表示・管理できます。

サーバーはすべての機能を6つのオペレーション実行ツールに集約しており、最小限のトークントムオーバーヘッドで、人間と LLM の両方に読みやすい凝縮されたテキストレスポンスを提供します。

Contents

Related MCP server: @illodev/taiga-mcp

特徴

  • <== 6ツール・28オペレーションペア: プロジェクト、成果、スプリント、コメント、添付、Wiki ページを網羅。tools/list ペイロード全体は、約10.6 KB(約2.6万トークン)です。11文字(enables)。

  • 読み取りやすい識別子があらゆるところで利用可能: プロジェクトは ID または slug、成果はデータベース ID または #reference、メンバーは ID、ユーザー名、フルネーム、または "me""で指定。ステータス、優先度、重大度、課題種別、スプリント名はサーバー側で解決されます。

  • 凝縮されたテキスト出力 一覧では1テキスアイテムあたり1行、シンプルなキー・バージョン詳細ビュー。空のコレクションはエラーではなくデータとして報告されます。

  • 一括作成 1回の呼び出しで最大20件の成果物を作成可能。削除は意図的に1ターゲットだけです。

  • 信頼性を支える対策: Retry-After に従ったレートリミット時のリトライ、30秒のHTTPタイムアウト、60秒のメタデータキャッシュ、5xxの自動リトライは行いません(変更リクエストが既に着信している可能性があるため)。

  • 添付安全性: ホスト名を固定したダウンロード、10MB上限、上書き保護、メディアホストへのベアラートークンの送信も行いません。

  • デュアルトランスポート: 省略時はstdio、TAIGA_HTTP_PORT が設定されている場合はlocalhostのストリーミングHTTP。

要件と設定

  • Node.js >= 20.11

  • taiga.io または セルフホストの Taiga インスタンスの Taiga アカウント

  • 以下の3つの環境変数が設定されていること:

| 変数 | 説明 | デフォルト | | ---- | -------------------------------------- | ------------------------------- | ----------------- | | TAIGA_API_URL | Taiga REST APIのベースURL(/api/v1 を含む必要があります) | https://api.taiga.io/api/v1 | | TAIGA_USERNAME | Taiga ユーザー名またはメールアドレス | 必須 | | TAIGA_PASSWORD | Taiga アカウントのパスワード | 必須 |

オプションのトランスポート変数:

変数

説明

デフォルト

TAIGA_HTTP_PORT

設定すると、stdio の代わりにストリーミングHTTPでMCPを提供します

(未設定:stdio)

TAIGA_HTTP_HOST

HTTPトランスポートのバインドホスト

127.0.0.1

クイックスタート

最もセットアップが簡単なのは、npx を使うClaude Desktopです(リポジトリのチェックアウトは不要)。

{
  "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 → Settings → Developer → Edit Config から claude_desktop_config.json(Windows では %APPDATA%\Claude\claude_desktop_config.json、macOS では ~/Library/Application Support/Claude/claude_desktop_config.json)を開き、デスクトップアプリを再起動してください:

{
  "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", "..."]

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"
      }
    }
  }
}

拡張パネルから開始する(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(設定) → MCP MCP & Integrations でサーバーを有効にしてください。

Windsurf

~/.codeium/windsurf/mcp_config.json を編集します(または Windsurf Settings → Cascade → MCP Servers → Manage MCPs → 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

3つすべての VS Code 拡張機能は同等の JSON 設定ファイルを読み取ります。各拡張機能の MCP サーバーパネル(鉛筆アイコンで生のファイルを開く)から編集できます:

拡張機能

設定ファイル(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 は、設定の mcpServers: ブロック、または .continue/mcpServers/ の独立した YAML ファイルから MCP サーバーを読み取ります。(そのディレクトリに置かれた Claude/Cursor/Cline の JSON 設定もそのまま受け付けます):

# ~/.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 IDEs

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"]
    }
  }
}

CLI内の /mcp list で登録を確認します。

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 スタイルのスキーマとは異なmult。

Amp

ユーザースコープのサーバーではCLIを推奨:

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

または、~/.config/amp/settings.jsonamp.mcpServers を宣言します(ワークスペース .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 は Claude スタイルのMCP設定を2つのスコープで読み取ります:~/.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 が含まれているため、ローカルチェックアウト内で培地を起動すると、自動的にローカルビルドが使用されます。(そこではサーバーがリポジトリの .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 を含む)。

リモート・Webクライアント(HTTPトランスポート)

TAIGA_HTTP_PORT を設定すると、stdio ではなくストリーミング対応 HTTP で同じ6ツールを公開します。ローカルプロセンスを生成できないクライアントや、共有インスタンスを1つ実行する場合に便利です。

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

プロパティ: ステートレスモード(セッションヘッダーなし)、TAIGA_HTTP_HOST で上書きしない限り 127.0.0.1 がバインド(ループバック以外のバインドでは、stderr に平文HTTP警告が表示されます)、ヘッダーが -32700 の不明な形式、/mcp への非POSTメソッドは 405 を返します。

クライアントはコマンドではなく URL で接続します。

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

Continue.dev 相当: type: streamable-httpurl:。opencode 相当: type: "remote"url:。プロセスはクライアントではなく手動で起動するため、TAIGA_USERNAME/TAIGA_PASSWORD をそのシェルで export してください(または systemd ユニット、コンテナなど)。

コンテナ

同梱の2段階 Dockerfile は Node 22 Alpine と非ルートの node ユーザーを使用します。ビルドステージで TypeScript をコンパイルし、ランタイムステージにはコンパイル済みの dist/src と本番の依存関係のみをパッケージします。

コンテナイメージをビルドします:

docker build -t mcp-taiga .

コンテナを標準の標準入出力に接続して実行します:

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

Podman では直接置き換えが可能です: 上記のコマンドの dockerpodman に置き換えます。

MCP クライアント設定をコンテナ実行向けに指定します:

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

HTTP デプロイの場合は、ポートを公開します: docker run --rm -p 127.0.0.1:3000:3000 -e TAIGA_HTTP_PORT=3000 --env-file .env mcp-taiga とし、URLベースのクライアントを http://127.0.0.1:3000/mcp に向けます。

意図的に、compose ファイルは存在しません。MCP stdio サーバーは、クライアントの stdin と stdout ストリームに直接接続された状態で生成されなければならず、その stdin ストリームが閉じた時点で終了します。長時間稼働するバックグラウンドサービスを維持しようとするプロセススーパーバイザーや compose のセットアップは、無限の再起動ループとコンテナ名の衝突を引き起こします。

規約

  • プロジェクト: プロジェクトの引数は、数値のプロジェクト ID(例: 19)または slug(例: "acme-web")を受け付けます。

  • 作業項目: 作業項目の引数は、数値のデータベース ID(例: 1888)またはハッシュ接頭辞付きの参照(例: "#70")を受け付けます。#reference の解決には project 引数が必要です。

  • 人物: メンバーの引数は、数値のユーザー ID、ユーザー名(例: "jdoe")、氏名(例: "Jane Doe")、または "me" のリテラルを受け付けます。

  • 分類: ステータス、優先度、重要度、課題種別、スプリント名は人間が読める名前を受け付け、サーバー側で数値 ID に解決されます。

  • 複数アサインのユーザーストーリー: Taiga のユーザーストーリーは assigned_users による複数アサインをサポートしています。work list type:story での assignee による絞り込みは共同アサインにも一致し、一覧には主担当者だけでなくすべてのアサインが表示されます。

  • 高密度テキスト結果: 結果はプレーンテキストで、各レコードを高密度に1行で表すか、詳細ビューでは簡潔なキーと値のブロックとして整形されます。structuredContent を読むコンシューマーは存在しないため、結果はテキストのみです。空のコレクションはエラーではなく <items> in <project>: 0 として報告されます。

  • 全件返却: 一覧エンドポイントは完全なコレクションを返します。クライアントが x-disable-pagination: true リクエストヘッダーを送信するため、複数ページの往復が不要になります。

ツールが6つである理由

単一目的のツールが乱立すると、ツールを呼び出す前にコンテキストウィンドウのオーバーヘッドが大きく生じます。機能を6つの op をディスパッチするドメインツールに集約することで、tools/list のペイロードは約10,493文字(~2,800トークン)に抑えられます。

出力スキーマはツール登録から意図的に省略されています。MCP クライアントのブリッジはテキストコンテンツを連結し、outputSchemastructuredContent を無視するため、出力スキーマを省略することでセッション起動時の不要なトークンオーバーヘッドがなくなります。

ツールリファレンス

サーバーは、28のオペレーションペアを網羅する6つのツールを公開しています。

1. projects

Taiga のプロジェクトに対して一覧・詳細表示を行い、認証情報を検証します。

操作

説明

必須引数

任意引数

list

認証済みユーザーがメンバーであるプロジェクトを一覧する

(なし)

(なし)

get

プロジェクトのメタデータ、オーナー、メンバー数、有効なモジュールを表示する

project

(なし)

whoami

認証情報を検証し、現在のユーザー情報を表示する

(なし)

(なし)

2. work

課題(issue)、ユーザーストーリー、タスク、エピックを管理します(type: issue, story, task, epic)。

操作

説明

必須引数

任意引数

list

サーバーサイドのフィルターで作業項目を一覧する

type, project

assignee, watcher, sprint, status, tags, closed, q, orderBy, limit, parent(タスク)

get

作業項目の完全な詳細と説明を取得する

type, item

project(item が #ref の場合は必須)

create

単一の作業項目またはバッチ項目を作成する

type, project, subject またはバッチの場合は items、タスクの場合は parent が必要

description, status, assignee, sprint, tags, priority(issue), severity(issue), issueType(issue), points(story), parent(story ではエピック / バッチではデフォルト), items(最大20件)

update

既存の作業項目のフィールドを更新する

type, item

project(item が #ref の場合は必須), subject, description, status, assignee, sprint, tags, priority, severity, issueType, points

link

ユーザーストーリーをエピックにリンクする

typestory), item(ストーリー), parent(エピック)

project(item または parent が #ref の場合は必須)

unlink

ユーザーストーリーをエピックからリンク解除する

typestory), item(ストーリー), parent(エピック)

project(item または parent が #ref の場合は必須)

delete

単一の作業項目を完全に削除する

type, item

project(item が #ref の場合は必須)

3. sprints

スプリント(マイルストーン)を管理し、進行状況の統計を表示します。

操作

説明

必須引数

任意引数

list

プロジェクト内のスプリントを一覧する

project

(なし)

get

スプリントの詳細と割り当てられたユーザーストーリーを取得する

sprint

project(sprint が名前の場合は必須)

create

新しいスプリントマイルストーンを作成する

project, name

start(YYYY-MM-DD), finish(YYYY-MM-DD)

stats

スプリントの進行状況の統計と完了指標を取得する

sprint

project(sprint が名前の場合は必須)

スプリントの削除は意図的に公開していません。マイルストーンを削除すると、その中のすべてのストーリーとタスクがデタッチされ、ボード全体に影響する操作になるため、これは Taiga の UI で行うべきものです。

4. comments

作業項目と wiki ページへのコメントを一覧・追加・編集・削除します(type: issue, story, task, epic, wiki)。

操作

説明

必須引数

任意引数

list

コメントを古い順に一覧する

type, item

project#ref または wiki slug の場合は必須), includeDeleted

add

アイテムにコメントを追加する

type, item, text

project#ref または wiki slug の場合は必須)

edit

UUID で既存のコメントを編集する

type, item, commentId, text

project#ref または wiki slug の場合は必須)

delete

UUID でコメントを論理削除する

type, item, commentId

project#ref または wiki slug の場合は必須)

5. attachments

作業項目と wiki ページへのファイル添付を管理します(type: issue, story, task, epic, wiki)。

操作

説明

必須引数

任意引数

list

アイテムに添付されたファイルを一覧する

type, item

project#ref または wiki slug の場合は必須)

upload

ローカルパスまたは base64 からファイルをアップロードする

type, item, filePath または fileContent

project, fileName, mimeType, description

download

添付ファイルのメタデータを取得し、必要に応じてファイルをディスクに書き込む

type, attachmentId

savePath(ダウンロードしたファイルの保存先パス)

delete

添付ファイルを完全に削除する

type, attachmentId

(なし)

6. wiki

プロジェクト内の wiki ページとページ購読を管理します。

操作

説明

必須引数

任意引数

list

プロジェクト内のすべての wiki ページを一覧する

project

(なし)

get

wiki ページのメタデータと Markdown コンテンツを表示する

page(ID または slug)

project(page が slug の場合は必須)

create

新しい wiki ページを作成する

project, page(slug)

content

update

wiki ページのコンテンツを更新する

page(ID または slug), content

project(page が slug の場合は必須)

delete

wiki ページを完全に削除する

page(ID または slug)

project(page が slug の場合は必須)

watch

wiki ページをウォッチまたはウォッチ解除する

page(ID または slug)

project(page が slug の場合は必須), watch(真偽値、デフォルトは true)

信頼性と安全性

  • レート制限(429): サーバーはHTTP 429応答を最大2回再試行し、サーバーのRetry-Afterヘッダーを尊重します。必要な待機時間が5秒の上限(MAX_THROTTLE_WAIT_MS)を超える場合、待機せずに再試行を促すメッセージとともに直ちに例外をスローします。

  • 5xxエラーは再試行しない: 5xx応答は自動的に再試行されません。変更を伴うリクエスト(POSTなど)がサーバー側で適用済みである可能性があり、繰り返すと重複レコードが作られるリスクがあるためです。

  • メタデータキャッシュ: プロジェクトのメタデータ(slugルックアップ、ユーザーのメンバーシップ、ステータス・優先度・重大度・課題タイプのタクソノミ一覧)は、getMetadataを介して60秒間(METADATA_TTL_MS)キャッシュされます。作業項目・コメント・添付ファイルは一切キャッシュされません。

  • タイムアウト: HTTPリクエストには30秒のタイムアウト(REQUEST_TIMEOUT_MS)が適用されます。

  • HTTPSの強制: TAIGA_API_URLがループバック以外のホストに対して暗号化されていないHTTPを使用している場合、サーバーはstderrに警告を出力します。

  • 添付ファイルのダウンロード制限: ダウンロードは設定されたTaigaホスト名のみに厳密に制限され、リダイレクトは許可されません(maxRedirects: 0)。最大ファイルサイズは10MB(MAX_ATTACHMENT_BYTES)に制限されます。ダウンロードリクエストがTaigaのベアラートークンをメディアホストに送信することはありません。

  • ファイルの上書き保護: savePathを指定した添付ファイルのダウンロードは、既存のローカルファイルを上書きしません。

  • 単一ターゲットの削除: 削除操作は一度に1つのターゲットのみを受け付けます。バッチ操作は作成専用(最大20件)で、ボード全体を誤って削除する事態を防ぎます。

セキュリティ上の考慮事項

  • 認証情報は環境変数またはハーネスの設定ファイルを介して渡します。コマンドライン引数(プロセスリストから漏えいします)やリポジトリには決して入れません。インラインパスワードを含むハーネスの設定ファイルはバージョン管理の対象外にしてください。.gitignoreは既に、.env.exampleを除く.env*を除外しています。

  • オプションのHTTPトランスポートはデフォルトでループバックにバインドし、DNSリバインディング対策を有効にします。ルーティング可能なアドレスにバインドする場合は、トラフィックが暗号化されていないため警告を出力します。

  • 添付ファイルのダウンロードでは、Taigaホスト名の外にBearerトークンが送信されることはありません。リダイレクトは拒否され、ファイルサイズは上限つきで、既存ファイルの上書きも拒否されます。

  • 削除手段は設計上単一ターゲットであり、バッチ削除はありません。

FAQ

どのMCPクライアントで使用できますか? stdio MCPと通信できるものであれば何でも使用できます。インストールガイドでは17のクライアントを扱っています(コピー&ペースト用設定つき)。そのほか、URLベースのクライアントはHTTPトランスポートを利用できます。

セルフホストのTaigaでも動作しますか? はい。TAIGA_API_URLに、ご自身のインスタンスのURLを/api/v1までのパス付きで設定してください(例: https://taiga.example.com/api/v1)。それ以外はすべて同じに動作します。リクエストが404を返す場合はトラブルシューティングを参照してください。

複数のTaigaアカウントやインスタンスを接続できますか? 1つのサーバープロセスではできません。起動時に環境から読み取る認証情報は1セットだけです。mcpServersの配下に、独自のenv値を指定した追加エントリ(例: "taiga-work")を登録してください。各エントリは、mcp__taiga-work__workのような独立したツール名前空間になります。

パスワードはどこへ行くのですか? envブロックからメモリへ、そしてログイン処理のときに設定されたTaigaホストにだけ送信されます。コマンドライン(プロセスリストから漏洩します)、ログ、ツール結果、添付ファイルのダウンロード先に送られることはありません。セキュリティの考慮事項を参照してください。

読み取り専用ですか? いいえ。作業項目、スプリント、コメント、添付ファイル、ウィキページの作成・更新・リンク/リンク解除・削除をサポートしています。スプリントの削除と一括削除は意図的に設けていません。

信頼性と安全性を参照してください。

他のMCPサーバーが何十個ものツールを公開しているのに、なぜ6個だけなのですか? コンテキストウィンドウの経済性のためです。ツール定義はセッションを開始するたびにコストが発生します。6ツールの理由を参照してください。

壊れてしまったら、どこから調べ始めるべきですか? トラブルシューティングに対応を潰が記載しています。それでも解決しない場合は、失敗したツール呼び出しとサーバーのstderr出力を添えて、GitHubのIssueを登録してください。

トラブルシューティング

  • 認証エラーprojectsツールをop: whoamiで実行してください。その認証のどの段階で失敗したかを正確に報告します。env値に余計な空白入っていないか、そのアカウントがTaigaのWeb UIで有効であるかも確認してください。

  • セルフハンドのインスタンスが404を返すTAIGA_API_URLには/api/v1 を含める必要があります(例: https://taiga.example.com/api/v1)。

  • サーバーは起動するが、npxクライアントにツールが見えない — ハーネスの環境でNode.js >= 20.11が動いていることを確認してください。GUIランチャは、シェルのPATHとは別の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: src/test/のTypeScriptをtscdist/へコンパイルします。

  • npm run check: 出力を出さずにTypeScriptの型チェックを行います(tsc --with noEmit)。

  • npm run lint: src/test/でoxlintを実行します。

  • npm start: コンパイル済みサーバーを実行します(node dist/src/index.js)。

  • npm test: 単体、プロトコル、コントラクト、HTTPトランスポートのテストスイートを順にコンパイルかつ実行します。

  • npm run test:unit: オフラインの単体テストをコンパイルし実行します。

  • npm run test:protocol: stdio上でMCP protocolテストをコンパイルして実行します。

  • npm run test: http: ストリーミング対応HTTPトランスポートのテストをコンパイルして実行します。

  • npm run test:contract: モックのTaigaサーバーに対するAPI exampleテストをコンパイルして実行します。

  • npm run test:integration: ライブインスタンスに対してライブの統合テストをコンパイルして実行します。

  • npm run ci:publish: 公開前に型チェック、lint、全テストスイートを実行します。

テストスイート

  1. Unit Tests (test/unitTest.ts): ネットワーク呼び出しや認証情報を使わない、書式を決める純粋な関数、レスポンスビルダー、識別子解決ヘルパー、ツール定義の不変条件を検証するオフライン単体テスト。

  2. protcol Tests (test/protocolTest.ts): 起動したサーバープロセスに対して、実際のMCP stdio ハンドシェイク、サーバーのversionと capability、toolスキーマ、tools/listの文字数予算を検証するprotocolテスト。

  3. HTTP tests (test/httpTest.ts): TAIGA_HTTP_PORTを指定してコンパイル済みサーバーを起動し、localhost上で実際のstreamable HTTPのハンドシェイク、プロトコルバージョンのエコー、ステートレス動作、tools/listの内容、400/404/405ルーティング拒否を検証するテスト。

  4. 契約テスト (test/apiContractTest.ts): すべてのツールとオペレーションが期待どおりのHTTPリクエスト(メソッド、エンドポイント、クエリパラメーター、ヘッダー、ペイロード)を送信し、プロセス内で動作するモックのTaigaHTTPサーバーからのレスポンスを処理することを確認する契約テスト。

  5. 統合テスト (test/integration.ts): 実際のTaigaインスタンスに対してstdio越しに読み取り専用のツール操作を確認するライブなスモークテスト(認証情報未設定時には二重線でSKIP)。

Contributing

プルリクエストはdevを対象としてください。ブランチモデル(devstagingmain)、コミット規約、そしてリリース手順についてはCONTRIBUTING.mdを参照してください。

変更履歴

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