这是一个模型上下文协议(MCP)服务器,它使AI助手如Claude和Cursor能够通过Microsoft Graph API与Microsoft To Do进行交互。该服务通过安全的OAuth 2.0认证流程提供了全面的任务管理功能。
# 使用npm全局安装
npm install -g microsoft-todo-mcp-server
# 或使用pnpm
pnpm install -g microsoft-todo-mcp-server
# 或直接使用npx运行(无需安装)
npx microsoft-todo-mcp-server
该包提供三个命令别名:
microsoft-todo-mcp-server - 完整包名mstodo - MCP服务器的短别名mstodo-config - 配置辅助工具git clone https://github.com/jordanburke/microsoft-todo-mcp-server.git
cd microsoft-todo-mcp-server
pnpm install
pnpm run build
http://localhost:3000/callback在项目根目录创建一个.env文件(用于认证):
CLIENT_ID=your_client_id
CLIENT_SECRET=your_client_secret
TENANT_ID=your_tenant_setting
REDIRECT_URI=http://localhost:3000/callback
organizations - 用于多租户组织账户(未指定时默认)consumers - 仅用于个人Microsoft账户common - 用于组织和个人账户your-specific-tenant-id - 用于单租户配置示例:
# 用于多租户组织账户(默认)
TENANT_ID=organizations
# 用于个人Microsoft账户
TENANT_ID=consumers
# 用于组织和个人账户
TENANT_ID=common
# 用于特定组织租户
TENANT_ID=00000000-0000-0000-0000-000000000000
服务器将认证令牌存储在tokens.json中,并在过期前5分钟自动刷新。你可以覆盖令牌文件的位置:
# 使用环境变量
export MSTODO_TOKEN_FILE=/path/to/custom/tokens.json
# 或直接传递令牌
export MS_TODO_ACCESS_TOKEN=your_access_token
export MS_TODO_REFRESH_TOKEN=your_refresh_token
# 如果全局安装
git clone https://github.com/jordanburke/microsoft-todo-mcp-server.git
cd microsoft-todo-mcp-server
pnpm install
pnpm run auth
# 或如果本地运行
pnpm run auth
这将打开浏览器窗口进行Microsoft认证,并创建一个tokens.json文件。
# 生成MCP配置文件
pnpm run create-config
# 或使用全局辅助工具(如果全局安装)
mstodo-config
这将创建一个包含你的认证令牌的mcp.json文件。
对于Claude桌面:
添加到你的配置文件:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json{
"mcpServers": {
"microsoftTodo": {
"command": "npx",
"args": ["--yes", "microsoft-todo-mcp-server"],
"env": {
"MS_TODO_ACCESS_TOKEN": "your_access_token",
"MS_TODO_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}
对于Cursor:
# 复制到Cursor的全局配置
cp mcp.json ~/.cursor/mcp-servers.json
# 开发与构建
pnpm run build # 将TypeScript编译成JavaScript
pnpm run dev # 构建并运行CLI命令
# 运行服务器
pnpm start # 直接运行MCP服务器
pnpm run cli # 通过CLI包装器运行MCP服务器
npx microsoft-todo-mcp-server # 运行全局安装的版本
# 认证与配置
pnpm run auth # 启动OAuth认证服务器
pnpm run create-config # 根据tokens.json生成mcp.json
# 代码质量
pnpm run format # 使用Prettier格式化代码
pnpm run format:check # 检查代码格式
pnpm run lint # 运行代码检查
pnpm run typecheck # TypeScript类型检查
服务器提供了13个工具,用于全面管理Microsoft To Do:
auth-status - 检查认证状态、令牌过期时间和账户类型get-task-lists - 获取所有任务列表及其元数据(默认、共享等)create-task-list - 创建新的任务列表update-task-list - 重命名现有任务列表delete-task-list - 删除任务列表及其所有内容get-tasks - 从列表中获取任务,支持过滤、排序和分页
$filter,$select,$orderby,$top,$skip,$countcreate-task - 创建新的任务,支持所有属性
update-task - 更新任何任务属性delete-task - 删除任务及其所有检查项get-checklist-items - 获取特定任务的子任务create-checklist-item - 向任务添加新的子任务update-checklist-item - 更新子任务文本或完成状态delete-checklist-item - 移除特定子任务src/todo-index.ts) - 实现MCP协议的核心服务器src/cli.ts) - 具有令牌管理的可执行入口点src/auth-server.ts) - 用于OAuth 2.0流程的Express服务器src/create-mcp-config.ts) - 辅助创建MCP配置令牌获取失败
.env文件中的CLIENT_ID、CLIENT_SECRET和TENANT_IDhttp://localhost:3000/callback权限问题
工作/学校账户
TENANT_ID=organizations # 多租户
# 或使用你的特定租户ID
个人账户
TENANT_ID=consumers # 仅个人
# 或TENANT_ID=common用于两种类型
检查认证状态:
# 使用MCP工具
# 在你的AI助手:“检查认证状态”
# 或直接查看令牌
cat tokens.json | jq '.expiresAt'
# 将时间戳转换为可读日期
date -d @$(($(cat tokens.json | jq -r '.expiresAt') / 1000))
启用详细日志记录:
# 服务器将日志输出到stderr用于调试
mstodo 2> debug.log
欢迎贡献!请:
pnpm run lint和pnpm run typecheckMIT许可 - 查看LICENSE文件了解详情