mcpField
Y
Yandex Tracker Mcp Server

Yandex Tracker Mcp Server

ローカル
github.com/aikts生産性1237 週間前に更新

Yandex Tracker Mcp Server について

Yandex Tracker MCP Server は、認証を用いて Yandex Tracker の課題、キュー、ユーザーなどのデータに AI アシスタントからアクセスし、管理できる MCP サーバーです。応答時間を改善するため、Redis キャッシュを任意で利用できます。

主な機能

  1. 01キュー、課題、コメント、作業ログの管理
  2. 02ステータス遷移の実行と課題のクローズ
  3. 03Yandex Tracker クエリ言語による検索
  4. 04任意の Redis キャッシュ層
  5. 05stdio および HTTP トランスポートと OAuth 2.0 認証への対応

活用シーン

  1. 01AI アシスタントによる Tracker 課題の作成や更新
  2. 02AI クライアントからのキューと課題ステータスの照会
  3. 03キューへのアクセス範囲の制限による権限管理

MCP 対応

本プロジェクトは MCP サーバーとして、Yandex Tracker のキュー、課題、コンポーネントの操作を MCP クライアントにツールとして公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"yandex-tracker": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TRACKER_TOKEN",
"-e",
"TRACKER_CLOUD_ORG_ID",
"-e",
"TRACKER_ORG_ID",
"ghcr.io/aikts/yandex-tracker-mcp:latest"
],
"env": {
"TRACKER_TOKEN": "<TRACKER_TOKEN>",
"TRACKER_CLOUD_ORG_ID": "<TRACKER_CLOUD_ORG_ID>",
"TRACKER_ORG_ID": "<TRACKER_ORG_ID>"
}
}
}
}
起動コマンドdocker run -i --rm -e TRACKER_TOKEN -e TRACKER_CLOUD_ORG_ID -e TRACKER_ORG_ID ghcr.io/aikts/yandex-tracker-mcp:latest
設定が必要な環境変数
TRACKER_TOKENシークレット
TRACKER_CLOUD_ORG_ID
TRACKER_ORG_ID

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/aikts/yandex-tracker-mcp:latest

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Yandex Tracker MCP サーバー

PyPI - Version Test Workflow Release Workflow

mcp-name: io.github.aikts/yandex-tracker-mcp

AI アシスタントが Yandex Tracker API と連携できる、包括的な Model Context Protocol(MCP)サーバーです。このサーバーは、Yandex Tracker の課題、キュー、コメント、作業ログ、検索機能への安全な認証済みアクセスを提供し、パフォーマンス向上のための Redis キャッシュもオプションで利用できます。

README の画像

ロシア語のドキュメントはこちらでご覧いただけます / Документация на русском языке доступна здесь.

機能

  • キュー管理の完全サポート:ページネーション、タグの取得、詳細なメタデータに対応し、利用可能なすべての Yandex Tracker キューを一覧表示してアクセスできます
  • プロジェクト、ポートフォリオ、目標:Tracker の「entities」API における各エンティティタイプ専用の読み取り・書き込みツールを、明示的なスキーマとともに提供します(TRACKER_ENTITIES_ENABLED でオプトイン)
  • ユーザー管理:ログイン情報、メールアドレス、ライセンスの状態、組織データなど、ユーザーアカウント情報を取得できます
  • 課題の全ライフサイクル:カスタムフィールド、添付ファイル、ワークフロー遷移に対応し、課題の作成、読み取り、更新、管理ができます
  • ステータスワークフロー管理:ステータス遷移を実行し、解決内容を指定して課題をクローズし、複雑なワークフローを操作できます
  • フィールド管理:グローバルフィールド、キュー固有のローカルフィールド、ステータス、課題タイプ、優先度、解決内容にアクセスできます
  • ボードとスプリント:アジャイルボードとそのスプリントを一覧表示し、課題計画に必要なスプリント ID を確認できます
  • 高度なクエリ言語:複雑なフィルタリング、ソート、日付関数に対応した、Yandex Tracker Query Language の完全なサポート
  • パフォーマンスキャッシュ:レスポンス時間を短縮するための Redis キャッシュレイヤーをオプションで利用できます
  • セキュリティ制御:キューへのアクセス制限を設定でき、トークンを安全に扱えます
  • 複数のトランスポートオプション:柔軟な統合に対応するため、stdio、SSE(非推奨)、HTTP トランスポートをサポートします
  • OAuth 2.0 認証:静的 API トークンに代わる選択肢として、自動更新に対応した動的なトークンベース認証を利用できます
  • 組織のサポート:標準の組織 ID とクラウド組織 ID の両方に対応します
組織 ID の設定

Yandex の組織タイプに応じて、以下のいずれかを選択してください。

  • Yandex Cloud 組織:Yandex Cloud が管理する組織では、後で TRACKER_CLOUD_ORG_ID 環境変数を使用します
  • Yandex 360 組織:Yandex 360 組織では、後で TRACKER_ORG_ID 環境変数を使用します

組織 ID は、Yandex Tracker の URL または組織の設定で確認できます。

MCP クライアントの設定

Claude Desktop への拡張機能のインストール

Yandex Tracker MCP Server は、拡張機能として Claude Desktop にワンクリックでインストールできます。

インストール
  1. GitHub Releasesから *.mcpb ファイルをダウンロードします。
  2. ダウンロードしたファイルをダブルクリックして、Claude Desktop にインストールします。 img.png
  3. 求められたら、Yandex Tracker の OAuth トークンを入力します。 img.png
  4. 拡張機能が有効になっていることを確認してください。これで、この MCP サーバーを使用できます。
手動インストール
前提条件
  • uv がグローバルにインストールされていること
  • 適切な権限を持つ有効な Yandex Tracker API トークン

以下のセクションでは、さまざまな AI クライアント向けに MCP サーバーを設定する方法を説明します。uvx yandex-tracker-mcp@latest または Docker イメージ ghcr.io/aikts/yandex-tracker-mcp:latest のどちらかを使用できます。どちらも次の環境変数が必要です。

  • 認証(以下のいずれか):
    • TRACKER_TOKEN - Yandex Tracker の OAuth トークン
    • TRACKER_IAM_TOKEN - IAM トークン
    • TRACKER_SA_KEY_ID、TRACKER_SA_SERVICE_ACCOUNT_ID、TRACKER_SA_PRIVATE_KEY - サービスアカウントの認証情報
  • 組織 - 以下のいずれか1つ:
    • TRACKER_CLOUD_ORG_ID - Yandex Cloud の組織 ID
    • TRACKER_ORG_ID - Yandex 360 の組織 ID

2つのうちいずれか1つを設定してください。両方を設定すると、すべての Tracker 呼び出しが失敗し、 Only one of org_id or cloud_org_id should be provided. と表示されます。以下の例では TRACKER_CLOUD_ORG_ID を使用しています。Yandex 360 を使用する場合は、このキーを TRACKER_ORG_ID に置き換えてください。

