MCP server for managing Microsoft To Do tasks through Microsoft Graph with device-code sign-in and cached tokens.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by 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.
This MCP server is open-source and free to use. It's also a showcase of our CrΓ©ation de MCP offering at MAG&Cie β we build custom MCP connectors for businesses that want to plug AI into their internal tools (CRM, ERP, custom APIs, internal databases).
If you'd like the same kind of connector for your tools β drop us a line at www.mag-cie.com/creation-mcp.
No Azure account required, no App Registration to create, nothing to compile.
Install (one command):
If you have a personal Microsoft account (outlook.com, hotmail.com, live.com, msn.com, Office 365 personal), add MS_TENANT=consumers:
Verify it's wired up:
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):
You'll see:
Visit the URL, enter the code, sign in. The token is cached in ~/.mcp-microsoft-todo/token-cache.json and refreshed automatically β you'll never have to do this again. Now go to Claude Code and any prompt that calls a tool will work instantly.
Skip the pre-auth step if you're feeling lucky β the MCP will trigger the device code flow on first call too. The code goes to the Claude Code MCP log file (look in
%USERPROFILE%\.claude\logs\on Windows or~/.claude/logs/elsewhere).
Update to the latest version:
The -y flag of npx auto-accepts the download. Without @latest, npx may serve a stale cached version.
Uninstall:
1. Locate the config file:
| OS | Path |
|---|---|
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
On Windows, you can open it directly with:
If the file doesn't exist, create it with an empty JSON object {} then edit.
2. Add the config:
For a personal Microsoft account, add env:
To localize the compact-format strings (optional, see Localization):
3. Restart Claude Desktop COMPLETELY (not just close the window):
4. Verify it's wired up:
In Claude Desktop, look at the π plug or π§ tools icon at the bottom right of the input area β you should see microsoft-todo listed.
5. First auth β recommended pre-auth in a terminal:
You'll see the device code immediately in the terminal. Visit the URL, enter the code, sign in. Token cached. Now Claude Desktop will reuse this cache β no need to fish in the logs.
Without --auth, the device code goes to the Claude Desktop MCP log file:
%APPDATA%\Claude\logs\mcp-server-microsoft-todo.log~/Library/Logs/Claude/mcp-server-microsoft-todo.logUpdate: edit the version in args (@mag-cie/mcp-microsoft-todo@latest), restart Claude Desktop. Or let npx do its thing (npx cache ~24h).
Any MCP client that supports the stdio transport works the same way. Generic format:
Adapt to the client's config format (often JSON or TOML similar to Claude Desktop).
Once installed, just ask Claude in natural language. Sample prompts that exercise the main tools:
| Prompt | Tool(s) |
|---|---|
| "Show me all my To Do lists" | list_task_lists |
| "What do I have to do today?" | summarize_today |
| "Show me my overdue tasks" | list_overdue_tasks |
| "List tasks tagged 'work'" | list_tasks_by_category |
| "Find any task containing 'invoice'" | search_tasks |
| "Add a daily recurring 'Workout' task" | create_task (with recurrence) |
| "Mark these 5 tasks as done" | batch_complete_tasks |
| "Move 'Buy bread' from Personal to Shopping" | move_task |
| "Add a 'recipe' subtask to the cake task" | create_checklist_item |
| "Tag all my Magaria tasks as 'urgent'" | bulk_update_categories |
| "Export my work tasks as iCalendar" | export_tasks_ics |
| "Attach a project_id metadata to this task" | set_extension |
| Symptom | Solution |
|---|---|
| "This page isn't right" page after sign-in | Add MS_TENANT=consumers (personal accounts only) |
| Browser opens with the wrong Microsoft account | Use an InPrivate/Incognito window for the sign-in |
invalid_scope or Tasks.ReadWrite.Shared error | Purge the token cache and re-auth: rm -rf ~/.mcp-microsoft-todo |
Node.js not found or npx not found | Install Node 20+ from nodejs.org. On Windows, verify it's in PATH (relaunch your terminal after install) |
| Token expired, refresh fails | Purge the cache and re-auth |
| Device code never appears | Verify the server is spawning β Claude Code: claude mcp list; Claude Desktop: tools icon at the bottom. If absent, check the npx PATH in the config |
MS_CLIENT_ID not configured | You're using a dev fork β export MS_CLIENT_ID or use the official npm version |
Safety column legend: read = read-only, write = mutates state (non-idempotent create), update = idempotent mutation (safe to retry), delete = destructive (data loss). See Safety annotations below for details.
| Tool | Safety | Description |
|---|---|---|
list_task_lists | read | All your To Do lists |
list_tasks | read | Tasks of a list (OData filter, $orderby, paginate) |
get_task | read | Detail of a task by ID |
create_task | write | Create a task (title, body, importance, due date, categories, recurrence, reminder) |
update_task | update | Update title, status, due date, recurrence, reminder⦠|
complete_task | update | Mark as completed |
delete_task | delete | Delete permanently |
move_task | delete | Move a task from one list to another (source task is deleted) |
search_tasks | read | Cross-list search by title |
summarize_today | read | Summary of tasks due today + overdue |
list_all_tasks | read | Every task across every list in one round-trip (uses Graph $batch) |
| Tool | Safety | Description |
|---|---|---|
batch_create_tasks | write | Create up to 100 tasks in a single Graph $batch HTTP call |
batch_complete_tasks | update | Mark up to 100 tasks as completed in one call |
batch_delete_tasks | delete | Delete up to 100 tasks in one call |
| Tool | Safety | Description |
|---|---|---|
list_checklist_items | read | Sub-items of a task |
create_checklist_item | write | Add a sub-item |
update_checklist_item | update | Rename / check / uncheck |
delete_checklist_item | delete | Delete a sub-item |
| Tool | Safety | Description |
|---|---|---|
list_linked_resources | read | List the linked resources of a task |
create_linked_resource | write | Attach a URL or external reference |
delete_linked_resource | delete | Delete a linked resource |
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mag-cie-mcp-microsoft-todo)<a href="https://allmcps.com/mcp/mag-cie-mcp-microsoft-todo"><img src="https://allmcps.com/api/badge/mag-cie-mcp-microsoft-todo?style=directory" alt="MCP Microsoft Todo on AllMCPs" /></a>