mcpField
M
Microsoft Planner

Microsoft Planner

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

关于 Microsoft Planner

Microsoft Planner MCP 服务通过 Microsoft Graph 管理计划、分组和任务,适用于需要借助 Agent 查询或维护 Planner 工作的团队。它自动处理更新和删除操作所需的 ETag,并提供可选的高级 Graph 查询工具。

主要功能

  1. 01查找 Microsoft 365 分组和用户
  2. 02查看计划、任务与清单
  3. 03创建和管理任务及分桶
  4. 04分配任务并更新进度
  5. 05自动处理 ETag 并发控制
  6. 06可选的受限 Graph GET 工具

适用场景

  1. 01查找用户并分配 Planner 任务
  2. 02查看个人跨计划任务
  3. 03更新任务说明和清单状态
  4. 04检索 Planner、分组或用户 Graph 数据

MCP 相关

该 MCP 服务将 Microsoft Planner 操作封装为工具,供 MCP 客户端通过 Microsoft Graph 调用。支持 stdio 与 HTTP 传输,并可选择启用受限的只读 Graph 工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"mspstack-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.4.0

工具

14

收录的工具列表 · 更新于 2 周前

参数类型必填说明
response_formatenum否输出格式:人类可读的 Markdown(默认)或结构化 JSONmarkdown | json

详细介绍

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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。