Claude Desktop

設定ファイルのパス:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

uvx を使用する場合:

{
  "mcpServers": {
    "yandex-tracker": {
      "command": "uvx",
      "args": ["yandex-tracker-mcp@latest"],
      "env": {
        "TRACKER_TOKEN": "your_tracker_token_here",
        "TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here"
      }
    }
  }
}

Docker を使用する場合:

{
  "mcpServers": {
    "yandex-tracker": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "TRACKER_TOKEN",
        "-e", "TRACKER_CLOUD_ORG_ID",
        "ghcr.io/aikts/yandex-tracker-mcp:latest"
      ],
      "env": {
        "TRACKER_TOKEN": "your_tracker_token_here",
        "TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here"
      }
    }
  }
}
Claude Code

uvx を使用する場合:

claude mcp add yandex-tracker uvx yandex-tracker-mcp@latest \
  -e TRACKER_TOKEN=your_tracker_token_here \
  -e TRACKER_CLOUD_ORG_ID=your_cloud_org_id_here \
  -e TRANSPORT=stdio

Docker を使用する場合:

claude mcp add yandex-tracker docker "run --rm -i -e TRACKER_TOKEN=your_tracker_token_here -e TRACKER_CLOUD_ORG_ID=your_cloud_org_id_here -e TRANSPORT=stdio ghcr.io/aikts/yandex-tracker-mcp:latest"
Cursor

設定ファイルのパス:

  • プロジェクト固有:プロジェクトディレクトリ内の .cursor/mcp.json
  • グローバル:~/.cursor/mcp.json

uvx を使用する場合:

{
  "mcpServers": {
    "yandex-tracker": {
      "command": "uvx",
      "args": ["yandex-tracker-mcp@latest"],
      "env": {
        "TRACKER_TOKEN": "your_tracker_token_here",
        "TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here"
      }
    }
  }
}

Docker を使用する場合:

{
  "mcpServers": {
    "yandex-tracker": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "TRACKER_TOKEN",
        "-e", "TRACKER_CLOUD_ORG_ID",
        "ghcr.io/aikts/yandex-tracker-mcp:latest"
      ],
      "env": {
        "TRACKER_TOKEN": "your_tracker_token_here",
        "TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here"
      }
    }
  }
}
Windsurf

設定ファイルのパス:

  • ~/.codeium/windsurf/mcp_config.json

アクセス方法:Windsurf Settings → Cascade タブ → Model Context Protocol (MCP) Servers →「View raw config」

uvx を使用する場合:

{
  "mcpServers": {
    "yandex-tracker": {
      "command": "uvx",
      "args": ["yandex-tracker-mcp@latest"],
      "env": {
        "TRACKER_TOKEN": "your_tracker_token_here",
        "TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here"
      }
    }
  }
}

Docker を使用する場合:

{
  "mcpServers": {
    "yandex-tracker": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "TRACKER_TOKEN",
        "-e", "TRACKER_CLOUD_ORG_ID",
        "ghcr.io/aikts/yandex-tracker-mcp:latest"
      ],
      "env": {
        "TRACKER_TOKEN": "your_tracker_token_here",
        "TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here"
      }
    }
  }
}
Zed

設定ファイルのパス:

  • ~/.config/zed/settings.json

アクセス方法:Cmd+,(macOS)または Ctrl+,(Linux/Windows)、またはコマンドパレットから「zed: open settings」

注: MCP をサポートするには、Zed Preview バージョンが必要です。

uvx を使用する場合:

{
  "context_servers": {
    "yandex-tracker": {
      "source": "custom",
      "command": {
        "path": "uvx",
        "args": ["yandex-tracker-mcp@latest"],
        "env": {
          "TRACKER_TOKEN": "your_tracker_token_here",
          "TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here"
        }
      }
    }
  }
}

Docker を使用する場合:

{
  "context_servers": {
    "yandex-tracker": {
      "source": "custom",
      "command": {
        "path": "docker",
        "args": [
          "run", "--rm", "-i",
          "-e", "TRACKER_TOKEN",
          "-e", "TRACKER_CLOUD_ORG_ID",
          "ghcr.io/aikts/yandex-tracker-mcp:latest"
        ],
        "env": {
          "TRACKER_TOKEN": "your_tracker_token_here",
          "TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here"
        }
      }
    }
  }
}
GitHub Copilot (VS Code)

設定ファイルのパス:

  • ワークスペース:プロジェクトディレクトリ内の .vscode/mcp.json
  • グローバル:VS Code の settings.json

オプション1:ワークスペース設定(セキュリティ上の推奨事項)

.vscode/mcp.json を作成します:

uvx を使用する場合:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "tracker-token",
      "description": "Yandex Tracker Token",
      "password": true
    },
    {
      "type": "promptString",
      "id": "cloud-org-id",
      "description": "Yandex Cloud Organization ID"
    }
  ],
  "servers": {
    "yandex-tracker": {
      "type": "stdio",
      "command": "uvx",
      "args": ["yandex-tracker-mcp@latest"],
      "env": {
        "TRACKER_TOKEN": "${input:tracker-token}",
        "TRACKER_CLOUD_ORG_ID": "${input:cloud-org-id}",
        "TRANSPORT": "stdio"
      }
    }
  }
}

Docker を使用する場合:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "tracker-token",
      "description": "Yandex Tracker Token",
      "password": true
    },
    {
      "type": "promptString",
      "id": "cloud-org-id",
      "description": "Yandex Cloud Organization ID"
    }
  ],
  "servers": {
    "yandex-tracker": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "TRACKER_TOKEN",
        "-e", "TRACKER_CLOUD_ORG_ID",
        "ghcr.io/aikts/yandex-tracker-mcp:latest"
      ],
      "env": {
        "TRACKER_TOKEN": "${input:tracker-token}",
        "TRACKER_CLOUD_ORG_ID": "${input:cloud-org-id}",
        "TRANSPORT": "stdio"
      }
    }
  }
}

オプション2:グローバル設定

VS Code の settings.json に追加します:

uvx を使用する場合:

{
  "github.copilot.chat.mcp.servers": {
    "yandex-tracker": {
      "type": "stdio",
      "command": "uvx",
      "args": ["yandex-tracker-mcp@latest"],
      "env": {
        "TRACKER_TOKEN": "your_tracker_token_here",
        "TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here"
      }
    }
  }
}

Docker を使用する場合:

{
  "github.copilot.chat.mcp.servers": {
    "yandex-tracker": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "TRACKER_TOKEN",
        "-e", "TRACKER_CLOUD_ORG_ID",
        "ghcr.io/aikts/yandex-tracker-mcp:latest"
      ],
      "env": {
        "TRACKER_TOKEN": "your_tracker_token_here",
        "TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here"
      }
    }
  }
}
その他の MCP 対応クライアント

