Microsoft Planner について
Microsoft Planner は、Microsoft Graph 経由でプラン、バケット、タスクを管理する MCP サーバーです。アプリまたは委任ユーザーとしてアクセスでき、更新や削除時の Planner ETag 処理を自動化します。
主な機能
- 01グループ、ユーザー、プラン、バケットの検索
- 02タスクとチェックリストの一覧・管理
- 03ユーザーの割り当てと進捗管理
- 04更新・削除時の ETag 処理
活用シーン
- 01プラン別または担当者別のタスク確認
- 02チームタスクの作成と更新
- 03期限切れタスクの完了または削除
MCP 対応
Microsoft Graph を利用し、Microsoft Planner の操作ツールを MCP クライアントに提供します。任意の高度なツールでは、planner、groups、users のパスに限定した読み取り専用の Graph アクセスも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y mcp-plannerMS_TENANT_IDMicrosoft Entra ID tenant id (GUID or domain)MS_CLIENT_IDEntra app registration client idMS_CLIENT_SECRETシークレットEntra app registration client secret (app needs Tasks.ReadWrite.All, GroupMember.Read.All, User.Read.All application permissions)PLANNER_ADVANCED_TOOLSETtrue/1 registers the advanced toolset (graph_get, graph_find_endpoint) — a read-only escape hatch limited to /planner, /groups, /usersローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-planner
Microsoft Graph API を通じて Microsoft Planner を操作する MCP サーバーです。グループとプランを検索し、バケットとタスクを一覧表示できます。また、Planner の ETag による同時実行制御を自動的に処理しながら、説明やチェックリストを含むタスクの作成、更新、割り当て、完了、削除を行えます。
mcp-itglue および mcp-connectwise-psa の姉妹プロジェクトで、同じアーキテクチャを採用しています。
ツール
| ツール | 説明 |
|---|---|
planner_search_groups | Microsoft 365 グループ(Teams)を名前で検索 → グループ ID |
planner_find_user | 割り当て用に、ユーザーを名前または UPN で検索 → ユーザー ID |
planner_list_plans | グループが所有するプランを一覧表示 |
planner_get_plan | プランとそのバケット |
planner_create_bucket | プランにバケットを作成 |
planner_list_tasks | プランまたはバケット内のタスク(担当者、未完了/完了で絞り込み) |
planner_list_user_tasks | プランをまたいで、ユーザーに割り当てられたすべてのタスク |
planner_get_task | 説明とチェックリストを含むタスク |
planner_create_task | タスクを作成(バケット、期限、優先度、担当者、説明) |
planner_update_task | タイトル/バケット/期限/優先度/進捗/担当者を更新 |
planner_update_task_details | 説明を更新、チェックリスト項目を追加またはチェック/チェック解除 |
planner_delete_task | タスクを完全に削除 |
graph_find_endpoint † | /planner、/groups、/users の Graph API を厳選したカタログから検索 |
graph_get † | /planner、/groups、/users 配下の任意の Graph v1.0 パスに対する読み取り専用 GET |
† 高度なツールセット(オプトイン、既定では無効)— 厳選されたツールではカバーされない Graph API を利用するための手段です。PLANNER_ADVANCED_TOOLSET=true または --advanced で有効にできます。graph_get は GET のみに制限され、/beta を拒否し、上記 3 つのパスプレフィックスのみを利用するため、共有アプリ登録に付与された他のアクセス許可(メールなど)にはアクセスできません。
セットアップ
1. Entra ID アプリ登録
- Entra 管理センター → アプリの登録 → 新規登録
- API のアクセス許可 → アプリケーションのアクセス許可 →
Tasks.ReadWrite.All、GroupMember.Read.All、User.Read.Allを追加 → 管理者の同意を与える - 証明書とシークレット → 新しいクライアント シークレット — 値を控えておきます
2. 実行
MS_TENANT_ID=<tenant> MS_CLIENT_ID=<client-id> MS_CLIENT_SECRET=<secret> npx -y mcp-planner
Claude Code:
claude mcp add planner --env MS_TENANT_ID=<tenant> --env MS_CLIENT_ID=<client-id> --env MS_CLIENT_SECRET=<secret> -- npx -y mcp-planner
HTTP モード
npx -y mcp-planner --transport http --port 3000
セッションはリクエストごとに(BYOK で)認証されます。x-ms-tenant-id と x-ms-client-id に加え、x-ms-client-secret(アプリのみ)または x-ms-refresh-token(委任 — 以下を参照)のいずれかを指定します。指定がない場合、MS_* 環境認証情報が設定されていればそれを使用します。シークレットと更新トークンの両方が送信された場合は、更新トークンが優先されます(ヘッダーを上書きするプロキシはヘッダーを追加できますが、削除はできません)。ヘルスチェック用エンドポイントは GET /health です。
委任モード — サインイン中のユーザーとして操作
アプリのみのセッションはアプリ登録として動作します。委任セッションはユーザーとして動作し、ユーザー自身の Planner アクセス許可が適用され、すべての書き込み操作はそのユーザーによるものとして記録されます。
- 別のパブリックアプリ登録を作成します。認証 → パブリック クライアント フローを許可する → はい。API のアクセス許可 → 委任の
Tasks.ReadWrite、Group.Read.All、User.ReadBasic.Allを追加します(テナントで必要な場合は管理者の同意も付与します)。 - 各ユーザーがデバイスコードヘルパーを使って一度サインインし、表示された更新トークンを保管します。
node scripts/device-login.mjs --tenant <tenant-id> --client <public-client-id>
- (stdio では)
MS_CLIENT_SECRETの代わりにMS_REFRESH_TOKENを使用するか、(HTTP では)x-ms-refresh-tokenヘッダーを使用します。MCP ゲートウェイの背後では、個人用認証情報(フィールドx-ms-refresh-token)として登録します。
更新トークンはシークレットです。ユーザー本人として操作するためのものであり、最後の使用から約 90 日間有効です。期限切れになった場合は、ヘルパーを再実行してください。
Docker
docker build -t mcp-planner .
docker run -p 3000:3000 -e MS_TENANT_ID=... -e MS_CLIENT_ID=... -e MS_CLIENT_SECRET=... mcp-planner
アクセスモデル
MCP レベルでのロール制限はありません。アクセス制御は、Entra アプリ登録に付与された Graph のアクセス許可そのものです。セッションごとに異なるアプリ登録を指定することで(BYOK ヘッダー)、実行できる操作を制限できます。
注意事項
- Planner では、更新や削除のたびに
If-MatchETag が必要です。ツールは現在のリソースを取得し、その ETag を自動的に渡します。412(同時変更)が発生した場合は、そのまま再試行してください。 - 優先度の対応:urgent=1、important=3、medium=5、low=9(Graph では 0~10 を使用します)。
- 進捗:未開始(0)、進行中(50)、完了(100)。
開発
npm install
npm run dev # stdio
npm run dev:http # http
npm test
npm run build
npm run bundle # Claude Desktop .mcpb
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。