Mcp Microsoft Todo

io.github.MAG-Cie由 GitHub 帳號 MAG-Cie 發布v1.2.2更新於 Oct 24, 2026

MCP server for Microsoft To Do via Microsoft Graph. MSAL device code flow, no client secret needed.

發布方自己的服務:Microsoft Learn MCP

已驗證STDIO僅桌面效率與工作流檔案與儲存

概覽

AI 產生的概覽

讓助理透過 Microsoft Graph 讀取與管理 Microsoft To Do 清單和任務,包括建立、更新、完成、移動與刪除任務。

可以做什麼
透過 Microsoft Graph 提供 28 個工具操作 Microsoft To Do:列出任務清單、列出與搜尋任務、取得任務詳細資料、彙總今日到期與逾期任務,以及將任務匯出為 iCalendar。它可以建立、更新、完成、移動與刪除任務,管理檢查清單子項目、連結資源與自訂 JSON 擴充,並支援一次對最多 100 個任務執行批次操作。讀取類工具預設回傳精簡文字格式,可透過 verbose 選項取得完整 Graph JSON。
適用情境
適合希望用自然語言讓助理處理 Microsoft To Do 任務的情境:查看今日到期或逾期任務、跨清單搜尋、新增或完成任務、整理分類,或將任務匯出到行事曆。支援個人帳戶、Office 365 與 Microsoft 365 帳戶。
執行需求
以 npm 套件形式透過 npx 在本機執行,需要 Node.js 20+。需要 Microsoft 帳戶,登入使用 MSAL 裝置代碼流程;官方 npm 版本無需建立 Azure 應用程式註冊。選用環境變數 MS_TENANT 用於選擇租用戶(common、consumers、organizations 或特定租用戶 ID)。環境變數 MS_CLIENT_ID 僅在開發分支中需要。權杖會快取在本機。
安裝前請注意
伺服器要求 Microsoft Graph 權限 Tasks.ReadWrite、Tasks.ReadWrite.Shared 與 offline_access,並將存取權杖儲存在本機快取檔案中。多個工具會寫入或刪除資料:create_task、batch_create_tasks、更新與完成類工具,以及 delete_task、batch_delete_tasks 與 move_task 等破壞性工具,其中 move_task 會刪除來源任務。安全註解僅為提示,伺服器本身不做強制,是否確認取決於 MCP 用戶端。移除伺服器時可透過 Microsoft 帳戶同意頁面撤銷存取並清除本機權杖快取。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Mcp Microsoft Todo,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

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.

[npm] [license]


🏗 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):

bash
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:

bash
claude mcp add --transport stdio microsoft-todo --env MS_TENANT=consumers -- npx -y @mag-cie/mcp-microsoft-todo

Verify it's wired up:

bash
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
# macOS / LinuxMS_TENANT=consumers npx -y @mag-cie/mcp-microsoft-todo@latest --auth
powershell
# Windows PowerShell$env:MS_TENANT="consumers"; npx -y @mag-cie/mcp-microsoft-todo@latest --auth

You'll see:

To sign in, use a web browser to open the page https://www.microsoft.com/link and enter the code XXXXXXXXX

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:

bash
claude mcp remove microsoft-todoclaude mcp add --transport stdio microsoft-todo -- npx -y @mag-cie/mcp-microsoft-todo@latest

The -y flag of npx auto-accepts the download. Without @latest, npx may serve a stale cached version.

Uninstall:

bash
claude mcp remove microsoft-todo# Purge the token cache:rm -rf ~/.mcp-microsoft-todo

🟪 Claude Desktop (app)

1. Locate the config file:

OSPath
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:

powershell
notepad $env:APPDATA\Claude\claude_desktop_config.json

If the file doesn't exist, create it with an empty JSON object {} then edit.

2. Add the config:

json
{  "mcpServers": {    "microsoft-todo": {      "command": "npx",      "args": ["-y", "@mag-cie/mcp-microsoft-todo"]    }  }}

For a personal Microsoft account, add env:

json
{  "mcpServers": {    "microsoft-todo": {      "command": "npx",      "args": ["-y", "@mag-cie/mcp-microsoft-todo"],      "env": { "MS_TENANT": "consumers" }    }  }}

To localize the compact-format strings (optional, see Localization):

json
{  "env": { "MS_TENANT": "consumers", "MCP_LOCALE": "fr" }}

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:

bash
# macOS / LinuxMS_TENANT=consumers npx -y @mag-cie/mcp-microsoft-todo@latest --auth
powershell
# Windows PowerShell$env:MS_TENANT="consumers"; npx -y @mag-cie/mcp-microsoft-todo@latest --auth

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:

command: npxargs: -y @mag-cie/mcp-microsoft-todoenv: MS_TENANT=consumers (if personal account)

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:

