Planner MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Planner MCPTurn the Friday notes into tasks, assign Aysyal to social and me to tracking, due next Friday"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Planner MCP
A remote Model Context Protocol server that lets Claude read, create, assign and close Microsoft Planner tasks for a small team.
Claude's built in Microsoft 365 connector covers Outlook, Teams chat and SharePoint, but not Planner tasks. This fills that gap.
Setup instructions are in SETUP.md.
What it does
Ask Claude to turn a brief into tasks and it does, assigned to the right people:
Turn the Friday notes into Planner tasks. Aysyal takes the social channels, I take the tracking work, everything due next Friday in the To do bucket.
Ask it what is going on and it answers from live data:
What is overdue in the marketing plan, and what is on Anton's plate this week?
Related MCP server: Microsoft 365 MCP Server
Tools
Tool | Purpose |
| Which team member is connected, and which plans they can reach |
| The plans this server can read and write |
| The columns in a plan |
| Tasks in a plan, filtered by assignee, bucket, status, overdue or due date |
| Open tasks for the connected person, across every plan |
| One task in full, including notes, checklist and links |
| One task, with assignees, due date, priority, notes, checklist, labels and a link |
| A batch, with shared defaults. This is the one to use for a brief |
| Change any field on an existing task |
| Add people, or replace the whole assignee list |
| Take people off without deleting |
| Mark done |
| Remove permanently, and it insists on confirmation |
| Search the directory for the right email address |
How it is built
Node 20 or newer, Express, and nothing else. One dependency total, so a deploy is never held up by a transitive package.
App only auth to Microsoft
The server talks to Microsoft Graph with the client credentials flow, using
Tasks.ReadWrite.All, Group.Read.All and User.Read.All application
permissions. There is no user token in the picture, so a password change or an
expired session never breaks it. The only credential with an expiry date is the
client secret, and that is on a 24 month clock.
Nobody is hardcoded
Assignees arrive as email addresses and are resolved against Entra ID at call
time, with a one hour cache. The lookup falls back to searching mail and
proxyAddresses when an address is not somebody's sign in name, which is the
case for aliases. Adding a colleague to the team needs no code change and no
deploy.
Before assigning, the server checks whether the person is in the Microsoft 365 group behind the plan. Planner accepts assignments to outsiders without complaining and then never shows them the task, so the server warns instead of letting that pass silently.
Its own OAuth server, so Connect asks for a password
Pressing Connect in Claude opens a login page served by this app. Type a work email and the team password and you are in. Behind that page is a small OAuth 2.1 authorization server: dynamic client registration, PKCE with S256 required, authorization code flow, refresh tokens.
Every piece of OAuth state is a signed token rather than a database row. Client
registrations, authorization codes, access tokens and refresh tokens are all
HMAC signed with JWT_SECRET. Three consequences worth knowing:
No database to run or back up.
A redeploy or a Railway restart does not disconnect anybody. This is covered by a test.
Rotating
JWT_SECRETdisconnects everybody at once, which is the emergency brake.
Failed logins are rate limited to ten per address per fifteen minutes. Password comparison is constant time.
Planner's awkward corners, handled
Two ETags per task. The task body and the task detail pane are separate objects with separate versions, and Planner rejects a write without the current one. Every update reads before it writes.
Basic plans only. Planner Premium plans are not reachable through this API, so no Premium licence is needed or useful.
Dates. A bare
2026-08-15is stored at midday UTC, which keeps the date correct in both Amsterdam and Sofia.Labels by name. Pass
SEOrather thancategory1. The server reads the plan's label names and translates.Rate limits. 429 and 503 are retried with backoff, honouring
Retry-After.
Tests
npm testStarts a fake Microsoft Graph, spawns the real server, walks the entire OAuth
flow by hand, then connects with the official MCP client and calls every tool.
Ends with 91 checks passed. It never touches the real tenant.
Layout
src/
index.js Express app and routes
config.js Environment loading and validation
auth.js OAuth 2.1 authorization server and bearer verification
jwt.js HS256 signing, PKCE, constant time password comparison
login-page.js The password gate and the status page
graph.js Microsoft Graph client: tokens, retries, ETags
people.js Email address to Entra object ID, with alias fallback
planner.js Plans, buckets, tasks, details, labels
tools.js MCP tool definitions and output formatting
mcp.js JSON-RPC over the Streamable HTTP transport
test/
mock-graph.js Fake Microsoft Graph
smoke-test.js End to end testThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityFmaintenanceA Model Context Protocol server that bridges Claude with Google Tasks, allowing users to manage task lists and tasks directly through Claude interface.Last updated153047MIT
- AlicenseCqualityAmaintenanceA Model Context Protocol server that enables interaction with Microsoft 365 services (Excel, Calendar, Mail, OneDrive, Teams, etc.) through the Graph API, allowing AI assistants to manage Microsoft 365 resources via natural language.Last updated10034,530894MIT
- Alicense-qualityBmaintenanceA Model Context Protocol (MCP) server that brings your Google Tasks into Claude and other MCP-compatible clients, enabling task and task list management through natural conversation.Last updated304MIT
- Alicense-qualityBmaintenanceA Model Context Protocol server bridging Claude to Microsoft Outlook + Teams (email, calendar, contacts, tasks, files, Teams meeting recordings + transcripts), deployed on Cloudflare Workers.Last updated1131MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server for generating rough-draft project plans from natural-language prompts.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/develop-bg/dijkman-planner-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server