MCP server for Microsoft To Do via Microsoft Graph API. Manage task lists, create, update, complete and delete tasks from Claude Code, Claude Desktop, or any MCP-compatible client. Stdio transport, MSAL device code auth, persisted token cache.
mcp-microsoft-todo
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
> 🇫🇷 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.
---
🏗 Built and maintained by MAG&Cie
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.
---
🚀 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):**
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:**
---
🟪 Claude Desktop (app)
**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):
- **Windows**: right-click systray icon → Quit, then relaunch
- **macOS**: ⌘+Q then relaunch
**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:
- **Windows**: %APPDATA%\Claude\logs\mcp-server-microsoft-todo.log
- **macOS**: ~/Library/Logs/Claude/mcp-server-microsoft-todo.log
**Update:** edit the version in args (@mag-cie/mcp-microsoft-todo@latest), restart Claude Desktop. Or let npx do its thing (npx cache ~24h).
---
🟧 Cursor / Continue / other stdio MCP clients
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).
---
💡 Example prompts
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 |