その他の MCP 対応クライアントでは、標準の MCP サーバー設定形式を使用してください:

uvx を使用する場合:

{
  "mcpServers": {
    "yandex-tracker": {
      "command": "uvx",
      "args": ["yandex-tracker-mcp@latest"],
      "env": {
        "TRACKER_TOKEN": "your_tracker_token_here",
        "TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here"
      }
    }
  }
}

Docker を使用する場合:

{
  "mcpServers": {
    "yandex-tracker": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "TRACKER_TOKEN",
        "-e", "TRACKER_CLOUD_ORG_ID",
        "ghcr.io/aikts/yandex-tracker-mcp:latest"
      ],
      "env": {
        "TRACKER_TOKEN": "your_tracker_token_here",
        "TRACKER_CLOUD_ORG_ID": "your_cloud_org_id_here"
      }
    }
  }
}

重要な注意事項:

  • プレースホルダーの値を実際の認証情報に置き換えてください
  • 設定を変更した後は、AI クライアントを再起動してください
  • uvx がインストールされ、システムの PATH から利用できることを確認してください
  • 本番環境で使用する場合は、トークンをハードコードするのではなく、環境変数を使用することを検討してください

利用可能な MCP ツール

このサーバーは、MCP プロトコルを通じて次のツールを公開します:

キュー管理 | ツール | 機能 | 主な引数 | | --- | --- | --- | | `queues_get_all` | トークンから参照できるすべてのキューを返します。戻り値は `{values, hits, pages}` です | `fields`、`page`(省略するとすべてのページを取得)、`per_page` | | `queue_get_tags` | キューに定義されているタグ | `queue_id`(`"SOMEPROJECT"` のようなキー) | | `queue_get_versions` | 日付とステータスを含むキューのバージョン | `queue_id` | | `queue_get_components` | リード、割り当て自動化フラグ、`version` を含む完全なオブジェクトとしてのキューのコンポーネント。`expand: ["components"]` を指定した `queue_get_metadata` では ID と名前のみが返されます | `queue_id` | | `queue_create_version` | キューにバージョンを作成します | `queue_id`、`name`、`description`、`start_date`、`due_date`(`YYYY-MM-DD`) | | `queue_get_fields` | キューに設定されたフィールド。ローカルフィールドも含まれます。`schema.required` は必須フィールドを示します | `queue_id`、`include_local_fields` | | `queue_get_metadata` | 名前、説明、デフォルトの種別と優先度、および `expand` で指定した内容 | `queue_id`、`expand`(`all`、`projects`、`components`、`versions`、`types`、`team`、`workflows`、`fields`、`issueTypesConfig`) |
  • issue_create の前に queue_get_fields を読み込んでください。ただし、これだけですべてのフィールドがわかるわけではありません。parent や estimation などのシステムフィールドは、ここに表示されなくても設定できます。また、get_global_fields には組織のすべてのフィールドが一覧表示されます。
  • expand: ["issueTypesConfig"] を指定した queue_get_metadata から、各課題タイプで有効な解決方法を確認できます。issue_close では、そのうちのひとつが必要です。
  • これらのツールはすべて TRACKER_LIMIT_QUEUES の制限を受けます。queues_get_all の hits/pages が報告されるのは、許可リストが設定されていないサーバーで、ページを明示的にひとつ指定した場合のみです。合計数には、許可リストによって後から除外されるキューも含まれるためです。
コンポーネント

コンポーネントは、キューの課題を製品、プロセス、担当者ごとにグループ化するラベルです。数値の ID を issue_create/issue_update の components に指定します。

ツール機能主な引数
component_getqueue、lead、assignAuto、version を含む単一のコンポーネントcomponent_id(queue_get_components または課題の components から取得)
component_createキューにコンポーネントを作成しますqueue_id、name、description、lead(ログイン名または UID)、assign_auto
component_update名前、説明、リード、自動割り当てフラグを変更します。省略したフィールドは現在の値を維持し、clear_lead を指定するとリードを削除しますcomponent_id、name、description、lead、assign_auto、clear_lead、version
component_deleteコンポーネントを削除しますcomponent_id
  • TRACKER_LIMIT_QUEUES と TRACKER_READ_ONLY_QUEUES は、コンポーネントが属するキューを通じて適用されます。component_update と component_delete は、コンポーネントを特定するためにまず読み込みます。また、TRACKER_LIMIT_QUEUES の対象外のキューにあるコンポーネントは、見つからないものとして報告されます。
プロジェクト、ポートフォリオ、目標

プロジェクト、ポートフォリオ、目標は、それぞれ別個の Yandex Tracker エンティティ(キューとは異なります)であり、Tracker の「entities」API を通じて公開されています。カスタム(組織定義)属性はモデル化されておらず、返されません。

これらのツールはオプトイン方式です。 ツールのマニフェストが大きくなり、キューの制限も適用されないため、TRACKER_ENTITIES_ENABLED=true(デフォルトは false)の場合にのみ登録されます。詳しくはキューのアクセス制御をご覧ください。

3 種類のエンティティは同じツールセットを共有するため、一覧は一度だけ掲載しています。各行にツールの機能を、各列に呼び出す名前を示します。

機能プロジェクトポートフォリオ目標
ID または shortId でエンティティを 1 件取得project_getportfolio_getgoal_get
名前の部分一致やフィールドフィルターで検索し、{values, hits, pages} を返しますproject_findportfolio_findgoal_find
コメントの 1 ページ分を取得し、{comments, next_cursor} を返しますproject_get_commentsportfolio_get_commentsgoal_get_comments
エンティティを作成して返しますproject_createportfolio_creategoal_create
作成時に指定できる任意のフィールドを変更しますproject_updateportfolio_updategoal_update
エンティティを削除します。with_board を指定するとボードも削除します。目標にはボードがありませんproject_deleteportfolio_deletegoal_delete
コメントを追加しますproject_add_commentportfolio_add_commentgoal_add_comment
コメントを編集しますproject_update_commentportfolio_update_commentgoal_update_comment
コメントを削除しますproject_delete_commentportfolio_delete_commentgoal_delete_comment
チェックリスト項目を 1 件追加しますproject_add_checklist_itemportfolio_add_checklist_item-
指定を省略したフィールドはそのままにして、チェックリスト項目を 1 件編集しますproject_update_checklist_itemportfolio_update_checklist_item-
チェックリスト項目を別の項目の前に移動しますproject_move_checklist_itemportfolio_move_checklist_item-
チェックリスト項目を 1 件削除しますproject_delete_checklist_itemportfolio_delete_checklist_item-
ID で既存の項目を複数編集しますproject_update_checklistportfolio_update_checklist-
チェックリスト全体を削除しますproject_delete_checklistportfolio_delete_checklist-
  • 引数。 読み取りでは entity_id と fields を指定します。*_find ツールでは input、filter、order_by、order_asc、root_only、page、per_page を指定します。作成と更新では summary(作成時は必須)、description、lead、team_users、clients、followers、start(目標にはありません)、end、tags、entity_status、parent_entity、team_access、links を指定します。更新ではさらに comment と version(楽観的ロック)も指定できます。すべてのツールで同じ fields セレクターを使用でき、エンティティが返されます。
  • links は追加のみで、置き換えはできません。 API はリンクを返さないため、このサーバー経由では既存のリンクを読み戻したり削除したりできません。また、リンクのみの更新は、Tracker が黙って無視したものを成功として報告するのではなく、拒否されます。
  • デフォルトのフィールドセットに含まれない項目: checklistItems(チェックリスト関連のツールはエンティティ全体を返すため、結果を確認するにはこれを指定してください)、metricItems、および目標の keyResultItems。後者 2 つは読み取り専用です。目標には独自の entityStatus 値(draft、according_to_plan、at_risk、blocked、achieved、partially_achieved、not_achieved、exceeded、cancelled)があります。一括変更はサポートされていません。
