mcpField
M
Microsoft Planner

Microsoft Planner

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

Microsoft Planner について

Microsoft Planner は、Microsoft Graph 経由でプラン、バケット、タスクを管理する MCP サーバーです。アプリまたは委任ユーザーとしてアクセスでき、更新や削除時の Planner ETag 処理を自動化します。

主な機能

  1. 01グループ、ユーザー、プラン、バケットの検索
  2. 02タスクとチェックリストの一覧・管理
  3. 03ユーザーの割り当てと進捗管理
  4. 04更新・削除時の ETag 処理

活用シーン

  1. 01プラン別または担当者別のタスク確認
  2. 02チームタスクの作成と更新
  3. 03期限切れタスクの完了または削除

MCP 対応

Microsoft Graph を利用し、Microsoft Planner の操作ツールを MCP クライアントに提供します。任意の高度なツールでは、planner、groups、users のパスに限定した読み取り専用の Graph アクセスも利用できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"selic-mcp-planner": {
"command": "npx",
"args": [
"-y",
"mcp-planner"
],
"env": {
"MS_TENANT_ID": "<MS_TENANT_ID>",
"MS_CLIENT_ID": "<MS_CLIENT_ID>",
"MS_CLIENT_SECRET": "<MS_CLIENT_SECRET>",
"PLANNER_ADVANCED_TOOLSET": "<PLANNER_ADVANCED_TOOLSET>"
}
}
}
}
起動コマンドnpx -y mcp-planner
設定が必要な環境変数
MS_TENANT_IDMicrosoft Entra ID tenant id (GUID or domain)
MS_CLIENT_IDEntra app registration client id
MS_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmmcp-planner0.2.0

ツール

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

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

詳細

mcp-planner

Microsoft Graph API を通じて Microsoft Planner を操作する MCP サーバーです。グループとプランを検索し、バケットとタスクを一覧表示できます。また、Planner の ETag による同時実行制御を自動的に処理しながら、説明やチェックリストを含むタスクの作成、更新、割り当て、完了、削除を行えます。

mcp-itglue および mcp-connectwise-psa の姉妹プロジェクトで、同じアーキテクチャを採用しています。

ツール

ツール説明
planner_search_groupsMicrosoft 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 アプリ登録
  1. Entra 管理センター → アプリの登録 → 新規登録
  2. API のアクセス許可 → アプリケーションのアクセス許可 → Tasks.ReadWrite.All、GroupMember.Read.All、User.Read.All を追加 → 管理者の同意を与える
  3. 証明書とシークレット → 新しいクライアント シークレット — 値を控えておきます
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 アクセス許可が適用され、すべての書き込み操作はそのユーザーによるものとして記録されます。

  1. 別のパブリックアプリ登録を作成します。認証 → パブリック クライアント フローを許可する → はい。API のアクセス許可 → 委任の Tasks.ReadWrite、Group.Read.All、User.ReadBasic.All を追加します(テナントで必要な場合は管理者の同意も付与します)。
  2. 各ユーザーがデバイスコードヘルパーを使って一度サインインし、表示された更新トークンを保管します。
node scripts/device-login.mjs --tenant <tenant-id> --client <public-client-id>
  1. (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-Match ETag が必要です。ツールは現在のリソースを取得し、その 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

コメント

MCP は初めてですか?

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

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