Planner任务管理服务

一个基于Node.js的MCP服务器,通过Microsoft Graph API与Microsoft Planner集成,提供任务列表、创建、更新、完成和删除等功能。

  • by l-mendes
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 l-mendes/microsoft-planner-mcp

使用说明

Microsoft计划器MCP

一个小型Node.js MCP服务器,使用Microsoft Graph API与Microsoft Planner集成。

特性

工具 说明
list_groups 列出有Planner计划的Microsoft 365组(团队)。用它来发现 groupId 需要用于 list_plans.
list_plans 列出Microsoft 365组(团队)的所有Planner计划。
list_buckets 列出Planner计划中的所有桶。
list_tasks 列出Planner计划中的所有任务。
get_task 通过特定Planner任务的ID获取其详细信息(包括任务详细信息/描述)。
create_task 创建一个新的计划任务,包括标题、日期、优先级、工作分配和类别。
update_task 更新现有的Planner任务(标题、日期、进度、优先级、存储桶、分配)及其详细信息。
complete_task 将Planner任务标记为已完成(集 percentComplete 到100)。
list_categories 列出Planner计划中定义的类别标签(彩色标签)。
delete_task 永久删除Planner任务。
list_users 列出Microsoft 365目录中的用户(有助于发现分配的用户ID)。

先决条件

  1. 一 Azure应用程序注册 在Microsoft Graph中具有以下应用程序权限:
    • Group.Read.All
    • Tasks.ReadWrite.All
    • User.Read.All
  2. A. 客户端密钥 为应用程序注册生成。
  3. Node.js 18或更新版本。

设置

  1. 安装依赖项:
npm install
  1. 复制和编辑环境文件:
cp .env.example .env

将这些环境变量填入 .env:

CLIENT_ID=<App Registration Client ID>
TENANT_ID=<Azure AD Tenant ID>
CLIENT_SECRET=<Client Secret>
# Optional defaults used by some tools
GROUP_ID=<optional default group id>
PLAN_ID=<optional default plan id>
  1. 构建项目:
npm run build

用法

将服务器作为MCP stdio服务器运行。示例 mcp.json 条目:

{
  "servers": {
    "planner": {
      "command": "node",
      "args": ["/absolute/path/to/planner-mcp-server/dist/index.js"],
      "env": {
        "CLIENT_ID": "...",
        "TENANT_ID": "...",
        "CLIENT_SECRET": "...",
        "GROUP_ID": "...", // optional default group id for tools that require it
        "PLAN_ID": "..." // optional default plan id for tools that require it
      }
    }
  }
}

对于本地开发,您可以运行:

npm run dev

测试

测试是用 Vitest 并住在 src/__tests__/.

文件 覆盖范围
utils.test.ts ok / err 响应助手
planner-service.test.ts PlannerService --对模拟Graph客户端的所有CRUD操作
graph-client.test.ts createGraphClient --环境验证和客户端初始化

运行测试套件:

# Run once
npm test

# Watch mode (re-runs on file changes)
npm run test:watch

# With coverage report
npm run test:coverage

运行测试不需要真正的Azure凭据——Microsoft Graph客户端完全被模拟了。

项目结构

src/
  graph-client.ts    # Creates an authenticated Microsoft Graph client
  planner-service.ts # Service implementing Planner CRUD operations
  utils.ts           # Response helpers (ok / err)
  index.ts           # Entry point — registers tools and starts the MCP server
  __tests__/
    utils.test.ts            # Unit tests for response helpers
    planner-service.test.ts  # Unit tests for PlannerService
    graph-client.test.ts     # Unit tests for createGraphClient and auth setup

示例提示

  • “列出abc123组中的计划”
  • “在计划xyz456中创建一个具有紧急优先级且应于2025-04-01到期的任务‘审查文件’”
  • “将任务任务789标记为已完成”
  • 将任务task789的描述更新为“文档已审核和批准”