mcpField
M
Microsoft Planner

Microsoft Planner

本地服务
github.com生产力48 周前更新

关于 Microsoft Planner

Microsoft Planner 是通过 Microsoft Graph 管理计划、分区和任务的 MCP 服务,支持应用或委托用户身份访问,并在更新和删除时自动处理 Planner ETag。

主要功能

  1. 01查找组、用户、计划和分区
  2. 02列出并管理任务与清单
  3. 03分配用户并跟踪任务进度
  4. 04更新和删除时处理 ETag

适用场景

  1. 01查看计划或指定用户的任务
  2. 02创建和更新团队任务
  3. 03完成或删除过期任务

MCP 相关

通过 Microsoft Graph 向 MCP 客户端提供 Microsoft Planner 操作工具。可选高级工具提供范围受限、只读的 Graph 访问,仅限 planner、groups 和 users 路径。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"selic-mcp-planner": {
"command": "npx",
"args": [
"-y",
"mcp-planner"
],
"env": {
"MS_TENANT_ID": "<MS_TENANT_ID>",
"MS_CLIENT_ID": "<MS_CLIENT_ID>",
"MS_CLIENT_SECRET": "<MS_CLIENT_SECRET>",
"PLANNER_ADVANCED_TOOLSET": "<PLANNER_ADVANCED_TOOLSET>"
}
}
}
}
启动命令npx -y mcp-planner
需要配置的环境变量
MS_TENANT_IDMicrosoft Entra ID tenant id (GUID or domain)
MS_CLIENT_IDEntra app registration client id
MS_CLIENT_SECRET密钥Entra app registration client secret (app needs Tasks.ReadWrite.All, GroupMember.Read.All, User.Read.All application permissions)
PLANNER_ADVANCED_TOOLSETtrue/1 registers the advanced toolset (graph_get, graph_find_endpoint) — a read-only escape hatch limited to /planner, /groups, /users

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-planner0.2.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

mcp-planner

通过 Microsoft Graph API 使用 Microsoft Planner 的 MCP 服务。查找组和计划、列出存储桶和任务,以及创建、更新、分配、完成或删除任务——包括描述和清单,并自动处理 Planner 的 ETag 并发控制。

与 mcp-itglue 和 mcp-connectwise-psa 是同系列项目——采用相同的架构。

工具

工具描述
planner_search_groups按名称查找 Microsoft 365 组(Teams)→ 组 ID
planner_find_user按名称/UPN 查找用户 → 用于分配的用户 ID
planner_list_plans列出某个组拥有的计划
planner_get_plan计划及其存储桶
planner_create_bucket在计划中创建存储桶
planner_list_tasks列出计划或存储桶中的任务(按受分配者、未完成/已完成筛选)
planner_list_user_tasks列出分配给某个用户的所有任务,涵盖多个计划
planner_get_task获取任务及其描述和清单
planner_create_task创建任务(存储桶、截止日期、优先级、受分配者、描述)
planner_update_task更新标题/存储桶/截止日期/优先级/进度/受分配者
planner_update_task_details更新描述;添加清单项或勾选/取消勾选清单项
planner_delete_task永久删除任务
graph_find_endpoint †搜索精心整理的 /planner、/groups、/users Graph 接口目录
graph_get †对 /planner、/groups、/users 下的任意 Graph v1.0 路径执行只读 GET

† 高级工具集(选择启用,默认关闭)——用于访问精心整理的工具未封装的 Graph 接口。设置 PLANNER_ADVANCED_TOOLSET=true 或使用 --advanced 启用。graph_get 仅允许 GET,拒绝 /beta,且只能访问上述三个路径前缀,因此共享应用注册的其他权限(例如邮件)仍无法使用。

设置

1. Entra ID 应用注册
  1. Entra 管理中心 → 应用注册 → 新注册
  2. API 权限 → 应用程序权限 → 添加 Tasks.ReadWrite.All、GroupMember.Read.All、User.Read.All → 授予管理员同意
  3. 证书和密码 → 新客户端密码 — 记下其值
2. 运行
MS_TENANT_ID=<tenant> MS_CLIENT_ID=<client-id> MS_CLIENT_SECRET=<secret> npx -y mcp-planner

Claude Code:

claude mcp add planner --env MS_TENANT_ID=<tenant> --env MS_CLIENT_ID=<client-id> --env MS_CLIENT_SECRET=<secret> -- npx -y mcp-planner
HTTP 模式
npx -y mcp-planner --transport http --port 3000

每个会话都通过请求进行身份验证(BYOK),需要提供 x-ms-tenant-id 和 x-ms-client-id,以及 以下二者之一:x-ms-client-secret(仅应用)或 x-ms-refresh-token(委托模式——见下文);如果未设置这些请求头,则回退到 MS_* 环境凭据。如果同时提供密码和刷新令牌,则以刷新令牌为准(请求头覆盖代理可以添加请求头,但无法移除请求头)。健康探测地址为 GET /health。

委托模式 — 以已登录用户的身份操作

仅应用会话以应用注册的身份操作;委托会话则以用户身份操作:适用该用户的 Planner 权限,且每次写入都会归属到该用户。

  1. 使用单独的公共应用注册:身份验证 → 允许公共客户端流 → 是;API 权限 → 委托权限 Tasks.ReadWrite、Group.Read.All、User.ReadBasic.All(+ 在租户要求时授予管理员同意)。
  2. 每位用户通过设备代码助手登录一次,并妥善保存输出的刷新令牌:
node scripts/device-login.mjs --tenant <tenant-id> --client <public-client-id>
  1. 使用 MS_REFRESH_TOKEN 替代 MS_CLIENT_SECRET(stdio),或使用 x-ms-refresh-token 请求头(HTTP)。在 MCP 网关后方,将其注册为个人凭据(字段 x-ms-refresh-token)。

刷新令牌是机密信息——它能以你的身份操作——自上次使用起约 90 天内有效;过期后请重新运行助手。

Docker
docker build -t mcp-planner .
docker run -p 3000:3000 -e MS_TENANT_ID=... -e MS_CLIENT_ID=... -e MS_CLIENT_SECRET=... mcp-planner

访问模型

MCP 层不进行角色限制:Entra 应用注册获授的 Graph 权限就是访问控制。通过 BYOK 请求头让会话指向不同的应用注册,从而限定其可执行的操作。

备注

  • Planner 要求每次更新或删除时都提供 If-Match ETag — 工具会获取当前资源并自动传递其 ETag。如果遇到 412(并发更改),只需重试。
  • 优先级映射:urgent=1,important=3,medium=5,low=9(Graph 使用 0–10)。
  • 进度:未开始(0),进行中(50),已完成(100)。

开发

npm install
npm run dev        # stdio
npm run dev:http   # http
npm test
npm run build
npm run bundle     # Claude Desktop .mcpb

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。