微软做MCP——自托管
自托管 模型上下文协议 Microsoft待办事项的服务器。这解决的关键问题是: Microsoft Graph API在个人帐户上静默地省略用户创建的列表 (GET /me/todo/lists 只返回众所周知的列表,如“标记的电子邮件”)。此服务器使用本地SQLite注册表来解决此问题,该注册表跟踪您创建的每个列表,因此您的列表始终显示出来。
在您自己的VPS上运行它,通过HTTPS公开它,并从任何机器连接任何兼容MCP的AI客户端(Claude Code、Cursor、Claude Desktop)。
______________________________________________________________________
此修复的问题
Microsoft的Graph API对个人Microsoft帐户(outlook.com、hotmail.com、live.com、Gmail链接帐户等)有限制:
POST /me/todo/lists--工作,创建列表,返回ID✅GET /me/todo/lists--只返回内置列表,如“标记的电子邮件”,默默地删除您创建的所有内容❌
这意味着任何完全依赖API列出的MCP服务器将永远不会显示您的自定义列表。此仓库通过维护本地SQLite数据库来修复它(lists.db)持久化通过服务器创建的每个列表,然后将其与API响应合并,这样就不会丢失任何内容。
______________________________________________________________________
运作原理
Your laptop / any machine
│
│ claude mcp add --transport http ...
▼
https://todo-mcp.yourdomain.com
│
├── / → Dashboard (connection status + quick-add commands)
├── /auth → Start Microsoft OAuth
├── /callback → OAuth callback (saves tokens)
├── /health → Health check
└── /mcp → MCP endpoint (API key protected)您可以通过仪表板进行一次身份验证。令牌存储在您的服务器上并自动刷新。您的API密钥保护MCP端点,因此只有您的机器才能使用它。
______________________________________________________________________
特性
- 修复个人帐户列表限制 --SQLite注册表确保您的所有列表始终可见
- HTTP传输 --从任何机器连接,而不仅仅是本地主机
- 仪表盘 --web UI,用于连接您的Microsoft帐户并获取Claude Code、Cursor和Claude Desktop的复制粘贴设置命令
- API密钥验证 --保护
/mcp端点 - 仪表板密码 --仪表板上的HTTP基本身份验证,因此只有您可以访问它
- 自动令牌刷新 --令牌自动刷新,无需手动干预
- 15个MCP工具 --全面任务管理:列表、任务、检查表项
______________________________________________________________________
先决条件
- Node.js 18+
- 指向域名的服务器或VPS(DigitalOcean、Hetzner等)
- Microsoft帐户(个人或工作)
- Azure应用程序注册(见下文)
______________________________________________________________________
Azure应用程序注册
- 首选 portal.azure.com → 应用程序注册 → 新注册
- 命名(例如。
todo-mcp) - 支持的帐户类型: 个人Microsoft帐户 (
consumers)或 任何账户 (common) - 重定向URI:
https://todo-mcp.yourdomain.com/callback(网络) - 创建后,转到 证书和秘密 → 创建客户端机密,复制它
- 首选 API权限 → Add → 微软图形→ 委派:
- Tasks.Read, Tasks.ReadWrite, Tasks.Read.Shared, Tasks.ReadWrite.Shared, User.Read
- 点击 授予管理员同意
- 复制您的 应用程序(客户端)ID 从“概述”页面
______________________________________________________________________
设置
1.克隆并安装
git clone https://github.com/akkilesh-a/microsoft-todo-mcp-server.git
cd microsoft-todo-mcp-server
npm install
npm run build2.配置环境
cp .env.example .env编辑 .env:
CLIENT_ID=your_azure_app_client_id
CLIENT_SECRET=your_azure_app_client_secret
TENANT_ID=consumers
PORT=3001
PUBLIC_URL=https://todo-mcp.yourdomain.com
REDIRECT_URI=https://todo-mcp.yourdomain.com/callback
MCP_API_KEY=your_secret_api_key # openssl rand -hex 32
DASHBOARD_USERNAME=admin # username for dashboard login
DASHBOARD_PASSWORD=your_dashboard_pass # set this — protects /auth3.运行服务器
node dist/todo-index.js4.身份验证
打开 https://todo-mcp.yourdomain.com 在浏览器中,输入仪表板密码,然后单击 连接Microsoft帐户OAuth完成后,令牌将保存在服务器上。
5.连接您的AI客户端
仪表板显示准备复制命令。或手动:
克劳德代码:
claude mcp add --transport http mstodo https://todo-mcp.yourdomain.com/mcp \
--header "Authorization: Bearer your_api_key"光标 --添加到 ~/.cursor/mcp.json:
{
"mcpServers": {
"mstodo": {
"url": "https://todo-mcp.yourdomain.com/mcp",
"headers": { "Authorization": "Bearer your_api_key" }
}
}
}克劳德桌面版 --添加到 claude_desktop_config.json:
{
"mcpServers": {
"mstodo": {
"url": "https://todo-mcp.yourdomain.com/mcp",
"headers": { "Authorization": "Bearer your_api_key" }
}
}
}______________________________________________________________________
安全
| 层 | 保护 |
|---|---|
/mcp | MCP_API_KEY --每个MCP请求都需要 |
仪表板 /, /auth, /callback | DASHBOARD_USERNAME + DASHBOARD_PASSWORD --HTTP基本身份验证 |
始终设置 DASHBOARD_PASSWORD没有它,任何知道你的URL的人都可以访问仪表板并触发覆盖你的令牌的OAuth流。 DASHBOARD_USERNAME 默认为 admin.
______________________________________________________________________
MCP工具
任务列表
| 工具 | 说明 |
|---|---|
get-task-lists | 列出所有任务列表(API+本地SQLite注册表) |
create-task-list | 创建新列表 |
update-task-list | 重命名列表 |
delete-task-list | 删除列表及其所有任务 |
任务
| 工具 | 说明 |
|---|---|
get-tasks | 通过过滤、排序和分页来获取任务 |
create-task | 创建任务(标题、正文、截止日期、重要性) |
update-task | 更新任何任务属性 |
delete-task | 删除任务 |
检查表项目
| 工具 | 说明 |
|---|---|
get-checklist-items | 获取任务的子任务 |
create-checklist-item | 添加子任务 |
update-checklist-item | 更新子任务文本或完成 |
delete-checklist-item | 删除子任务 |
其他
| 工具 | 说明 |
|---|---|
auth-status | 检查令牌状态和到期时间 |
archive-completed-tasks | 将所有已完成的任务归档到列表中 |
get-task-lists-organized | 列表的分组/分类视图 |
______________________________________________________________________
许可证
麻省理工学院——见 许可证