ユーザー管理
ツール機能主な引数
users_get_all組織のユーザーの 1 ページ分を取得し、{values, hits, pages} を返しますpage、per_page、fields
user_getログイン名または uid でユーザーを 1 人取得しますuser_id("john.doe" または "12345")
user_get_current現在のトークンに属するユーザーを取得します-
users_searchログイン名、メールアドレス、または実名でユーザーを検索しますlogin_or_email_or_name
  • users_search は最初にログイン名とメールアドレスを完全一致で検索し、一致しない場合は名前をあいまい検索します(一致度 80%、上位 3 件まで)。
  • users_get_all では、page が pages と等しい場合、最後のページが返されます。
フィールド管理
ツール機能主な引数
get_global_fieldsスキーマと型を含む、組織のすべてのグローバルフィールドを取得します-

キュー固有のフィールドはここには含まれません。queue_get_fields では、グローバルフィールドとともに取得できます。

ステータスとタイプの管理 | ツール | 機能 | 主な引数 | | --- | --- | --- | | `get_statuses` | 組織で定義されているすべての課題ステータス | - | | `get_issue_types` | すべての課題タイプ。`issue_create` / `issue_update` の `type` 引数に使用します | - | | `get_priorities` | すべての優先度と、`id`、`key`、`name`、`order` | - | | `get_resolutions` | すべての解決状況。`issue_close` の `resolution_id` に使用します | - |

これら4つは組織全体で共通です。キューで受け付けられる値は一覧の一部に限られる場合があり、受け付けられない値を指定すると Tracker は 422 を返します。各課題タイプで使用できる解決状況は、expand: ["issueTypesConfig"] を指定した queue_get_metadata で確認できます。

テンプレート
ツール機能主な引数
issue_templates_get_all課題テンプレートと、事前入力される fieldTemplates の値を取得します。{values, hits, pages} を返しますqueue、page(省略するとすべてのページを順に取得)、per_page
issue_template_getIDで課題テンプレートを1つ取得しますtemplate_id
comment_templates_get_allコメントテンプレートと、template テキストおよび summonees / maillistSummonees を取得しますqueue、page、per_page
comment_template_getIDでコメントテンプレートを1つ取得しますtemplate_id
  • テンプレートは読み取り専用の補助機能です。 APIではテンプレートから課題やコメントを作成できないため、issue_create と issue_add_comment は template_id を受け取りません。テンプレートを読み取り、その値を書き込みツール自身の引数として渡してください。{{today}} などのマクロはそのまま返されます。
  • テンプレートによって事前入力される課題本文は fieldTemplates.description にあります。テンプレート自体の description はテンプレートについて説明するものです。
  • queue を指定すると、そのキューのテンプレートに加えて、どのキューにも紐付いていないテンプレートも返されます。後者はどこでも使用できます。TRACKER_LIMIT_QUEUES が適用されます。制限されたキューのテンプレートは一覧から除外され、直接アクセスも拒否されます。一方、キューに紐付いていないテンプレートは引き続き表示されます。
ボードとスプリント
ツール機能主な引数
boards_get_all組織のアジャイルボードを取得します。{boards, next_cursor} を返しますqueue、fields、cursor(前回の next_cursor)、per_page
board_getautoFilterSettings(収集対象)、estimateBy、useRanking、作業用の calendar を含むボードを1つ取得しますboard_id、fields
board_get_columns各列に振り分けられる課題ステータスとともに、ボードの列を取得しますboard_id
board_get_sprintsステータス(draft、in_progress、released、archived)と予定日/実績日を含む、ボードのスプリントを取得しますboard_id、fields
  • ボードには独自のキューがないため、queue はボード自体のフィルターに照らして判定されます。そのため、別の条件でフィルターするボード(たとえば担当者で絞り込む個人用ボード)は見つかりません。そうしたボードを見つけるには、issues_find でそのキューの課題をいくつか取得し、boards フィールドを確認してください。
  • ボードはキューではなく組織に属するため、TRACKER_LIMIT_QUEUES による絞り込みは適用されません。確認されるのは boards_get_all の queue 引数のみで、これらのツールの返す情報に制限されたキューが含まれる場合があります。
  • スクラム以外のボードにはスプリントがなく、board_get_sprints を実行すると拒否されます。返されるスプリントの id は、issue_create / issue_update で指定する値です。
