Verwalte Microsoft Planner Aufgaben, Buckets und Pläne durch die Interaktion mit der Microsoft Graph API.
Auch bekannt als mspstack/mcp-planner, mcp-planner
- Stars
- 4
- Tools
- 12
- Downloads, 30 Tage
- —
- Neueste Version
- 0.4.0
- Letzter Commit
- 31. Aug. 2026
- Lizenz
- MIT
Was ist Microsoft Planner MCP?
Microsoft Planner ist ein MCP server. Verwalte Microsoft Planner Aufgaben, Buckets und Pläne durch die Interaktion mit der Microsoft Graph API. Er stellt 12 Tools bereit, etwa planner_search_groups, planner_find_user, planner_list_plans.
Zusammenfassung generiert aus dem README des Projekts
Über Microsoft Planner MCP server
Dieser MCP server ermöglicht es dir, Microsoft Planner Aufgaben, Buckets und Pläne direkt aus einem AI-Client heraus zu verwalten. Er erlaubt Entwicklern, mit der Microsoft Graph API zu interagieren, um Microsoft 365 Gruppen zu finden, spezifische User für Aufgaben-Zuweisungen zu lokalisieren und die Arbeit durch Pläne und Buckets zu organisieren. Du kannst Aufgaben erstellen, aktualisieren oder löschen, während der Server die ETag-Concurrency automatisch handhabt, um Konflikte bei Updates zu vermeiden.
User können dies lokal via stdio oder remote über HTTP-Transport einrichten. Der Server benötigt eine Entra ID App-Registrierung mit spezifischen Berechtigungen wie Tasks.ReadWrite.All und GroupMember.Read.All. Er unterstützt sowohl die Application-only-Authentifizierung mittels Client Secret als auch den Delegated-Modus unter Verwendung eines Refresh Tokens, um im Namen eines spezifischen Users zu agieren. Für fortgeschrittene Anforderungen bietet ein optionales Toolset einen Read-only-Escape-Hatch, um auf andere Teile der Graph-Oberfläche zuzugreifen, einschließlich Gruppen und Usern.
Was du damit machen kannst
- 1Aufgaben an Teammitglieder zuweisenFinde einen spezifischen User anhand seines Namens und weise ihn einer neuen Planner-Aufgabe zu.
- 2Task-Checklisten aktualisierenÄndere die Beschreibung einer Aufgabe oder füge Items zu einer Checkliste hinzu und hake sie ab.
- 3Arbeit in Buckets organisierenErstelle neue Buckets innerhalb eines bestehenden Plans, um Aufgaben zu kategorisieren.
- 4User-Workloads auditierenRufe eine Liste aller Aufgaben ab, die aktuell einer bestimmten Person über alle Pläne hinweg zugewiesen sind.
Geschrieben aus dem README des Projekts. Jeder Use Case wurde gegen ein Zitat daraus geprüft.
So installierst du Microsoft Planner MCP
Formate geprüft am 10. Nov. 2026Zu Cursor hinzufügenZu Goose hinzufügenMicrosoft Planner MCP in Claude Code installieren
$ claude mcp add --env 'MS_CLIENT_SECRET=<YOUR_MS_CLIENT_SECRET>' --env 'MS_CLIENT_ID=<MS_CLIENT_ID>' --env 'MS_TENANT_ID=<MS_TENANT_ID>' mcp-planner -- npx -y mcp-plannerMicrosoft Planner MCP in Cursor installieren
~/.cursor/mcp.json
{
"mcpServers": {
"mcp-planner": {
"command": "npx",
"args": [
"-y",
"mcp-planner"
],
"env": {
"MS_CLIENT_SECRET": "<YOUR_MS_CLIENT_SECRET>",
"MS_CLIENT_ID": "<MS_CLIENT_ID>",
"MS_TENANT_ID": "<MS_TENANT_ID>"
}
}
}
}Microsoft Planner MCP in VS Code installieren
.vscode/mcp.json
{
"servers": {
"mcp-planner": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-planner"
],
"env": {
"MS_CLIENT_SECRET": "<YOUR_MS_CLIENT_SECRET>",
"MS_CLIENT_ID": "<MS_CLIENT_ID>",
"MS_TENANT_ID": "<MS_TENANT_ID>"
}
}
}
}Microsoft Planner MCP in VS Code CLI installieren
$ code --add-mcp '{"name":"mcp-planner","type":"stdio","command":"npx","args":["-y","mcp-planner"],"env":{"MS_CLIENT_SECRET":"<YOUR_MS_CLIENT_SECRET>","MS_CLIENT_ID":"<MS_CLIENT_ID>","MS_TENANT_ID":"<MS_TENANT_ID>"}}'Microsoft Planner MCP in Claude Desktop installieren
claude_desktop_config.json
{
"mcpServers": {
"mcp-planner": {
"command": "npx",
"args": [
"-y",
"mcp-planner"
],
"env": {
"MS_CLIENT_SECRET": "<YOUR_MS_CLIENT_SECRET>",
"MS_CLIENT_ID": "<MS_CLIENT_ID>",
"MS_TENANT_ID": "<MS_TENANT_ID>"
}
}
}
}Microsoft Planner MCP in Codex installieren
$ codex mcp add mcp-planner --env 'MS_CLIENT_SECRET=<YOUR_MS_CLIENT_SECRET>' --env 'MS_CLIENT_ID=<MS_CLIENT_ID>' --env 'MS_TENANT_ID=<MS_TENANT_ID>' -- npx -y mcp-plannerMicrosoft Planner MCP in Codex config.toml installieren
~/.codex/config.toml
[mcp_servers.mcp-planner] command = "npx" args = ["-y", "mcp-planner"] [mcp_servers.mcp-planner.env] MS_CLIENT_SECRET = "<YOUR_MS_CLIENT_SECRET>" MS_CLIENT_ID = "<MS_CLIENT_ID>" MS_TENANT_ID = "<MS_TENANT_ID>"
Microsoft Planner MCP in Gemini CLI installieren
$ gemini mcp add -s user -e 'MS_CLIENT_SECRET=<YOUR_MS_CLIENT_SECRET>' -e 'MS_CLIENT_ID=<MS_CLIENT_ID>' -e 'MS_TENANT_ID=<MS_TENANT_ID>' mcp-planner npx -- -y mcp-plannerMicrosoft Planner MCP in Gemini settings.json installieren
~/.gemini/settings.json
{
"mcpServers": {
"mcp-planner": {
"command": "npx",
"args": [
"-y",
"mcp-planner"
],
"env": {
"MS_CLIENT_SECRET": "<YOUR_MS_CLIENT_SECRET>",
"MS_CLIENT_ID": "<MS_CLIENT_ID>",
"MS_TENANT_ID": "<MS_TENANT_ID>"
}
}
}
}Microsoft Planner MCP tools 12
Erkannt aus dem READMEplanner_search_groupsplanner_find_userplanner_list_plansplanner_get_planplanner_create_bucketplanner_list_tasksplanner_list_user_tasksplanner_get_taskplanner_create_taskplanner_update_taskplanner_update_task_detailsplanner_delete_task
| planner_search_groups | — | |
| planner_find_user | — | |
| 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 | — |
Konfiguration
MS_CLIENT_SECRETErforderlichSecretEntra app registration client secret (app needs Tasks.ReadWrite.All, GroupMember.Read.All, User.Read.All application permissions)
MS_CLIENT_IDErforderlichEntra app registration client id
MS_TENANT_IDErforderlichMicrosoft Entra ID tenant id (GUID or domain)
PLANNER_ADVANCED_TOOLSETtrue/1 registers the advanced toolset (graph_get, graph_find_endpoint) — a read-only escape hatch limited to /planner, /groups, /users
| Name | Beschreibung | Typ |
|---|---|---|
| MS_CLIENT_SECRET | Entra app registration client secret (app needs Tasks.ReadWrite.All, GroupMember.Read.All, User.Read.All application permissions) | ErforderlichSecret |
| MS_CLIENT_ID | Entra app registration client id | Erforderlich |
| MS_TENANT_ID | Microsoft Entra ID tenant id (GUID or domain) | Erforderlich |
| PLANNER_ADVANCED_TOOLSET | true/1 registers the advanced toolset (graph_get, graph_find_endpoint) — a read-only escape hatch limited to /planner, /groups, /users |
Automatisierte Checks
Geluften am 13. Nov. 2026Vollständiger Bericht →Unsere automatisierten Checks bestanden. Das ist kein Security-Audit: Lies den Code und gib dem Server nur den minimal notwendigen Zugriff. Wie die Checks funktionieren
- Source Repository verknüpft und erreichbarmspstack/mcp-planner is public and reachablegithub.com/mspstack/mcp-planner ↗Bestanden
- Paket nennt dieses Repository als Quellemcp-planner names mspstack/mcp-planner as sourcenpmjs.com/package/mcp-planner ↗Bestanden
- Build-Provenienz (Sigstore-Attestierung)Sigstore attestation for mcp-plannernpmjs.com/package/mcp-planner/v/0.4.0#provenance ↗Bestanden
- Open Source Lizenz (OSI)MITspdx.org/licenses/MIT.html ↗Bestanden
- Commit oder Release im letzten JahrLast commit or release 2026-08-31github.com/mspstack/mcp-planner ↗Bestanden
- OpenSSF ScorecardNicht geprüft
- Package-Name ähnelt keinem populären PackageNo popular package one edit away from mcp-plannerBestanden
- Keine kritischen Advisories im Paket oder seinen Abhängigkeiten99 resolved dependencies checked; no critical advisoryosv.dev ↗Bestanden
- Keine versteckten Anweisungen an das Modell12 tool descriptions and the README read; no override phrases, credential paths or hidden charactersBestanden
- Destruktive Tools sind markiertNo tool named like delete, drop or execBestanden
- Remote-Endpoint beantwortet den MCP-HandshakeNicht geprüft
README
Auf GitHub ansehenmcp-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
| Tool | Description |
|---|---|
planner_search_groups |
Find Microsoft 365 groups (Teams) by name → group ID |
planner_find_user |
Find a user by name/UPN → user ID for assignments |
planner_list_plans |
List plans owned by a group |
planner_get_plan |
Plan + its buckets |
planner_create_bucket |
Create a bucket in a plan |
planner_list_tasks |
Tasks in a plan or bucket (filter by assignee, open/completed) |
planner_list_user_tasks |
All tasks assigned to a user, across plans |
planner_get_task |
Task with description and checklist |
planner_create_task |
Create task (bucket, due date, priority, assignees, description) |
planner_update_task |
Update title/bucket/due/priority/progress/assignees |
planner_update_task_details |
Update description; add or (un)check checklist items |
planner_delete_task |
Permanently 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
- Entra admin center → App registrations → New registration
- API permissions → Application permissions → add
Tasks.ReadWrite.All,GroupMember.Read.All,User.Read.All→ Grant admin consent - 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.
- 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). - 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>
- Use
MS_REFRESH_TOKENinstead ofMS_CLIENT_SECRET(stdio), or thex-ms-refresh-tokenheader (HTTP). Behind the MCP gateway, register it as a personal credential (fieldx-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-MatchETag 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
Microsoft Planner MCP Fragen
Wie füge ich Microsoft Planner MCP zu Claude Code hinzu?
Führe claude mcp add --env 'MS_CLIENT_SECRET=<YOUR_MS_CLIENT_SECRET>' --env 'MS_CLIENT_ID=<MS_CLIENT_ID>' --env 'MS_TENANT_ID=<MS_TENANT_ID>' mcp-planner -- npx -y mcp-planner in deinem Terminal aus. Füge --scope user hinzu, damit der Server in jedem Projekt verfügbar ist.
Wie füge ich Microsoft Planner MCP zu Cursor hinzu?
Öffne ~/.cursor/mcp.json und füge den Server unter mcpServers hinzu, mit der Cursor-Config aus dem Installationsabschnitt oben.
Welche Tools bietet Microsoft Planner MCP?
Er stellt 12 Tools bereit, darunter planner_search_groups, planner_find_user, planner_list_plans, planner_get_plan, planner_create_bucket.
Wie geht der Server mit Concurrency in Microsoft Planner um?
Der Server regelt die ETag-Concurrency von Planner automatisch, indem er die aktuelle Ressource abruft und deren ETag bei Updates oder Löschungen mit übergibt.
Welche Berechtigungen sind für die Entra ID App-Registrierung erforderlich?
Du musst Application-Berechtigungen für Tasks.ReadWrite.All, GroupMember.Read.All und User.Read.All hinzufügen und anschließend die Admin-Zustimmung (Admin Consent) erteilen.