微软做MCP
 ](https://www.npmjs.com/package/microsoft-todo-mcp-server)
模型上下文协议(MCP)服务器,使Claude和Cursor等人工智能助手能够通过Microsoft Graph API与Microsoft to Do交互。此服务通过安全的OAuth 2.0身份验证流程提供全面的任务管理功能。
特性
- 15个MCP工具:完整的任务管理功能,包括列表、任务、检查表项和组织特征
- 无缝身份验证:自动令牌刷新,无需手动干预
- OAuth 2.0身份验证:通过自动令牌刷新进行安全身份验证
- Microsoft Graph API集成:与微软官方API直接集成
- 多租户支持:适用于个人、工作和学校Microsoft帐户
- TypeScript:完全打字,可靠性和开发人员体验
- ESM模块:现代JavaScript模块系统
先决条件
- Node.js 16或更高版本(使用Node.js 18.x、20.x和22.x进行测试)
- pnpm包管理器
- Microsoft帐户(个人、工作或学校)
- Azure应用程序注册(请参阅下面的设置)
安装
选项1:全局安装(推荐)
# Install globally using npm
npm install -g microsoft-todo-mcp-server
# Or using pnpm
pnpm install -g microsoft-todo-mcp-server
# Or run directly with npx (no installation)
npx microsoft-todo-mcp-server该包提供了三个命令别名:
microsoft-todo-mcp-server-完整包名称mstodo-MCP服务器的短别名mstodo-config-配置辅助工具
选项2:克隆并在本地运行
git clone https://github.com/jordanburke/microsoft-todo-mcp-server.git
cd microsoft-todo-mcp-server
pnpm install
pnpm run buildAzure应用程序注册
- 转到 Azure门户
- 导航到“应用程序注册”并创建新注册
- 命名您的应用程序(例如,“待办事项MCP”)
- 对于“支持的帐户类型”,请根据您的需求选择以下选项之一:
- 仅此组织目录中的帐户(单租户) -用于单个组织内 - 任何组织目录中的帐户(任何Azure AD目录-多租户) -适用于多个组织 - 任何组织目录中的帐户和个人Microsoft帐户 -适用于工作账户和个人账户
- 将重定向URI设置为
http://localhost:3000/callback - 创建应用程序后,转到“证书和机密”并创建新的客户端机密
- 转到“API权限”并添加以下权限:
- Microsoft Graph>委派权限: - 任务。阅读 - 任务。读写 - 用户。阅读
- 点击“授予管理员同意”以获取这些权限
配置
环境设置
创建一个 .env 项目根目录中的文件(身份验证所需):
CLIENT_ID=your_client_id
CLIENT_SECRET=your_client_secret
TENANT_ID=your_tenant_setting
REDIRECT_URI=http://localhost:3000/callbackTENANT_ID选项
organizations-对于多租户组织帐户(如果未指定,则默认)consumers-仅适用于个人Microsoft帐户common-适用于组织账户和个人账户your-specific-tenant-id-对于单租户配置
示例:
# For multi-tenant organizational accounts (default)
TENANT_ID=organizations
# For personal Microsoft accounts
TENANT_ID=consumers
# For both organizational and personal accounts
TENANT_ID=common
# For a specific organization tenant
TENANT_ID=00000000-0000-0000-0000-000000000000令牌存储
服务器将身份验证令牌存储在 tokens.json 在到期前5分钟自动刷新。您可以覆盖令牌文件位置:
# Using environment variable
export MSTODO_TOKEN_FILE=/path/to/custom/tokens.json
# Or pass tokens directly
export MS_TODO_ACCESS_TOKEN=your_access_token
export MS_TODO_REFRESH_TOKEN=your_refresh_token用法
完成安装工作流程
步骤1:使用Microsoft进行身份验证
# If installed globally
git clone https://github.com/jordanburke/microsoft-todo-mcp-server.git
cd microsoft-todo-mcp-server
pnpm install
pnpm run auth
# Or if running locally
pnpm run auth这将打开一个用于Microsoft身份验证的浏览器窗口,并创建一个 tokens.json 文件。
步骤2:创建MCP配置
# Generate MCP configuration file
pnpm run create-config
# Or use the global helper (if installed globally)
mstodo-config这创建了一个 mcp.json 使用您的身份验证令牌创建文件。
步骤3:配置您的AI助手
对于Claude Desktop:
添加到配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.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"
}
}
}
}对于光标:
# Copy to Cursor's global configuration
cp mcp.json ~/.cursor/mcp-servers.json可用脚本
# Development & Building
pnpm run build # Build TypeScript to JavaScript
pnpm run dev # Build and run CLI in one command
# Running the Server
pnpm start # Run MCP server directly
pnpm run cli # Run MCP server via CLI wrapper
npx microsoft-todo-mcp-server # Run globally installed version
# Authentication & Configuration
pnpm run auth # Start OAuth authentication server
pnpm run create-config # Generate mcp.json from tokens.json
# Code Quality
pnpm run format # Format code with Prettier
pnpm run format:check # Check code formatting
pnpm run lint # Run linting checks
pnpm run typecheck # TypeScript type checkingMCP工具
该服务器为全面的Microsoft待办事项管理提供了13个工具:
认证
auth-status-检查身份验证状态、令牌过期和帐户类型
任务列表(顶级容器)
get-task-lists-使用元数据检索所有任务列表(默认、共享等)create-task-list-创建新任务列表update-task-list-重命名现有任务列表delete-task-list-删除任务列表及其所有内容
任务(主要待办事项)
get-tasks-通过筛选、排序和分页从列表中获取任务
- 支持OData查询参数: $filter, $select, $orderby, $top, $skip, $count
create-task-创建具有完整属性支持的新任务
- 标题、描述、截止日期、开始日期、重要性、提醒、状态、类别
update-task-更新任何任务属性delete-task-删除任务及其所有清单项
检查表项目(子任务)
get-checklist-items-获取特定任务的子任务create-checklist-item-向任务中添加新的子任务update-checklist-item-更新子任务文本或完成状态delete-checklist-item-删除特定子任务
建筑
项目结构
- MCP服务器 (
src/todo-index.ts)-实现MCP协议的核心服务器 - CLI包装器 (
src/cli.ts)-具有令牌管理的可执行入口点 - 身份验证服务器 (
src/auth-server.ts)-OAuth 2.0流的Express服务器 - 配置生成器 (
src/create-mcp-config.ts)-帮助创建MCP配置
技术细节
- Microsoft Graph API:使用v1.0端点
- 认证:带有PKCE流的SOAP(Microsoft身份验证库)
- 许可证管理:过期前5分钟自动刷新
- 构建系统:tsup用于快速编译TypeScript
- 模块系统:ESM(ECMAScript模块)
限制和已知问题
个人Microsoft帐户
- MailboxNotEnabledForRESTAPI错误:个人Microsoft帐户(outlook.com、hotmail.com、live.com)通过Microsoft Graph访问待办事项API的权限有限
- 这是Microsoft的服务限制,不是此应用程序的问题
- 工作/学校账户可完全访问API
API限制
- 根据Microsoft的政策,适用费率限制
- 某些功能可能不适用于个人帐户
- 共享列表的功能有限
故障排除
身份验证问题
令牌获取失败
- 验证
CLIENT_ID,CLIENT_SECRET,以及TENANT_ID在你的.env文件 - 确保重定向URI完全匹配:
http://localhost:3000/callback - 检查Azure应用程序权限是否已获得管理员同意
权限问题
- 确保添加并同意所有必需的Graph API权限
- 对于组织帐户,可能需要管理员同意
帐户类型配置
工作/学校账户
TENANT_ID=organizations # Multi-tenant
# Or use your specific tenant ID个人账户
TENANT_ID=consumers # Personal only
# Or TENANT_ID=common for both types调试
检查身份验证状态:
# Using the MCP tool
# In your AI assistant: "Check auth status"
# Or examine tokens directly
cat tokens.json | jq '.expiresAt'
# Convert timestamp to readable date
date -d @$(($(cat tokens.json | jq -r '.expiresAt') / 1000))启用详细日志记录:
# The server logs to stderr for debugging
mstodo 2> debug.log贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 跑
pnpm run lint和pnpm run typecheck提交前 - 提交拉取请求
许可证
MIT许可证-请参阅 许可证 详细信息文件
致谢
支持
-
