Skip to main content
Glama

Planner MCP Server

A Model Context Protocol (MCP) server that enables Claude to interact with Microsoft Planner through the Microsoft Graph API.

Features

  • Authentication: OAuth 2.0 device code flow for secure authentication

  • Plans Management: List and view Planner plans

  • Buckets Management: List, create, and manage buckets within plans

  • Tasks Management: Create, update, delete, and view tasks

  • Checklists: Add, update, and remove checklist items on tasks

  • Token Persistence: Stores access tokens across server restarts

Related MCP server: Office MCP Server

Prerequisites

  • Node.js 18+ or newer

  • npm or yarn

  • Microsoft account with access to Planner

Installation

  1. Clone or download this repository

  2. Install dependencies:

cd planner-mcp
npm install
  1. Build the project:

npm run build

Authentication

Before using the Planner tools, you need to authenticate:

  1. Start the authentication flow by calling the auth_start tool

  2. Visit the displayed verification URL

  3. Enter the provided code

  4. Sign in with your Microsoft account

  5. Use the auth_poll tool to check if authentication is complete

The access token will be saved locally and reused for future sessions.

Configuration

claude mcp add --transport stdio planner node /path/to/planner-mcp/build/index.js

Option 2: Manual Configuration

Add this server to your Claude Desktop configuration file:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "planner": {
      "command": "node",
      "args": ["/path/to/planner-mcp/build/index.js"]
    }
  }
}

Note: Replace /path/to/planner-mcp/build/index.js with the actual path to your cloned repository.

Available Tools

Authentication Tools

  • auth_start: Start the Planner authentication flow (device code)

  • auth_poll: Check if authentication is complete

Plan Tools

  • list_plans: List all Microsoft Planner plans for the current user

  • get_plan: Get detailed information about a specific plan

Bucket Tools

  • list_buckets: List all buckets in a plan

  • create_bucket: Create a new bucket in a plan

Task Tools

  • list_tasks: List tasks in a plan or bucket with filtering options (priority, due date, status, etc.)

  • get_task: Get detailed information about a specific task

  • create_task: Create a new task in a bucket with title, description, priority, and due date

  • update_task: Update an existing task (title, description, priority, bucket, due date, checklist, etc.)

  • delete_task: Delete a task

Checklist parameter (on create_task and update_task): pass checklist as an object keyed by item ID, same style as assignments:

  • To add an item, use any unique string as the key with {"title": "...", "isChecked": false}

  • To update an item, use its existing item ID (from get_task/list_tasks with includeDetails: true) with just the fields to change

  • To remove an item, set its ID's value to null

Example:

{
  "taskId": "your-task-id",
  "checklist": {
    "buy-milk": { "title": "Buy milk", "isChecked": false },
    "existing-item-id-from-get-task": { "isChecked": true },
    "item-id-to-remove": null
  }
}

Checklist items are visible on any task fetched via get_task or list_tasks with includeDetails: true (under details.checklist, keyed by item ID).

Priority Levels:

  • 1 = Urgent (highest priority)

  • 3 = Important (high priority)

  • 5 = Medium (normal priority)

  • 9 = Low (lowest priority)

Required Permissions

The Microsoft Graph API requires the following permissions for Planner:

  • Group.Read.All - To list plans and buckets

  • Tasks.ReadWrite - To read, create, update, and delete tasks

Example Workflows

Create a new task

  1. List plans: list_plans

  2. List buckets in a plan: list_buckets with the plan ID

  3. Create a task: create_task with plan ID, bucket ID, title, and priority (1=urgent, 3=important, 5=medium, 9=low)

Example:

{
  "planId": "your-plan-id",
  "bucketId": "your-bucket-id",
  "title": "Complete project proposal",
  "description": "Write and submit the Q1 project proposal",
  "priority": 1,
  "dueDateTime": "2026-03-30T17:00:00Z"
}