課題操作 | ツール | 機能 | 主な引数 | | --- | --- | --- | | `issue_get` | キーを指定して課題を1件取得します。現在の `version` を含む全レコードを返します | `issue_id`、`include_description` | | `issue_get_url` | 課題のウェブ URL を取得します | `issue_id` | | `issue_get_comments` | コメントを古い順に1ページ取得します。`{comments, next_cursor}` を返します | `issue_id`、`cursor`、`per_page`、`fields` | | `issue_add_comment` | コメントを追加します。ユーザーへの通知には `summonees` を使います。テキスト内の `@login` では誰にも通知されません | `issue_id`、`text`、`summonees`、`maillist_summonees`、`markup_type`、`is_add_to_followers` | | `issue_update_comment` | コメントを編集します | `issue_id`、`comment_id`、`text`、`summonees`、`maillist_summonees` | | `issue_delete_comment` | コメントを削除します | `issue_id`、`comment_id` | | `issue_get_links` | 関連課題、ブロックしている課題、重複する課題へのリンクを取得します | `issue_id` | | `issue_add_link` | 2つの課題をリンクします | `issue_id`、`relationship`、`issue` | | `issue_delete_link` | リンクを削除します | `issue_id`、`link_id`(`issue_get_links` から取得) | | `issue_get_worklogs` | 1件以上の課題に記録された作業時間を取得します | `issue_ids`、`fields` | | `issue_add_worklog` | 作業時間を記録します | `issue_id`、`duration`(ISO-8601、`PT1H30M`)、`comment`、`start` | | `issue_update_worklog` | 作業時間の記録を編集します | `issue_id`、`worklog_id`、`duration`、`comment`、`start` | | `issue_delete_worklog` | 作業時間の記録を削除します | `issue_id`、`worklog_id` | | `issue_get_attachments` | 添付ファイルのメタデータを取得します | `issue_id`、`fields` | | `issue_get_checklist` | チェックリストと、書き込みツールで必要な項目 ID を取得します | `issue_id` | | `issue_add_checklist_items` | 項目を順番に追加します。チェックリストがない場合は作成します | `issue_id`、`items`(`text`、`checked`、`assignee`、`deadline`) | | `issue_update_checklist_item` | 1つの項目を変更します。省略したフィールドの値は維持されます | `issue_id`、`checklist_item_id`、`text`、`checked`、`assignee`、`deadline`、`clear_assignee`、`clear_deadline` | | `issue_delete_checklist_item` | 1つの項目を削除します | `issue_id`、`checklist_item_id` | | `issue_get_transitions` | 現在利用可能なステータス遷移とその ID を取得します | `issue_id` | | `issue_execute_transition` | 遷移を実行し、その後に利用可能な遷移を返します | `issue_id`、`transition_id`、`comment`、`fields` | | `issue_close` | 完了ステータスへの遷移を見つけ、解決方法を指定して実行します | `issue_id`、`resolution_id`、`comment`、`fields` | | `issue_get_changelog` | フィールドの編集、ステータス遷移、コメントの変更、発火したトリガーを取得します。`{entries, next_cursor}` を返します | `issue_id`、`cursor`、`per_page`、`field`、`type` | | `issue_create` | 課題を作成して返します | `queue`、`summary`、`type`、`description`、`markup_type`、`assignee`、`priority`、`parent`、`sprint`、`followers`、`components`、`tags`、`project`、`fields` | | `issue_update` | これらのフィールドを変更します。省略したフィールドはそのまま維持されます | `issue_id`、`version`、および `issue_create` が受け取る引数 | | `issue_move` | 課題を別のキューに移動します。これによりキーが変わります(`TASKS-1` → `NEWQUEUE-42`) | `issue_id`、`queue`、`notify`、`notify_author`、`move_all_fields`、`initial_status` | - **`version` は自動的に古くなります。** キュートリガーと自動化は `issue_create` の直後に実行されて値を更新するため、返されるバージョンは通常すでに古くなっています。`issue_update` の直前に `issue_get` で再取得するか、常に最新バージョンを更新するために省略してください。古いバージョンを指定すると編集の競合が発生します。 - **参照フィールドは作成時も更新時も同じ値を受け取ります。** `id` および/または `key` を持つオブジェクト、または `type`、`priority`、`parent` の場合はキーか ID のみを指定します。`components` には `{"id": ...}` または `{"name": ...}` を指定します。`components`/`followers` は現在のリストに追加するのではなく、置き換えます。専用の引数がない値は `fields` マップに入れ、`queue_get_fields` で取得したフィールドの `id` をキーにします。そこにあるエントリーは専用の引数より優先され、明示的に `null` を指定するとフィールドがクリアされます。 - **トランジションは推測されません。** `issue_execute_transition` で受け取るのは `issue_get_transitions` の ID のみです。また、`issue_close` の前に、`issue_get` で課題の `type` を読み取り、`expand: ["issueTypesConfig"]` を指定した `queue_get_metadata` でそのタイプに有効な解決状況を確認してください。タイプごとに設定は異なります。クライアントがエリシテーションに対応している場合、`issue_move` はまずユーザーにフラグの確認を求め、拒否された場合は移動を中止します。

ここにあるすべてのツールは TRACKER_LIMIT_QUEUES と TRACKER_READ_ONLY_QUEUES に従います。書き込みを行うツールは、TRACKER_READ_ONLY がオフの場合にのみ登録されます。

検索と探索
ツール内容主な引数
issues_findYandex Tracker Query Language で課題を検索し、{values, hits, pages} を返しますquery、fields、include_description、page、per_page
issues_countクエリに一致する課題の件数を返します。戻り値は {"count": N} ですquery
  • fields では Tracker 独自の表記(story_points ではなく storyPoints)を使用し、キュー固有のフィールドや組織のカスタムフィールドを含む、任意のフィールド名を指定できます。queue_get_fields で取得したフィールドの id を渡してください。Tracker が認識しない名前は警告なしで除外されます。
  • fields に description を指定した場合、include_description は無視されます。fields で名前を指定することが、明示的な要求となります。
  • per_page のデフォルトは 100 です。ページがコンテキストウィンドウに収まらない場合は、値を小さくできます。

HTTP トランスポート

MCP サーバーは、ウェブベースの統合や stdio トランスポートが適さない場合に、streamable-http モードで実行することもできます。

streamable-http モードの環境変数
# Required - Set transport to streamable-http mode
TRANSPORT=streamable-http

# Server Configuration
HOST=0.0.0.0  # Default: 0.0.0.0 (all interfaces)
PORT=8000     # Default: 8000
streamable-http サーバーの起動
# Basic streamable-http server startup
TRANSPORT=streamable-http uvx yandex-tracker-mcp@latest

# With custom host and port
TRANSPORT=streamable-http \
HOST=localhost \
PORT=9000 \
uvx yandex-tracker-mcp@latest

# With all environment variables
TRANSPORT=streamable-http \
HOST=0.0.0.0 \
PORT=8000 \
TRACKER_TOKEN=your_token \
TRACKER_CLOUD_ORG_ID=your_org_id \
uvx yandex-tracker-mcp@latest

MCP サーバーへの接続に以下の形式を使用する場合は、TRACKER_CLOUD_ORG_ID または TRACKER_ORG_ID の設定を省略できます(Claude Code の例)。

claude mcp add --transport http yandex-tracker "http://localhost:8000/mcp/?cloudOrgId=your_cloud_org_id&"

または

claude mcp add --transport http yandex-tracker "http://localhost:8000/mcp/?orgId=org_id&"

OAuth 2.0 認証を使用する場合は、グローバルな TRACKER_TOKEN 環境変数の設定も省略できます(下記を参照)。

OAuth 2.0 認証

Yandex Tracker MCP サーバーは、静的な API トークンに代わる安全な方法として、OAuth 2.0 認証に対応しています。設定すると、サーバーは OAuth プロバイダーとして動作し、MCP クライアントと Yandex OAuth サービス間の認証を仲介します。

OAuth の仕組み

MCP サーバーは、標準的な OAuth 2.0 認可コードフローを実装しています。

  1. クライアント登録: MCP クライアントがサーバーに登録し、クライアント認証情報を取得します
  2. 認可: ユーザーは認証のために Yandex OAuth にリダイレクトされます
  3. トークン交換: サーバーが認可コードをアクセストークンと交換します
  4. API アクセス: クライアントはすべての API リクエストでベアラートークンを使用します
  5. トークンの更新: 期限切れのトークンは、再認証せずに更新できます
