To Do任务管理协议服务器

一个通过Microsoft Graph API为AI助手提供Microsoft To Do访问权限的MCP服务器,支持多账户和加密存储。

  • by jc1122
  • JavaScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 jc1122/todo-mcp

使用说明

全部-MCP

MCP(模型上下文协议)服务器,允许AI助手访问 微软待办 通过Microsoft Graph API。支持多个帐户(个人和工作)、加密令牌存储和所有常见任务操作。

特性

  • 列出任意数量的帐户的任务列表和任务
  • 创建、更新、完成和删除任务
  • 在一次通话中获取每个列表中的所有待处理任务
  • 多账户支持(例如单独 work 和 personal 别名)
  • 刷新磁盘上用AES-256-GCM加密存储的令牌
  • 非阻塞设备代码身份验证流程(立即返回URL)

先决条件

  • Node.js 18岁或以后
  • 一 Azure应用程序注册 使用Microsoft Graph Tasks.Read, Tasks.ReadWrite,以及 offline_access 委托权限(见下文)

1.创建Azure应用程序注册

  1. 首选 portal.azure.com → 微软Entra ID → 应用注册 → 新注册
  2. 随便命名(例如。 My Todo MCP)
  3. 支持的帐户类型:选择 “任何组织目录中的帐户和个人Microsoft帐户” (启用工作和个人帐户)
  4. 不需要重定向URI--单击 注册
  5. 复制 应用程序(客户端)ID --你需要它在下面
  6. 首选 API权限 → 添加权限 → 微软图形 → 委派
    • 添加: Tasks.Read, Tasks.ReadWrite, offline_access
    • 点击 授予管理员同意 (或者用户在首次登录时会被提示)
  7. 首选 认证 → 高级设置 → 启用 “允许公共客户端流” (设备代码需要)
  8. 首选 清单 → set "requestedAccessTokenVersion": 2 在 api 部分→ 保存

2.安装

git clone <repo-url> todo-mcp
cd todo-mcp
npm install

3.配置

选项A-Claude桌面/协作(claude_desktop_config.json)

将此添加到 %APPDATA%\Claude\claude_desktop_config.json (Windows)或 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "todo-mcp": {
      "command": "node",
      "args": ["C:/path/to/todo-mcp/index.js"],
      "env": {
        "TODO_MCP_CLIENT_ID": "<your-client-id>",
        "TODO_MCP_MASTER_KEY": "<random-base64-key>"
      }
    }
  }
}

生成安全主密钥(PowerShell):

[System.Convert]::ToBase64String([System.Security.Cryptography.RandomNumberGenerator]::GetBytes(32))

或者在macOS/Linux上:

openssl rand -base64 32

选项B--VS代码(.vscode/mcp.json)

包括 .vscode/mcp.json 首次使用时安全提示输入主密钥。集 TODO_MCP_CLIENT_ID 在您的环境中或将其添加到 env 块。

4.验证帐户

服务器运行后,使用 authenticate_account 您的AI助手提供的工具。它立即返回设备代码URL:

authenticate_account(account="work", tenant_id="<your-org-tenant-id>")
authenticate_account(account="personal", tenant_id="consumers")

转到显示的URL,输入代码,然后登录。令牌将自动保存在后台。

对于 个人Microsoft帐户 (Outlook、Hotmail、Live),始终通过 tenant_id="consumers".
对于 工作/学校账户,传递您组织的租户ID(UUID),或 "organizations" 接受任何。

环境变量

变量 必填 描述
TODO_MCP_MASTER_KEY 是 用于加密存储的刷新令牌的Base64密钥
TODO_MCP_CLIENT_ID 是* Azure应用程序客户端ID(*或硬编码 auth.js)
TODO_MCP_TENANT_ID 否 默认租户ID(默认为 "common")
TODO_MCP_DEFAULT_ACCOUNT 否 默认帐户别名(默认为 "default")
TODO_MCP_CONFIG_PATH 否 覆盖配置文件的路径(默认为 ~/.todo-mcp-config.json)

可用工具

工具 说明
list_accounts 列出所有存储的帐户别名
authenticate_account 为新帐户或现有帐户启动设备代码身份验证
set_default_account 更改未指定帐户时使用的帐户
delete_account 删除已存储的帐户
list_todo_lists 列出帐户的所有任务列表
get_tasks 从特定列表中获取任务(可按状态筛选)
get_all_pending_tasks 获取每个列表中所有未完成的任务
create_task 创建一个包含可选截止日期、重要性和正文的任务
update_task 更新任务的标题、截止日期、重要性或正文
complete_task 将任务标记为已完成
delete_task 删除任务

所有数据工具都接受可选 account 参数以针对特定别名。如果省略,则使用默认帐户。

令牌存储

刷新令牌存储在 ~/.todo-mcp-config.json 使用AES-256-GCM加密,密钥来自 TODO_MCP_MASTER_KEY。文件是用mode创建的 0600 (仅限所有者读/写)。 永远不要提交此文件。