Move a task to another bucket

  1. Get task details: get_task

  2. Update task: update_task with the new bucket ID

Filter tasks by priority

  1. List tasks with priority filter: list_tasks with plan ID and priority parameter

Example:

{
  "planId": "your-plan-id",
  "priority": 1
}

This will show only urgent tasks (priority 1).

Update task due date

  1. Get task details: get_task

  2. Update task: update_task with the new due date in ISO 8601 format (e.g., "2025-12-31T23:59:59Z")

Troubleshooting

Authentication Issues

If authentication fails, try these steps:

  1. Delete the .access-token.txt file

  2. Call auth_start again

  3. Make sure you're using a Microsoft account that has access to Planner

"Not authenticated" Error

If you get a "Not authenticated" error:

  1. Make sure you've completed the authentication flow

  2. Check that the .access-token.txt file exists and contains a valid token

  3. If the token has expired, run auth_start again

Permission Errors

If you get permission errors:

  • Make sure your Microsoft account has access to the specified plan

  • Check that the required permissions are granted in your Azure AD app

Development

Build

npm run build

Watch mode

npm run watch

Start server

npm start

License

ISC

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

Available Tools

14 tools
auth_pollA

Check if the authentication is complete. Only call this after auth_start returned a verification URL and the user has completed sign-in on the Microsoft website. Do NOT call this unless you just ran auth_start and it returned a code/URL for the user to visit.

Inputs: no named parameters.

auth_startA

Start the Planner authentication flow. IMPORTANT: Only call this tool when you receive an authentication error (e.g. 'Not authenticated') from another tool, or when the user explicitly requests re-authentication. Do NOT call this proactively before using other Planner tools - they automatically use the stored token. If a valid token already exists, this returns immediately without starting a new auth flow.

Inputs: force, clientId, tenantId.

create_bucketC

Create a new bucket in a plan

Inputs: name (required), planId (required).

create_taskC

Create a new task in a bucket

Inputs: title (required), planId (required), bucketId (required), priority, +6 more.

delete_taskB

Delete a task

Inputs: taskId (required).

get_meA

Get the current signed-in user's profile (id, displayName, mail, etc.)

Inputs: select.

get_planC

Get detailed information about a specific plan

Inputs: planId (required).

get_plan_detailsC

Get detailed information about a plan including category descriptions (labels)

Inputs: planId (required).

get_taskB

Get detailed information about a specific task

Inputs: taskId (required), includeDetails.

list_bucketsC

List all buckets in a plan

Inputs: planId (required).

list_group_membersB

List all members of a Microsoft 365 group (users, contacts, devices, service principals, and other groups)

Inputs: groupId (required), top, filter, search, +1 more.

list_plansA

List all Microsoft Planner plans for the current user

Inputs: no named parameters.

list_tasksA

List tasks in a plan or bucket with advanced filtering

Inputs: skip, limit, fields, planId, +16 more.

update_taskC

Update an existing task

Inputs: taskId (required), title, bucketId, priority, +6 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 14 tools

    Disambiguation4/5

    Tools are generally distinct with clear purposes. There is slight overlap between get_plan and get_plan_details, but the latter includes category descriptions, reducing ambiguity. Other tools cover different resources (auth, user, plans, buckets, tasks) with no major confusion.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern using underscores (e.g., create_task, list_buckets, get_plan). Auth tools use a verb_noun structure as well (auth_poll, auth_start). No mixing of conventions like camelCase.

    Tool Count5/5

    14 tools cover the core functionality of a Planner server, including authentication, plans, buckets, tasks, user info, and group members. The count is well-scoped—not too many to overwhelm, yet sufficient for common operations.

    Completeness3/5

    Task CRUD is complete (create, read, update, delete), but bucket and plan operations are incomplete: missing create_plan, delete_plan, update_bucket, delete_bucket. No task assignment tool. These gaps may hinder some workflows.

    Related MCP Connectors

    Related MCP Servers