mcpField
M
Microsoft Planner

Microsoft Planner

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

Microsoft Planner について

Microsoft Planner MCPサーバーは、Microsoft Graph経由でプランやタスクを管理し、エージェントでPlanner業務を確認・更新したいチームを対象とします。更新や削除に必要なETagを自動処理し、任意で高度なGraphツールも利用できます。

主な機能

  1. 01Microsoft 365グループとユーザーの検索
  2. 02プラン、タスク、チェックリストの表示
  3. 03タスクとバケットの作成・管理
  4. 04タスクの割り当てと進捗更新
  5. 05ETagによる競合制御の自動処理
  6. 06任意で使える制限付きGraph GETツール

活用シーン

  1. 01ユーザーを検索してPlannerタスクを割り当て
  2. 02複数プランにまたがるユーザーのタスク確認
  3. 03タスク説明とチェックリスト状態の更新
  4. 04Planner、グループ、ユーザーのGraphデータ参照

MCP 対応

Microsoft Graph経由のMicrosoft Planner操作を、MCPクライアント向けのツールとして公開します。stdioとHTTPに対応し、任意で制限付きの読み取り専用Graphツールを有効にできます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"mspstack-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.4.0

ツール

14

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
response_formatenumいいえ出力形式:人間が読みやすい Markdown(デフォルト)または構造化 JSONmarkdown | json

詳細

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 つのサーバーを複数のクライアントで再利用できます。