MCP Client → MCP Server → Yandex OAuth → User Authentication
    ↑                                           ↓
    └────────── Access Token ←─────────────────┘
OAuth の設定

OAuth 認証を有効にするには、以下の環境変数を設定します。

# Enable OAuth mode
OAUTH_ENABLED=true

# Yandex OAuth Application Credentials (required for OAuth)
OAUTH_CLIENT_ID=your_yandex_oauth_app_id
OAUTH_CLIENT_SECRET=your_yandex_oauth_app_secret

# Public URL of your MCP server (required for OAuth callbacks)
MCP_SERVER_PUBLIC_URL=https://your-mcp-server.example.com

# Optional OAuth settings
OAUTH_SERVER_URL=https://oauth.yandex.ru  # Default Yandex OAuth server

# When OAuth is enabled, TRACKER_TOKEN becomes optional
OAuth スコープ

OAUTH_USE_SCOPES=true(デフォルト)の場合、サーバーは Yandex Tracker のスコープ tracker:read と tracker:write を要求、通知、必須指定します。ただし、TRACKER_READ_ONLY=true の場合は tracker:read のみを使用するため、読み取り専用インスタンスで書き込みアクセスをユーザーに求めることはありません。OAUTH_USE_SCOPES=false に設定すると、フローからスコープが完全に除外されます。これは Yandex Cloud フェデレーションで必要な設定です。

Yandex OAuth アプリケーションの設定
  1. Yandex OAuth にアクセスし、新しいアプリケーションを作成します
  2. コールバック URL を次のように設定します:{MCP_SERVER_PUBLIC_URL}/oauth/yandex/callback
  3. 次の権限を要求します:
    • tracker:read - Tracker の読み取り権限
    • tracker:write - Tracker の書き込み権限
  4. クライアント ID とクライアントシークレットを保存します
OAuth 認証と静的トークン認証の比較
機能OAuth静的トークン
セキュリティ有効期限付きの動的トークン有効期間の長い静的トークン
ユーザーエクスペリエンス対話型のログインフロー1 回限りの設定
トークン管理自動更新手動でのローテーション
アクセス制御ユーザーごとの認証共有トークン
設定の複雑さOAuth アプリの設定が必要簡単なトークン設定
OAuth モードの制限事項
  • 現在、OAuth モードでは、コールバック URL を利用するために MCP サーバーがパブリックにアクセス可能である必要があります
  • OAuth モードは、ウェブベースの認証フローに対応した対話型クライアントに最適です
MCP クライアントで OAuth を使用する

OAuth が有効な場合、MCP クライアントには次の対応が必要です:

  1. OAuth 2.0 の認可コードフローに対応する
  2. アクセストークンの有効期限が切れた際にトークンを更新する
  3. 継続的な認証のためにリフレッシュトークンを安全に保管する

注:現在、OAuth 認証に対応していない MCP クライアントもあります。OAuth への対応状況については、クライアントのドキュメントを確認してください。

Claude Code の設定例:

claude mcp add --transport http yandex-tracker https://your-mcp-server.example.com/mcp/ -s user
OAuth データストレージ

MCP サーバーは、OAuth データ(クライアント登録、アクセストークン、リフレッシュトークン、認可状態)用に、2 種類のストレージバックエンドに対応しています:

InMemory ストア(デフォルト)

インメモリストアは、すべての OAuth データをサーバーのメモリに保持します。これがデフォルトのオプションで、追加の設定は不要です。

特性:

  • 永続性:サーバーの再起動時にデータが失われます
  • パフォーマンス:データがメモリに保存されるため、アクセスが非常に高速です
  • スケーラビリティ:単一のサーバーインスタンスに限定されます
  • セットアップ:追加の依存関係は不要です
  • 最適な用途:再起動時に OAuth セッションが失われても問題のない、開発、テスト、または単一インスタンスのデプロイ

設定:

OAUTH_STORE=memory  # Default value, can be omitted
Redis ストア

Redis ストアは、Redis データベースを使用して OAuth データを永続的に保存します。これにより、OAuth セッションがサーバーの再起動後も維持され、複数インスタンスのデプロイが可能になります。

特性:

  • 永続性:サーバーの再起動後もデータが保持されます
  • パフォーマンス:ネットワークのオーバーヘッドはありますが、高速にアクセスできます
  • スケーラビリティ:同じ Redis データベースを共有する複数のサーバーインスタンスに対応します
  • セットアップ:Redis サーバーのインストールと設定が必要です
  • 最適な用途:本番環境へのデプロイ、高可用性構成、または OAuth セッションの維持が必要な場合

設定:

# Enable Redis store for OAuth data
OAUTH_STORE=redis

# Redis connection settings (same as used for tools caching)
REDIS_ENDPOINT=localhost                  # Default: localhost
REDIS_PORT=6379                           # Default: 6379
REDIS_DB=0                                # Default: 0
REDIS_PASSWORD=your_redis_password        # Optional: Redis password
REDIS_POOL_MAX_SIZE=10                    # Default: 10

ストレージの動作:

  • クライアント情報:永続的に保存されます
  • OAuth 状態:セキュリティのため、TTL(有効期間)付きで保存されます
  • 認可コード:TTL 付きで保存され、使用後に自動的に削除されます
  • アクセストークン:トークンの有効期間に基づく自動有効期限付きで保存されます
  • リフレッシュトークン:失効するまで永続的に保存されます
  • キーの名前空間:他の Redis データとの競合を避けるため、oauth:* プレフィックスを使用します
トークンの暗号化(Redis ストアでは必須)

Redis ストアを使用する場合は、保存時の OAuth トークンを保護するために暗号化を設定する必要があります。トークンの値は Fernet(AES-128)を使って暗号化され、Redis のキーには生のトークンの代わりに SHA-256 ハッシュが使われます。これにより、Redis が侵害された場合でもトークンが漏えいするのを防げます。

暗号化キーを生成します:

python3 -c "import base64, os; print(base64.b64encode(os.urandom(32)).decode())"

設定:

# Single encryption key
OAUTH_ENCRYPTION_KEYS=<base64-encoded-32-byte-key>

# Multiple keys for rotation (first encrypts, all decrypt)
OAUTH_ENCRYPTION_KEYS=<new-key>,<old-key>

キーのローテーションを行うと、キーをシームレスに更新できます。まず新しいキーを追加し、古いトークンの有効期限が切れるのを待ってから、古いキーを削除します。

重要な注意事項:

  • どちらのストアも、ツールのキャッシュシステムと同じ Redis 接続設定を使用します
  • Redis ストアを使用する場合は、Redis インスタンスが適切に保護され、アクセス可能であることを確認してください
  • OAUTH_STORE 設定が影響するのは OAuth データの保存のみです。ツールのキャッシュには TOOLS_CACHE_ENABLED が使用されます
  • Redis ストアは、言語間の互換性とデバッグ性を高めるために JSON シリアライゼーションを使用します

