todo-planner-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TPM_CLIENT_ID | No | The client ID of your Microsoft Entra (Azure AD) app registration. | |
| TPM_TENANT_ID | No | The tenant ID of your Microsoft Entra (Azure AD) app registration. | |
| TPM_TOKEN_CACHE | No | The path where the sign-in token is cached and refreshed silently afterwards. | |
| TPM_REDIRECT_URI | No | The Web platform redirect URI registered for the app in confidential client mode (default http://localhost:8400/callback). | http://localhost:8400/callback |
| TPM_CLIENT_SECRET | No | The client secret of your app registration, used for confidential client mode with browser sign-in. Omit it to use the public client (device code) mode instead, which requires 'Allow public client flows: Yes' on the app registration. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| whoamiA | Return the signed-in user (verifies Graph auth is working). |
| todo_list_listsA | List all Microsoft To Do task lists (id + displayName + wellknownListName). |
| todo_find_listA | Find a To Do list by (case-insensitive) display name. Returns the first match or {}. |
| todo_create_listC | Create a new To Do list. |
| todo_update_listC | Rename a To Do list. |
| todo_delete_listC | Delete a To Do list. |
| todo_list_tasksB | List tasks in a list. Optional status filter (notStarted|inProgress|completed|waitingOnOthers|deferred). |
| todo_get_taskC | Get a single To Do task with full detail. |
| todo_create_taskC | Create a To Do task. due_date/reminder_date accept 'YYYY-MM-DD' or ISO datetime. importance: low|normal|high. body is the task note text. |
| todo_update_taskC | Update any subset of a task's fields. status: notStarted|inProgress|completed|waitingOnOthers|deferred. |
| todo_complete_taskC | Mark a task completed. |
| todo_delete_taskC | Delete a task. |
| todo_list_checklist_itemsC | List checklist items (subtasks) of a task. |
| todo_add_checklist_itemC | Add a checklist item (subtask) to a task. |
| todo_check_checklist_itemC | Mark a checklist item checked/unchecked. |
| todo_delete_checklist_itemC | Delete a checklist item. |
| planner_my_tasksA | List Planner tasks assigned to me across all plans (the 'Assigned to me' view). |
| planner_list_plansA | List Planner plans I can see: shared with me, plus plans in my M365 groups. |
| planner_get_planC | Get a plan's metadata. |
| planner_list_bucketsB | List the buckets (columns) of a plan. |
| planner_create_bucketC | Create a bucket in a plan. |
| planner_list_tasksC | List all tasks in a plan. |
| planner_get_taskB | Get a Planner task plus its details (checklist, description, references). |
| planner_create_taskA | Create a Planner task. due_date/start_date: 'YYYY-MM-DD' or ISO datetime. assignee_ids: AAD user ids to assign. priority: 0-10 (1 urgent, 3 important, 5 medium, 9 low). Assigning people who haven't signed up needs the user's confirmation (see confirm_code). |
| planner_update_taskB | Update task fields (ETag handled automatically). percent_complete: 0|1-99|100. Changing a task that involves people who haven't signed up needs the user's confirmation. |
| planner_assign_taskB | Assign a task to one or more users (AAD user ids). Adds to existing assignees. Involving people who haven't signed up needs the user's confirmation (see confirm_code). |
| planner_unassign_taskA | Remove one or more users from a task's assignees. Involving people who haven't signed up needs the user's confirmation (see confirm_code). |
| planner_complete_taskA | Mark a Planner task complete (percentComplete=100). Involving people who haven't signed up needs the user's confirmation (see confirm_code). |
| planner_delete_taskC | Delete a Planner task. Involving people who haven't signed up needs the user's confirmation (see confirm_code). |
| planner_set_descriptionB | Set the task's description (on plannerTaskDetails). Involving people who haven't signed up needs the user's confirmation (see confirm_code). |
| planner_add_checklist_itemB | Add a checklist item to a Planner task (stored on task details). Involving people who haven't signed up needs the user's confirmation (see confirm_code). |
| planner_list_plan_membersA | List the members of a plan's owning M365 group (to get user ids for assignment). |
| planner_find_memberA | Find plan members by name or email substring (returns user ids for assignment). |
| onenote_list_notebooksA | List my OneNote notebooks (owned, shared with me, and my groups' team notebooks). |
| onenote_list_sectionsA | List sections, either in one notebook or across all notebooks (includes nested section groups). |
| onenote_list_pagesA | List pages in a section, or my most recently modified pages across all notebooks. |
| onenote_search_pagesA | Find pages whose TITLE contains the text (case-insensitive). Does not search page bodies. |
| onenote_get_pageB | Read a page: metadata plus its content as plain text (to-dos shown as [ ] / [x]). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 38 tools
Tools are cleanly partitioned by domain prefix (todo_, planner_, onenote_) and action, so most purposes are clearly distinct. Minor overlap exists between planner_find_member and planner_list_plan_members (both exist to obtain user ids for assignment), and todo_update_task vs todo_complete_task are close, but descriptions disambiguate.
Consistent snake_case verb_noun pattern with domain prefixes throughout (todo_create_task, planner_assign_task, onenote_get_page). Deviations are minor: the awkward todo_list_lists (list_lists) and the prefix-less whoami, which breaks the otherwise uniform scheme.
38 tools is heavy for a single server, sitting above the comfortable range. It is mitigated by spanning three distinct products (roughly 14 To Do, 17 Planner, 5 OneNote), each of which is reasonably scoped on its own, but the aggregate surface is large.
To Do has full list/task/checklist CRUD lifecycle and Planner covers task CRUD plus assignment and membership lookup. Gaps remain: Planner buckets can be created/listed but not updated/deleted, plans cannot be created/deleted, and OneNote is entirely read-only (no page creation or editing).