Mcp Microsoft Todo
About
MCP server for Microsoft To Do via Microsoft Graph. MSAL device code flow, no client secret needed.
Details
- Author
- MAG-Cie
- Downloads
- 498
- Categories
- Productivity, Project Management
Jump to
- 28 tools: list, create, update, complete, delete tasks
- Batch operations (create, complete, delete up to 100 tasks)
- Sub‑task (checklist) management
- Attach external URLs as linked resources
- Custom JSON metadata via open extensions
- Cross‑list helpers (overdue, by category, bulk update)
- iCalendar export for Google/Apple/Outlook calendars
- Compact text output to save LLM tokens
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Mcp Microsoft TodoCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Install via npm: npx -y @mag-cie/mcp-microsoft-todo. Add it to your MCP client’s config (e.g., Claude Desktop’s claude_desktop_config.json). For personal accounts, set MS_TENANT=consumers. On first use, run --auth in a terminal to cache the token, then ask natural‑language prompts like “Show me my To Do lists” or “Mark these tasks as done”.
list_task_lists
List all the user's To Do lists (Tasks, Inbox, custom lists, etc.).
list_tasks
List the tasks of a To Do list. Supports OData filter, $orderby, $top, and pagination.
get_task
Fetch a task's detail by ID.
create_task
Create a new task in a To Do list. Supports recurrence and reminder.
update_task
Update an existing task (title, status, recurrence, reminder, etc.).
complete_task
Shortcut to mark a task as completed.
delete_task
Delete a task permanently.
move_task
Move a task from one list to another. Recreates the task in the target list (title, body, due, recurrence, reminder, categories preserved) then deletes the original. Note: checklistItems and linkedResources are NOT moved (Graph limitation). The task ID changes.
search_tasks
Search a term in the titles of tasks across ALL lists (case-sensitive). By default excludes completed tasks.
summarize_today
Summary of tasks due today and overdue, aggregated per list. Useful for the question "what do I have to do today?".
list_all_tasks
Fetch every active task across every list in a single round-trip (uses Graph $batch internally). Use this for the question "what are all my tasks?" instead of N×list_tasks calls. Optional `filter` is an OData filter applied per list (e.g. "importance eq 'high'"). By default `status ne 'completed'` is appended unless `include_completed` is true.
list_checklist_items
List the sub-items (checklist) of a task.
create_checklist_item
Add a sub-item (checklist) to a task.
update_checklist_item
Update a sub-item (rename or check/uncheck).
delete_checklist_item
Delete a sub-item.
list_linked_resources
List the linked resources (external URLs, third-party app refs) of a task.
create_linked_resource
Attach a linked resource (URL or external ref) to a task.
delete_linked_resource
Delete a linked resource from a task.
batch_create_tasks
Create several tasks in a single HTTP call via Microsoft Graph $batch (up to 100 items, auto-chunked by 20). Returns: status + result OR error per item, in order. More efficient than N create_task calls.
batch_complete_tasks
Mark several tasks as completed in a single $batch HTTP call (up to 100 items).
batch_delete_tasks
Delete several tasks in a single $batch HTTP call (up to 100 items).
list_extensions
List the open extensions (custom JSON metadata) attached to a task.
set_extension
Create or update (upsert) an open extension on a task. Lets you attach arbitrary JSON metadata (project_id, external_ref, custom flags...) that persist in Microsoft Graph.
delete_extension
Delete an open extension from a task.
list_overdue_tasks
List ALL overdue tasks (status ne completed and dueDateTime < today) across every list. Aggregated via Promise.all.
list_tasks_by_category
List ALL tasks containing a given category, across every list. OData filter: categories/any(c: c eq '...').
bulk_update_categories
Add/remove categories on several tasks in one operation. 2-phase batch: GET to read existing categories, then PATCH with the updated set. Per-item errors, no global fail.
export_tasks_ics
Export tasks to iCalendar format (text/calendar VTODO) for import into Google Calendar, Apple Calendar, Outlook, Thunderbird, etc. Recurrence converted to RRULE when possible. Reminder converted to VALARM.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"mcp microsoft todo": {
"microsoft-todo": {
"command": "npx",
"args": [
"-y",
"@mag-cie/mcp-microsoft-todo@latest"
],
"env": {
"MS_CLIENT_ID": "your-azure-app-client-id",
"MS_TENANT": "common"
}
}
}
}
}
McpServers
{
"microsoft-todo": {
"command": "npx",
"args": [
"-y",
"@mag-cie/mcp-microsoft-todo@latest"
],
"env": {
"MS_CLIENT_ID": "your-azure-app-client-id",
"MS_TENANT": "common"
}
}
}
mcp-microsoft-todo
> 🇫🇷 Version française : README.fr.md
MCP server to drive Microsoft To Do from Claude Code, Claude Desktop, or any MCP-compatible client.
Works with any Microsoft account: personal (outlook.com, hotmail.com, live.com), Office 365 personal or business, Microsoft 365. Zero Azure setup required on the user side — just sign in via device code flow.
---
🚀 End-user installation
Prerequisites (all clients)
- Node.js 20+ (nodejs.org)
- A Microsoft account (free or paid)
No Azure account required, no App Registration to create, nothing to compile.
---
🟦 Claude Code (CLI)
Install (one command):
claude mcp add --transport stdio microsoft-todo -- npx -y @mag-cie/mcp-microsoft-todo
If you have a personal Microsoft account (outlook.com, hotmail.com, live.com, msn.com, Office 365 personal), add MS_TENANT=consumers:
claude mcp add --transport stdio microsoft-todo --env MS_TENANT=consumers -- npx -y @mag-cie/mcp-microsoft-todo
Verify it's wired up:
claude mcp list
First use — recommended: pre-auth in a terminal first to avoid the "stuck on first MCP call" issue (where the device code is printed to MCP stderr but Claude Code doesn't surface it):
```bash
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



