Gestiona tareas, buckets y planes de Microsoft Planner interactuando con la Microsoft Graph API.
También conocido como mspstack/mcp-planner, mcp-planner
- Stars
- 4
- Herramientas
- 12
- Descargas, 30 días
- —
- Última versión
- 0.4.0
- Último commit
- 31 ago 2026
- Licencia
- MIT
¿Qué es Microsoft Planner MCP?
Microsoft Planner es un MCP server. Gestiona tareas, buckets y planes de Microsoft Planner interactuando con la Microsoft Graph API. Expone 12 herramientas, como planner_search_groups, planner_find_user, planner_list_plans.
Resumen generado a partir del README del proyecto
Acerca del MCP server de Microsoft Planner
Este MCP server permite gestionar tareas, buckets y planes de Microsoft Planner directamente desde un cliente de IA. Permite a los desarrolladores interactuar con la Microsoft Graph API para encontrar grupos de Microsoft 365, localizar usuarios específicos para la asignación de tareas y organizar el trabajo mediante planes y buckets. Puedes crear, actualizar o eliminar tareas mientras el servidor gestiona automáticamente la concurrencia por ETag para evitar conflictos durante las actualizaciones.
Los usuarios pueden configurarlo localmente a través de stdio o de forma remota mediante transporte HTTP. El servidor requiere un registro de aplicación en Entra ID con permisos específicos como Tasks.ReadWrite.All y GroupMember.Read.All. Admite tanto la autenticación solo de aplicación mediante un client secret como el modo delegado usando un refresh token para actuar en nombre de un usuario específico. Para necesidades avanzadas, un conjunto de herramientas opcional proporciona una vía de escape de solo lectura para acceder a otras partes de la superficie de Graph, incluyendo grupos y usuarios.
Qué puedes hacer con él
- 1Asignar tareas a miembros del equipoBusca a un usuario específico por nombre y asígnalo a una nueva tarea de Planner.
- 2Actualizar listas de tareasModifica la descripción de una tarea o añade y marca elementos en una lista de verificación.
- 3Organizar el trabajo en bucketsCrea nuevos buckets dentro de un plan existente para categorizar tareas.
- 4Auditar la carga de trabajo de los usuariosObtén una lista de todas las tareas asignadas actualmente a una persona específica en todos los planes.
Escrito a partir del README del proyecto. Cada caso de uso se verifica con una cita del mismo.
Cómo instalar Microsoft Planner MCP
Formatos verificados el 10 nov 2026Añadir a CursorAñadir a GooseInstalar Microsoft Planner MCP en Claude Code
$ 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-plannerInstalar Microsoft Planner MCP en Cursor
~/.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>"
}
}
}
}Instalar Microsoft Planner MCP en VS Code
.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>"
}
}
}
}Instalar Microsoft Planner MCP en VS Code CLI
$ 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>"}}'Instalar Microsoft Planner MCP en Claude Desktop
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>"
}
}
}
}Instalar Microsoft Planner MCP en Codex
$ 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-plannerInstalar Microsoft Planner MCP en Codex config.toml
~/.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>"
Instalar Microsoft Planner MCP en Gemini CLI
$ 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-plannerInstalar Microsoft Planner MCP en Gemini settings.json
~/.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>"
}
}
}
}Herramientas de Microsoft Planner MCP 12
Detectado desde el 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 | — |
Configuración
MS_CLIENT_SECRETObligatorioSecretoEntra app registration client secret (app needs Tasks.ReadWrite.All, GroupMember.Read.All, User.Read.All application permissions)
MS_CLIENT_IDObligatorioEntra app registration client id
MS_TENANT_IDObligatorioMicrosoft 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
| Nombre | Descripción | Tipo |
|---|---|---|
| MS_CLIENT_SECRET | Entra app registration client secret (app needs Tasks.ReadWrite.All, GroupMember.Read.All, User.Read.All application permissions) | ObligatorioSecreto |
| MS_CLIENT_ID | Entra app registration client id | Obligatorio |
| MS_TENANT_ID | Microsoft Entra ID tenant id (GUID or domain) | Obligatorio |
| PLANNER_ADVANCED_TOOLSET | true/1 registers the advanced toolset (graph_get, graph_find_endpoint) — a read-only escape hatch limited to /planner, /groups, /users |
Verificaciones automáticas
Ejecutado 13 nov 2026Informe completo →Pasó nuestras verificaciones automáticas. Esto no es una auditoría de seguridad: lee el código y dale al servidor el acceso más limitado que necesite. Cómo funcionan las verificaciones
- Repositorio de origen vinculado y accesiblemspstack/mcp-planner is public and reachablegithub.com/mspstack/mcp-planner ↗Aprobado
- El paquete indica este repositorio como su origenmcp-planner names mspstack/mcp-planner as sourcenpmjs.com/package/mcp-planner ↗Aprobado
- Procedencia de la compilación (atestación de Sigstore)Sigstore attestation for mcp-plannernpmjs.com/package/mcp-planner/v/0.4.0#provenance ↗Aprobado
- Licencia de código abierto (OSI)MITspdx.org/licenses/MIT.html ↗Aprobado
- Commit o lanzamiento en el último añoLast commit or release 2026-08-31github.com/mspstack/mcp-planner ↗Aprobado
- OpenSSF ScorecardNo verificado
- El nombre del paquete no es similar a un paquete popularNo popular package one edit away from mcp-plannerAprobado
- No hay avisos críticos en el paquete ni en sus dependencias99 resolved dependencies checked; no critical advisoryosv.dev ↗Aprobado
- Sin instrucciones ocultas para el modelo12 tool descriptions and the README read; no override phrases, credential paths or hidden charactersAprobado
- Las herramientas destructivas están etiquetadasNo tool named like delete, drop or execAprobado
- El endpoint remoto responde al handshake de MCPNo verificado
README
Ver en GitHubmcp-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
Preguntas sobre Microsoft Planner MCP
¿Cómo agrego Microsoft Planner MCP a Claude Code?
Ejecuta 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 en tu terminal. Añade --scope user para que esté disponible en todos los proyectos.
¿Cómo agrego Microsoft Planner MCP a Cursor?
Abre ~/.cursor/mcp.json y añade el servidor en mcpServers, usando la configuración de Cursor que se muestra en la sección de instalación de arriba.
¿Qué herramientas proporciona Microsoft Planner MCP?
Expone 12 herramientas, incluidas planner_search_groups, planner_find_user, planner_list_plans, planner_get_plan, planner_create_bucket.
¿Cómo gestiona el servidor la concurrencia en Microsoft Planner?
El servidor gestiona automáticamente la concurrencia por ETag de Planner, obteniendo el recurso actual y pasando su ETag durante las actualizaciones o eliminaciones.
¿Qué permisos se requieren para el registro de la aplicación en Entra ID?
Debes añadir permisos de aplicación para Tasks.ReadWrite.All, GroupMember.Read.All y User.Read.All, y luego otorgar el consentimiento del administrador.