PromptTool(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

🆘 Auth troubleshooting

SymptomSolution
"This page isn't right" page after sign-inAdd MS_TENANT=consumers (personal accounts only)
Browser opens with the wrong Microsoft accountUse an InPrivate/Incognito window for the sign-in
invalid_scope or Tasks.ReadWrite.Shared errorPurge the token cache and re-auth: rm -rf ~/.mcp-microsoft-todo
Node.js not found or npx not foundInstall Node 20+ from nodejs.org. On Windows, verify it's in PATH (relaunch your terminal after install)
Token expired, refresh failsPurge the cache and re-auth
Device code never appearsVerify 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 configuredYou're using a dev fork — export MS_CLIENT_ID or use the official npm version

🛠 Available tools (28)

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.

Lists & tasks

ToolSafetyDescription
list_task_listsreadAll your To Do lists
list_tasksreadTasks of a list (OData filter, $orderby, paginate)
get_taskreadDetail of a task by ID
create_taskwriteCreate a task (title, body, importance, due date, categories, recurrence, reminder)
update_taskupdateUpdate title, status, due date, recurrence, reminder…
complete_taskupdateMark as completed
delete_taskdeleteDelete permanently
move_taskdeleteMove a task from one list to another (source task is deleted)
search_tasksreadCross-list search by title
summarize_todayreadSummary of tasks due today + overdue
list_all_tasksreadEvery task across every list in one round-trip (uses Graph $batch)

Batch operations (saves API calls)

ToolSafetyDescription
batch_create_taskswriteCreate up to 100 tasks in a single Graph $batch HTTP call
batch_complete_tasksupdateMark up to 100 tasks as completed in one call
batch_delete_tasksdeleteDelete up to 100 tasks in one call

Sub-tasks (checklist items)

ToolSafetyDescription
list_checklist_itemsreadSub-items of a task
create_checklist_itemwriteAdd a sub-item
update_checklist_itemupdateRename / check / uncheck
delete_checklist_itemdeleteDelete a sub-item

Linked resources (external URLs attached to a task)

ToolSafetyDescription
list_linked_resourcesreadList the linked resources of a task
create_linked_resourcewriteAttach a URL or external reference
delete_linked_resourcedeleteDelete a linked resource

Open extensions (custom JSON metadata)

ToolSafetyDescription
list_extensionsreadList the open extensions of a task
set_extensionupdateUpsert: create or update an extension (project_id, external_ref, etc.)
delete_extensiondeleteDelete an extension

Cross-list helpers

ToolSafetyDescription
list_overdue_tasksreadAll overdue tasks, aggregated across all lists
list_tasks_by_categoryreadAll tasks with a given category, cross-lists
bulk_update_categoriesupdateAdd/remove categories on many tasks in 2 batch phases

Export

ToolSafetyDescription
export_tasks_icsreadiCalendar export (VTODO + RRULE + VALARM) for import into Google Cal / Apple Cal / Outlook / Thunderbird

Output format

By default, tools return a compact text format (one line per item) to save LLM tokens. Legend:

  • [!] high importance, [?] low (nothing if normal)
  • [v] completed, [>] in progress, [w] waiting, [d] deferred (nothing if not started)
  • due:, rem:, rec:, cat:, body: fields shown only when populated

To get the full Graph JSON, pass verbose: true to any read tool.


🔐 Safety annotations

Every tool exposed by this server carries the MCP tool annotations defined by the Model Context Protocol spec (2025-06-18):

AnnotationMeaning
readOnlyHintThe tool only fetches data; running it has no side effects on Microsoft Graph
destructiveHintThe tool deletes data or otherwise causes data loss that cannot be undone
idempotentHintRunning the tool repeatedly with the same arguments yields the same end state (safe to retry)
openWorldHintThe tool talks to an external system (Microsoft Graph) — always true here
titleHuman-readable display name for MCP clients

These hints are advisory — the server itself enforces nothing — but MCP clients (Claude Code, Claude Desktop, Cursor, …) can use them to:

  • Auto-approve readOnlyHint: true calls without prompting (faster UX for read-heavy workflows)
  • Show a confirmation dialog before destructiveHint: true calls (e.g. delete_task, batch_delete_tasks, move_task)
  • Retry on transient failures only when idempotentHint: true
  • Display the friendly title instead of the snake_case name

The full mapping is in src/index.ts (ANNOTATIONS constant). Summary by safety class (see also the per-tool Safety column above):

  • read (15 tools): all list_*, get_*, search_*, summarize_*, export_* — readOnlyHint: true
  • write (4 tools): create_*, batch_create_tasks — destructiveHint: false, idempotentHint: false
  • update (5 tools): update_*, complete_*, set_extension, bulk_update_categories, batch_complete_tasks — destructiveHint: false, idempotentHint: true
  • delete (5 tools): delete_*, batch_delete_tasks, move_task — destructiveHint: true, idempotentHint: true

move_task is classified as delete because it deletes the source task (a new task is created in the target list with a different id).


🌍 Localization

The MCP works in any language out of the box — Claude reads the data the server returns and replies to the user in whatever language they prompted in. Try "List my tasks", "Liste mes tâches", "Zeig meine Aufgaben", "我的任务" — all work.

Optionally, you can localize the compact-format short labels returned by the server itself (No tasks., Due today:, Overdue:, Task X deleted., etc.) — this is a marginal improvement (saves a few tokens, slightly cleaner LLM context). Set MCP_LOCALE in your env:

LocaleCode
English (default)en
Françaisfr
Españoles
Deutschde

Resolution order: MCP_LOCALE → LC_ALL → LANG → fallback en. Only the first 2 chars are inspected (so fr_FR.UTF-8 works). Unsupported locale → falls back to en.

json
{  "mcpServers": {    "microsoft-todo": {      "command": "npx",      "args": ["-y", "@mag-cie/mcp-microsoft-todo"],      "env": { "MCP_LOCALE": "fr" }    }  }}

🔒 Security & privacy

  • The Microsoft token is stored only on your machine in ~/.mcp-microsoft-todo/token-cache.json
  • No data transits through MAG&Cie servers
  • Revoke access at any time at https://account.live.com/consent/Manage
  • To purge the local token: rm -rf ~/.mcp-microsoft-todo

Graph permissions requested: Tasks.ReadWrite, Tasks.ReadWrite.Shared, offline_access.


🧑‍💻 Developer setup (fork / contribution)

If you fork or want to develop locally with your own Azure AD App Registration:

1. Azure AD App Registration (maintainer/fork side only)

  1. https://portal.azure.com → Microsoft Entra ID → App registrations → New registration
  2. Name: mcp-microsoft-todo (free choice)
  3. Supported account types: Accounts in any organizational directory and personal Microsoft accounts
  4. Redirect URI: leave empty
  5. Register
  6. Note the Application (client) ID
  7. Authentication tab → Allow public client flows: Yes
  8. Authentication tab → Add a platform → Mobile and desktop applications → check https://login.microsoftonline.com/common/oauth2/nativeclient
  9. API permissions tab → Add a permission → Microsoft Graph → Delegated → add Tasks.ReadWrite, Tasks.ReadWrite.Shared, and offline_access. Grant admin consent if on a corporate tenant.

2. Build and local auth

bash
git clone https://github.com/MAG-Cie/mcp-microsoft-todocd mcp-microsoft-todonpm installnpm run buildexport MS_CLIENT_ID="<your-client-id>"   # PowerShell: $env:MS_CLIENT_ID="..."export MS_TENANT="common"npm run auth

The token cache will be written to ~/.mcp-microsoft-todo/token-cache.json.

3. Wire up Claude Code (local build)

powershell
# Windows PowerShell$env:MS_CLIENT_ID="<your-client-id>"claude mcp add --transport stdio microsoft-todo -- node "C:\path\to\mcp-microsoft-todo\dist\index.js"
bash
# macOS / Linuxexport MS_CLIENT_ID="<your-client-id>"claude mcp add --transport stdio microsoft-todo -- node /path/to/mcp-microsoft-todo/dist/index.js

⚠️ Env vars must be visible at spawn time. On Windows with fnm, verify the PowerShell session that launches claude has MS_CLIENT_ID exported.

4. Run tests

bash
npm test           # one-shotnpm run test:watch # watch mode

⬆️ Upgrading from earlier versions

FromToAction required
0.x0.4.0+Re-auth required: token cache lacks the new Tasks.ReadWrite.Shared scope. Run rm -rf ~/.mcp-microsoft-todo then trigger any tool to re-auth via device code.
0.x0.5.0+No breaking change — new tools added. Token compatible.
any1.0.0+Stable API marker. Future minor versions guarantee no breaking change to tool names, args, or return formats (compact + verbose).

🗺 Roadmap

  • v0.1 — stdio + 6 CRUD tools
  • v0.2 — distributable npm package, baked-in client ID
  • v0.3 — recurrence + reminders + checklists + linkedResources + search + move + summarize_today + retry/error robustness + vitest tests + compact format (verbose opt-in)
  • v0.4 — auto pagination + $batch operations + Tasks.ReadWrite.Shared scope (read shared lists)
  • v0.5 — open extensions + cross-list helpers (overdue, by category, bulk update) + iCalendar export
  • v1.0 — stable milestone: GitHub Actions CI + extended tests + snapshot tests + README polish

Possible future versions:

  • v1.1 — file attachments (Graph beta)
  • v1.2 — auto-pagination follow-on for summarize_today / search_tasks / list_overdue_tasks
  • v2.0 — remote HTTP/SSE transport for Claude.ai custom connectors (multi-user OAuth)

📄 License

MIT — © MAG&Cie

來源:README.md,提交 cf612cd

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.2.2最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Microsoft 整合