認証

Yandex Tracker MCP Server は、明確な優先順位に基づいた複数の認証方法をサポートしています。サーバーは、次の優先順位に従って、利用可能な最初の認証方法を使用します。

認証の優先順位
  1. 動的 OAuth トークン(優先度が最も高い)

    • OAuth が有効で、ユーザーが OAuth フローで認証した場合
    • トークンはユーザーセッションごとに動的に取得および更新されます
    • 標準の Yandex OAuth と Yandex Cloud フェデレーション OAuth の両方をサポートします
    • 必須の環境変数:OAUTH_ENABLED=true、OAUTH_CLIENT_ID、OAUTH_CLIENT_SECRET、MCP_SERVER_PUBLIC_URL
    • フェデレーション OAuth 用の追加の環境変数:OAUTH_SERVER_URL=https://auth.yandex.cloud/oauth、OAUTH_TOKEN_TYPE=Bearer、OAUTH_USE_SCOPES=false
  2. パススルー Bearer OAuth トークン

    • MCP OAuth ミドルウェアからトークンが提供されない場合、サーバーは受信した Authorization: Bearer <token> ヘッダーから Yandex OAuth トークンを読み取ることができます
    • ユーザーを認証し、保存済みの Yandex OAuth トークンを特定して、リクエストごとに挿入する信頼できるリバースプロキシまたはゲートウェイの背後で役立ちます
    • OAuth モードが有効でアクティブな場合は、MCP OAuth のトークンが引き続き優先されます
  3. 静的 OAuth トークン

    • 環境変数で指定する従来の OAuth トークン
    • すべてのリクエストで同じトークンを使用します
    • 必須の環境変数:TRACKER_TOKEN(OAuth トークン)
  4. 静的 IAM トークン

    • サービス間認証用の IAM(Identity and Access Management)トークン
    • 自動化システムや CI/CD パイプラインに適しています
    • 必須の環境変数:TRACKER_IAM_TOKEN(IAM トークン)
  5. 動的 IAM トークン(優先度が最も低い)

    • サービスアカウントの認証情報を使って自動的に取得されます
    • トークンは自動的に取得および更新されます
    • 必須の環境変数:TRACKER_SA_KEY_ID、TRACKER_SA_SERVICE_ACCOUNT_ID、TRACKER_SA_PRIVATE_KEY
認証シナリオ
シナリオ 1:動的トークンを使った OAuth(対話型の使用に推奨)
# Enable OAuth mode
OAUTH_ENABLED=true
OAUTH_CLIENT_ID=your_oauth_app_id
OAUTH_CLIENT_SECRET=your_oauth_app_secret
MCP_SERVER_PUBLIC_URL=https://your-server.com

# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id  # or TRACKER_ORG_ID
シナリオ 2:静的 OAuth トークン(簡単な設定)
# OAuth token
TRACKER_TOKEN=your_oauth_token

# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id  # or TRACKER_ORG_ID
シナリオ 3:リバースプロキシ背後でのパススルー Bearer トークン

信頼できるゲートウェイでユーザー認証とユーザーの Yandex OAuth トークンの検索を行い、そのトークンをリクエストヘッダーに含めて MCP サーバーへリクエストを転送する場合は、このモードを使用します。

Authorization: Bearer <user_yandex_oauth_token>
# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id  # or TRACKER_ORG_ID

このパススルートークンは、MCP OAuth ミドルウェアからリクエスト用のアクセストークンが提供されていない場合にのみ使用されます。OAuth が有効なデプロイで MCP OAuth セッションがアクティブな場合は、MCP OAuth トークンが優先されます。

シナリオ 4:静的 IAM トークン
# IAM token
TRACKER_IAM_TOKEN=your_iam_token

# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id  # or TRACKER_ORG_ID
シナリオ 5:サービスアカウントを使った動的 IAM トークン
# Service account credentials
TRACKER_SA_KEY_ID=your_key_id
TRACKER_SA_SERVICE_ACCOUNT_ID=your_service_account_id
TRACKER_SA_PRIVATE_KEY=your_private_key

# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id  # or TRACKER_ORG_ID
シナリオ 6:OIDC アプリケーション向けのフェデレーション OAuth(上級)
# Enable OAuth with Yandex Cloud federation
OAUTH_ENABLED=true
OAUTH_SERVER_URL=https://auth.yandex.cloud/oauth
OAUTH_TOKEN_TYPE=Bearer
OAUTH_USE_SCOPES=false
OAUTH_CLIENT_ID=your_oidc_client_id
OAUTH_CLIENT_SECRET=your_oidc_client_secret
MCP_SERVER_PUBLIC_URL=https://your-server.com

# Organization ID (choose one)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id  # or TRACKER_ORG_ID

この設定では、Yandex Cloud OIDC アプリケーションを通じた認証を有効にします。これは、Yandex Cloud のフェデレーションアカウントに必要です。フェデレーションユーザーは、所属組織の ID プロバイダー(IdP)を通じて認証し、この OAuth フローを使用して Yandex Tracker API にアクセスします。

重要な注意事項
  • サーバーは、上記の順序で認証方法を確認します
  • 一度に使用される認証方法は 1 つだけです
  • 本番環境での使用には、セキュリティを高めるため、動的トークン(OAuth または IAM)を推奨します
  • IAM トークンは OAuth トークンより有効期間が短いため、より頻繁な更新が必要になる場合があります
  • サービスアカウントを使用する場合は、そのアカウントに Yandex Tracker の適切な権限があることを確認してください

設定

環境変数
# Authentication (use one of the following methods)
# Method 1: OAuth Token
TRACKER_TOKEN=your_yandex_tracker_oauth_token

# Method 2: IAM Token
TRACKER_IAM_TOKEN=your_iam_token

# Method 3: Service Account (for dynamic IAM token)
TRACKER_SA_KEY_ID=your_key_id                    # Service account key ID
TRACKER_SA_SERVICE_ACCOUNT_ID=your_sa_id        # Service account ID
TRACKER_SA_PRIVATE_KEY=your_private_key          # Service account private key

# Organization Configuration (set exactly one - setting both is an error)
TRACKER_CLOUD_ORG_ID=your_cloud_org_id    # For Yandex Cloud organizations
TRACKER_ORG_ID=your_org_id                # For Yandex 360 organizations

# API Configuration (optional)
TRACKER_API_BASE_URL=https://api.tracker.yandex.net  # Default: https://api.tracker.yandex.net
TRACKER_API_TIMEOUT=10                    # Default: 10 - Per-request timeout in seconds for Tracker API calls

