Microsoft Planner

Registre officiel Autres

Microsoft Planner MCP server — plans, buckets, tasks via Microsoft Graph, ETags handled

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

NPM package mcp-planner
Claude Code
claude mcp add microsoft-planner -e 'MS_TENANT_ID=<MS_TENANT_ID>' -e 'MS_CLIENT_ID=<MS_CLIENT_ID>' -e 'MS_CLIENT_SECRET=<your ms_client_secret>' -e 'PLANNER_ADVANCED_TOOLSET=false' -- npx -y mcp-planner@0.2.0
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "microsoft-planner": {
            "command": "npx",
            "args": [
                "-y",
                "mcp-planner@0.2.0"
            ],
            "env": {
                "MS_TENANT_ID": "<MS_TENANT_ID>",
                "MS_CLIENT_ID": "<MS_CLIENT_ID>",
                "MS_CLIENT_SECRET": "<your ms_client_secret>",
                "PLANNER_ADVANCED_TOOLSET": "false"
            }
        }
    }
}

Variables d'environnement

  • MS_TENANT_ID obligatoire Microsoft Entra ID tenant id (GUID or domain)
  • MS_CLIENT_ID obligatoire Entra app registration client id
  • MS_CLIENT_SECRET obligatoire secret Entra app registration client secret (app needs Tasks.ReadWrite.All, GroupMember.Read.All, User.Read.All application permissions)
  • PLANNER_ADVANCED_TOOLSET true/1 registers the advanced toolset (graph_get, graph_find_endpoint) — a read-only escape hatch limited to /planner, /groups, /users

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. mcp-planner
  2. Tools
  3. Setup
  4. Access model
  5. Notes
  6. Development
  7. License

mcp-planner

MCP server for Microsoft Planner via the Microsoft Graph API. Find groups and plans, list buckets and tasks, and create, update, assign, complete, or delete tasks — including descriptions and checklists — with Planner's ETag concurrency handled automatically.

Sibling project to mcp-itglue and mcp-connectwise-psa — same architecture.

Tools

ToolDescription
planner_search_groupsFind Microsoft 365 groups (Teams) by name → group ID
planner_find_userFind a user by name/UPN → user ID for assignments
planner_list_plansList plans owned by a group
planner_get_planPlan + its buckets
planner_create_bucketCreate a bucket in a plan
planner_list_tasksTasks in a plan or bucket (filter by assignee, open/completed)
planner_list_user_tasksAll tasks assigned to a user, across plans
planner_get_taskTask with description and checklist
planner_create_taskCreate task (bucket, due date, priority, assignees, description)
planner_update_taskUpdate title/bucket/due/priority/progress/assignees
planner_update_task_detailsUpdate description; add or (un)check checklist items
planner_delete_taskPermanently delete a task
graph_find_endpoint †Search a curated catalog of the /planner, /groups, /users Graph surface
graph_get †Read-only GET for any Graph v1.0 path under /planner, /groups, /users

† Advanced toolset (opt-in, off by default) — an escape hatch for Graph surface the curated tools don't wrap. Enable with PLANNER_ADVANCED_TOOLSET=true or --advanced. graph_get is verb-locked to GET, rejects /beta, and only reaches the three path prefixes above, so a shared app registration's other permissions (e.g. mail) stay out of reach.

Setup

1. Entra ID app registration
  1. Entra admin center → App registrations → New registration
  2. API permissions → Application permissions → add Tasks.ReadWrite.All, GroupMember.Read.All, User.Read.All → Grant admin consent
  3. Certificates & secrets → New client secret — note the value
2. Run
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 mode
npx -y mcp-planner --transport http --port 3000

Sessions authenticate per-request (BYOK) with x-ms-tenant-id + x-ms-client-id plus either x-ms-client-secret (app-only) or x-ms-refresh-token (delegated — see below), or fall back to the MS_* environment credentials when set. When both a secret and a refresh token arrive, the refresh token wins (header-overlay proxies can add but not remove headers). Health probe at GET /health.

Delegated mode — act as the signed-in user

App-only sessions act as the app registration; delegated sessions act as a user: their Planner permissions apply and every write is attributed to them.

  1. A separate, public app registration: Authentication → Allow public client flows → Yes; API permissions → Delegated Tasks.ReadWrite, Group.Read.All, User.ReadBasic.All (+ admin consent where the tenant requires it).
  2. Each user signs in once via the device-code helper and keeps the printed refresh token:
node scripts/device-login.mjs --tenant <tenant-id> --client <public-client-id>
  1. Use MS_REFRESH_TOKEN instead of MS_CLIENT_SECRET (stdio), or the x-ms-refresh-token header (HTTP). Behind the MCP gateway, register it as a personal credential (field x-ms-refresh-token).

The refresh token is a secret — it acts as you — and stays valid ~90 days past its last use; re-run the helper when it expires.

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

Access model

No MCP-level role gating: the Entra app registration's granted Graph permissions are the access control. Point sessions at different app registrations (BYOK headers) to scope what they can do.

Notes

  • Planner requires an If-Match ETag on every update/delete — the tools fetch the current resource and pass its ETag automatically. On a 412 (concurrent change), just retry.
  • Priority mapping: urgent=1, important=3, medium=5, low=9 (Graph uses 0–10).
  • Progress: not started (0), in progress (50), completed (100).

Development

npm install
npm run dev        # stdio
npm run dev:http   # http
npm test
npm run build
npm run bundle     # Claude Desktop .mcpb

License

MIT

Questions fréquentes

Qu'est-ce que Microsoft Planner ?

Microsoft Planner MCP server — plans, buckets, tasks via Microsoft Graph, ETags handled

Comment installer Microsoft Planner ?

Il s'exécute sur votre machine. Dans Claude Code : claude mcp add microsoft-planner -e 'MS_TENANT_ID=<MS_TENANT_ID>' -e 'MS_CLIENT_ID=<MS_CLIENT_ID>' -e 'MS_CLIENT_SECRET=<your ms_client_secret>' -e 'PLANNER_ADVANCED_TOOLSET=false' -- npx -y mcp-planner@0.2.0. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour Microsoft Planner ?

Oui. Il attend MS_TENANT_ID, MS_CLIENT_ID, MS_CLIENT_SECRET, à renseigner dans sa configuration.

Microsoft Planner est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient Microsoft Planner ?

Il est publié par selic. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.