Taiga MCP Server
Taiga MCP Server
Model Context Protocol(MCP)サーバーで、Taiga プロジェクト管理プロジェクト向けです。TypeScript で書かれ、Model Context Protocol SDK 上に構築され、stdio トランスポートで動作します(リモートおよび Web クライアント向けに、オプションでストリーミング対応 HTTP トランスポートも利用可能)。LLM クライアントと Taiga インスタンスを接続し、プロジェクト、成果物(課題、ユーザーストーリー、タスク、エピック)、スプリント、コメント、添付ファイル、Wiki ページを表示・管理できます。
サーバーはすべての機能を6つのオペレーション実行ツールに集約しており、最小限のトークントムオーバーヘッドで、人間と LLM の両方に読みやすい凝縮されたテキストレスポンスを提供します。
Contents
機能 · 要件と設定 · クイックスタート · ローカルチェックアウト · リモートおよびWebクライアント(HTTPトランスポート) · コンテナ
インストール Claude Code · Claude Desktop · VS Code / Copilot · Cursor · Windsurf · Cline / Roo / Kilo · Continue.dev · Zed · JetBrains · Gemini CLI · Codex CLI · opencode · Amp · Pi · Oh My Pi
ツール 規約 · 6つのツールの理由 · ツールリファレンス:
projects·work·sprints·comments·attachments·wiki運用: 信頼性と安全性 · セキュリティ · FAQ · トラブルシューティング · 開発 · 貢献 · チェンジログ · ライセンス
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 アカウントのパスワード | 必須 |
オプションのトランスポート変数:
変数 | 説明 | デフォルト |
| 設定すると、stdio の代わりにストリーミングHTTPでMCPを提供します | (未設定:stdio) |
| HTTPトランスポートのバインドホスト |
|
クイックスタート
最もセットアップが簡単なのは、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 では |
Cline |
|
Roo Code |
|
Kilo Code |
|
トップレベルの "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_passwordMCP ツールはエージェントモードで有効です。
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.json に amp.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-http と url:。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-taigaPodman では直接置き換えが可能です: 上記のコマンドの docker を podman に置き換えます。
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 クライアントのブリッジはテキストコンテンツを連結し、outputSchema と structuredContent を無視するため、出力スキーマを省略することでセッション起動時の不要なトークンオーバーヘッドがなくなります。
ツールリファレンス
サーバーは、28のオペレーションペアを網羅する6つのツールを公開しています。
1. projects
Taiga のプロジェクトに対して一覧・詳細表示を行い、認証情報を検証します。
操作 | 説明 | 必須引数 | 任意引数 |
| 認証済みユーザーがメンバーであるプロジェクトを一覧する | (なし) | (なし) |
| プロジェクトのメタデータ、オーナー、メンバー数、有効なモジュールを表示する |
| (なし) |
| 認証情報を検証し、現在のユーザー情報を表示する | (なし) | (なし) |
2. work
課題(issue)、ユーザーストーリー、タスク、エピックを管理します(type: issue, story, task, epic)。
操作 | 説明 | 必須引数 | 任意引数 |
| サーバーサイドのフィルターで作業項目を一覧する |
|
|
| 作業項目の完全な詳細と説明を取得する |
|
|
| 単一の作業項目またはバッチ項目を作成する |
|
|
| 既存の作業項目のフィールドを更新する |
|
|
| ユーザーストーリーをエピックにリンクする |
|
|
| ユーザーストーリーをエピックからリンク解除する |
|
|
| 単一の作業項目を完全に削除する |
|
|
3. sprints
スプリント(マイルストーン)を管理し、進行状況の統計を表示します。
操作 | 説明 | 必須引数 | 任意引数 |
| プロジェクト内のスプリントを一覧する |
| (なし) |
| スプリントの詳細と割り当てられたユーザーストーリーを取得する |
|
|
| 新しいスプリントマイルストーンを作成する |
|
|
| スプリントの進行状況の統計と完了指標を取得する |
|
|
スプリントの削除は意図的に公開していません。マイルストーンを削除すると、その中のすべてのストーリーとタスクがデタッチされ、ボード全体に影響する操作になるため、これは Taiga の UI で行うべきものです。
4. comments
作業項目と wiki ページへのコメントを一覧・追加・編集・削除します(type: issue, story, task, epic, wiki)。
操作 | 説明 | 必須引数 | 任意引数 |
| コメントを古い順に一覧する |
|
|
| アイテムにコメントを追加する |
|
|
| UUID で既存のコメントを編集する |
|
|
| UUID でコメントを論理削除する |
|
|
5. attachments
作業項目と wiki ページへのファイル添付を管理します(type: issue, story, task, epic, wiki)。
操作 | 説明 | 必須引数 | 任意引数 |
| アイテムに添付されたファイルを一覧する |
|
|
| ローカルパスまたは base64 からファイルをアップロードする |
|
|
| 添付ファイルのメタデータを取得し、必要に応じてファイルをディスクに書き込む |
|
|
| 添付ファイルを完全に削除する |
| (なし) |
6. wiki
プロジェクト内の wiki ページとページ購読を管理します。
操作 | 説明 | 必須引数 | 任意引数 |
| プロジェクト内のすべての wiki ページを一覧する |
| (なし) |
| wiki ページのメタデータと Markdown コンテンツを表示する |
|
|
| 新しい wiki ページを作成する |
|
|
| wiki ページのコンテンツを更新する |
|
|
| wiki ページを完全に削除する |
|
|
| wiki ページをウォッチまたはウォッチ解除する |
|
|
信頼性と安全性
レート制限(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をtscでdist/へコンパイルします。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、全テストスイートを実行します。
テストスイート
Unit Tests (
test/unitTest.ts): ネットワーク呼び出しや認証情報を使わない、書式を決める純粋な関数、レスポンスビルダー、識別子解決ヘルパー、ツール定義の不変条件を検証するオフライン単体テスト。protcol Tests (
test/protocolTest.ts): 起動したサーバープロセスに対して、実際のMCP stdio ハンドシェイク、サーバーのversionと capability、toolスキーマ、tools/listの文字数予算を検証するprotocolテスト。HTTP tests (
test/httpTest.ts):TAIGA_HTTP_PORTを指定してコンパイル済みサーバーを起動し、localhost上で実際のstreamable HTTPのハンドシェイク、プロトコルバージョンのエコー、ステートレス動作、tools/listの内容、400/404/405ルーティング拒否を検証するテスト。契約テスト (
test/apiContractTest.ts): すべてのツールとオペレーションが期待どおりのHTTPリクエスト(メソッド、エンドポイント、クエリパラメーター、ヘッダー、ペイロード)を送信し、プロセス内で動作するモックのTaigaHTTPサーバーからのレスポンスを処理することを確認する契約テスト。統合テスト (
test/integration.ts): 実際のTaigaインスタンスに対してstdio越しに読み取り専用のツール操作を確認するライブなスモークテスト(認証情報未設定時には二重線でSKIP)。
Contributing
プルリクエストはdevを対象としてください。ブランチモデル(dev → staging → main)、コミット規約、そしてリリース手順についてはCONTRIBUTING.mdを参照してください。
変更履歴
CHANGELOG.mdを参照してください。
ライセンス
Available Tools
6 toolsattachmentsAttachmentsADestructive
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 |
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | Operation to perform: list, upload, download, delete | |
| item | No | Item numeric ID, #ref, or wiki slug | |
| type | No | Target item type (issue, story, task, epic, wiki) | |
| project | No | Project ID or slug (required for #ref or wiki slug) | |
| fileName | No | File name including extension | |
| filePath | No | Local 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) | |
| mimeType | No | MIME type of uploaded file | |
| savePath | No | Local filesystem path to save downloaded file | |
| description | No | Attachment description text | |
| fileContent | No | Base64-encoded file content to upload | |
| attachmentId | No | Attachment ID for download or delete |
TDQS
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.
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.
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.
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.
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.
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.
commentsCommentsADestructive
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 |
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | Operation to perform | |
| item | No | Item ID, #reference, or wiki slug | |
| text | No | Comment markdown text (add, edit) | |
| type | No | Item type | |
| project | No | Project ID or slug (required for #ref or wiki slug) | |
| commentId | No | Comment UUID (edit, delete) | |
| includeDeleted | No | Include soft-deleted comments (list) |
TDQS
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.
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.
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.
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.
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.
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.
projectsProjectsARead-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 |
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | Operation to perform: list, get, or whoami | |
| project | No | Project ID or slug (required for get) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | Operation to perform | |
| name | No | Sprint name (for create) | |
| start | No | Start date YYYY-MM-DD (for create) | |
| finish | No | Finish date YYYY-MM-DD (for create) | |
| sprint | No | Sprint ID or name (for get, stats) | |
| project | No | Project ID or slug |
TDQS
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.
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.
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.
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.
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.
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.
wikiWikiADestructive
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 |
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | Operation to perform: list, get, create, update, delete, watch | |
| page | No | Wiki page ID or slug | |
| watch | No | True to watch, false to unwatch (default true) | |
| content | No | Wiki page content in Markdown | |
| project | No | Project ID or slug |
TDQS
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.
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.
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.
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.
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.
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 itemsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Full-text search query | |
| op | Yes | Operation to perform | |
| item | No | Item numeric ID or #ref | |
| tags | No | Tags array | |
| type | Yes | Work item type | |
| items | No | Batch create items array (max 20) | |
| limit | No | Maximum number of items to return | |
| closed | No | Filter by closed state | |
| parent | No | Parent story (tasks) or epic (link/unlink) | |
| points | No | Points value matching project point deck (e.g. 1, 3, 5, or "?" for unestimated; stories only) | |
| sprint | No | Sprint ID or name ("none" to clear) | |
| status | No | Status name | |
| orderBy | No | Order by field, prefix "-" for desc | |
| project | No | Project ID or slug | |
| subject | No | Item subject or title | |
| watcher | No | Filter by watcher username, email, or "me" | |
| assignee | No | Assignee username, email, full name, ID, or "me" | |
| priority | No | Priority name (issues only) | |
| severity | No | Severity name (issues only) | |
| issueType | No | Issue type name (issues only) | |
| description | No | Item description markdown |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v1.0.0- First observed
attachments - First observed
comments - First observed
projects - First observed
sprints - First observed
wiki - First observed
work
TDQS
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.
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.
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.
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
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
An MCP server that provides access to Testiny projects, test cases and test runs
Task & board management for AI agents + humans. Kanban, comments, digests via MCP.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables LLMs to manage Taiga projects, sprints, user stories, tasks, issues, epics, and wiki pages via natural language.3142MIT
- AlicenseBqualityDmaintenanceFull-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.100462MIT
- AlicenseAqualityBmaintenanceMCP 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.5512ISC
- FlicenseCqualityDmaintenanceMCP 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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