# Security - Restrict access to specific queues (optional)
TRACKER_LIMIT_QUEUES=PROJ1,PROJ2,DEV      # Comma-separated queue keys - allow-list of accessible queues
TRACKER_READ_ONLY_QUEUES=PROJ2            # Comma-separated queue keys - allowed for reads but reject writes (per-queue read-only)
TRACKER_ENTITIES_ENABLED=true             # Default: false - Register project/portfolio/goal tools (NOT covered by the queue restrictions above)

# Server Configuration
HOST=0.0.0.0                              # Default: 0.0.0.0
PORT=8000                                 # Default: 8000
TRANSPORT=stdio                           # Options: stdio, streamable-http, sse

# Redis connection settings (used for caching and OAuth store)
REDIS_ENDPOINT=localhost                  # Default: localhost
REDIS_PORT=6379                           # Default: 6379
REDIS_DB=0                                # Default: 0
REDIS_PASSWORD=your_redis_password        # Optional: Redis password
REDIS_POOL_MAX_SIZE=10                    # Default: 10

# Tools caching configuration (optional)
TOOLS_CACHE_ENABLED=true                  # Default: false
TOOLS_CACHE_REDIS_TTL=3600                # Default: 3600 seconds (1 hour)

# OAuth 2.0 Authentication (optional)
OAUTH_ENABLED=true                        # Default: false
OAUTH_STORE=redis                         # Options: memory, redis (default: memory)
OAUTH_SERVER_URL=https://oauth.yandex.ru  # Default: https://oauth.yandex.ru (use https://auth.yandex.cloud/oauth for federation)
OAUTH_TOKEN_TYPE=<Bearer|OAuth|<empty>>   # Default: <empty> (required to be Bearer for Yandex Cloud federation)
OAUTH_USE_SCOPES=true                     # Default: true (set to false for Yandex Cloud federation)
OAUTH_CLIENT_ID=your_oauth_client_id      # Required when OAuth enabled
OAUTH_CLIENT_SECRET=your_oauth_secret     # Required when OAuth enabled
MCP_SERVER_PUBLIC_URL=https://your.server.com  # Required when OAuth enabled
TRACKER_READ_ONLY=true                    # Default: false - Disable all write tools for the whole instance
キューのアクセス制御

キューへのアクセスは、大まかな制御から細かな制御まで、次の 3 つのレベルで設定できます。

  • TRACKER_LIMIT_QUEUES — キューキーの許可リストです。リストに含まれないキューは、読み取りと書き込みの両方で 見つからない/許可されていない として扱われます。ここでは TRACKER_READ_ONLY_QUEUES と同様に、大文字と小文字を区別せずにキーを照合するため、dev と DEV は同じキューを指します。唯一の例外はボードツールです。ボードはキューではなく組織に属するため、フィルタリングされず、ボードの設定で制限対象のキューを指定できます。
  • TRACKER_READ_ONLY — true の場合、すべての書き込みツールが登録解除され、インスタンス全体が読み取り専用になります。
  • TRACKER_READ_ONLY_QUEUES — キューごとの読み取り専用許可リストです。書き込みツールは登録されたままですが、リストに含まれるキューを対象とする変更操作(作成/更新/移動/コメント/作業ログ/リンク、キューバージョンの作成)は拒否されます。読み取りは引き続き可能です。リストに含まれないキューは読み書き可能なままです。

プロジェクト/ポートフォリオ/目標のツールは、このモデルの対象外です。 プロジェクト、ポートフォリオ、目標は単一のキューに確実に対応付けられないため、上記の 3 つの設定はいずれも適用されません。読み取りツール(project_get、project_find、*_get_comments、…)にも、書き込みツール(コメントやチェックリストのツールを含む)にも適用されません。これらを有効にすると、サーバーにアクセスできるユーザーに、それらのエンティティへの組織全体のアクセス権が付与されます。このため、これらはオプトイン方式です。TRACKER_ENTITIES_ENABLED=true(デフォルトは false)の場合にのみ登録されます。これにより、不要なデプロイ環境ではツールマニフェストを小さく保てます。TRACKER_READ_ONLY は引き続き適用され、ほかのすべての書き込みツールとともに、エンティティの書き込みツールも登録解除されます。

これにより、1 つのインスタンスで一部のキューは読み書き可能、ほかのキューは読み取り専用にできます。たとえば、TRACKER_LIMIT_QUEUES=DEV,MGMT と TRACKER_READ_ONLY_QUEUES=MGMT を組み合わせると、DEV には完全にアクセスでき、MGMT は読み取り専用で参照できます。これは、エンドユーザーがサーバー経由でのみ Tracker にアクセスし、生のトークンを直接保持しない共有 MCP ゲートウェイで特に便利です。

これらのチェックはプロセス内のガードレールです。生の Tracker トークンを保持するクライアントについては、実際の制限をトークン自体にも設定する必要があります。

Docker のデプロイ

ビルド済みイメージを使用する(推奨)

イメージのデフォルトは TRANSPORT=stdio です。この場合、コンテナの標準入力/標準出力を介して通信し、ポートは開きません。以下の例のように、HTTP 経由でサーバーにアクセスする場合は TRANSPORT=streamable-http を設定してください。stdio クライアントでは、代わりに -i を指定し、-p を指定せずにコンテナを実行します(MCP クライアントの設定の例を参照してください)。

# Using environment file (it must set TRANSPORT=streamable-http)
docker run --env-file .env -p 8000:8000 ghcr.io/aikts/yandex-tracker-mcp:latest

# With inline environment variables
docker run -e TRACKER_TOKEN=your_token \
           -e TRACKER_CLOUD_ORG_ID=your_org_id \
           -e TRANSPORT=streamable-http \
           -p 8000:8000 \
           ghcr.io/aikts/yandex-tracker-mcp:latest
イメージをローカルでビルドする
docker build -t yandex-tracker-mcp .
Docker Compose

ビルド済みイメージを使用する:

services:
  mcp-tracker:
    image: ghcr.io/aikts/yandex-tracker-mcp:latest
    ports:
      - "8000:8000"
    environment:
      - TRACKER_TOKEN=${TRACKER_TOKEN}
      - TRACKER_CLOUD_ORG_ID=${TRACKER_CLOUD_ORG_ID}
      - TRANSPORT=streamable-http

ローカルでビルドする:

services:
  mcp-tracker:
    build: .
    ports:
      - "8000:8000"
    environment:
      - TRACKER_TOKEN=${TRACKER_TOKEN}
      - TRACKER_CLOUD_ORG_ID=${TRACKER_CLOUD_ORG_ID}
      - TRANSPORT=streamable-http
開発環境のセットアップ
# Clone and setup
git clone https://github.com/aikts/yandex-tracker-mcp
cd yandex-tracker-mcp

# Install development dependencies
uv sync --dev

# Formatting and static checking
task

ライセンス

このプロジェクトは、LICENSE ファイルに記載された条件に基づいてライセンスされています。

サポート

問題やご質問については、以下をご確認ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。