planner-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@planner-mcplist tasks due this week in my Planner plans"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
m365-ui-mcp
m365-ui-mcp is the Microsoft 365 semantic UI MCP evolving from the hardened planner-mcp foundation. The control plane is backed by a private Playwright/Chromium browser worker and is being generalized in gated phases while preserving the existing Planner public contract.
Transition status
The GitHub repository identity is pestoura/m365-ui-mcp. Canonical Python/CLI namespaces are now m365_mcp, m365_browser_worker, m365-ui-mcp and m365-browser-worker; the Planner package/CLI surfaces remain compatibility interfaces while shared-core extraction continues.
The immutable pre-M365 Planner baseline is planner-pre-m365-0.1.0.
Related MCP server: hanzi-browse
Current release scope
The 0.1.0 compatibility contract is deliberately read-only:
17 MCP read tools, all existing
planner_*public names preserved;zero public mutation tools;
Microsoft Graph is not used as the functional backend;
browser capabilities are published only from attested UI evidence;
live browser automation fails closed when the required UIContract state is not attested;
Conditional Access, device-enrolment requirements and ambiguous authentication states are blockers, never bypassed;
MFA remains human-in-the-loop; credentials and authenticator approval are not automated.
The default runtime mode is mock. CI and isolated acceptance must never contact a real Microsoft 365 tenant.
Architecture
The runtime is split into two trust zones:
MCP control plane — FastMCP over Streamable HTTP, contracts, policy, state, redaction, metrics and semantic tool registration.
Private browser worker — FastAPI + Playwright/Chromium, isolated from direct MCP clients and restricted to typed semantic operations.
The M365 target architecture and transition backlog live under docs/m365-transition/. The immutable Planner architecture/specification remains under docs/ and continues to define the 0.1.0 compatibility baseline until migrated through the PLN-MIG-* parity gates.
Runtime configuration
Configuration is typed and fail-closed. M365_* is the canonical namespace. The equivalent PLANNER_* names remain bounded compatibility aliases with status DEPRECATED_ALIAS and planned removal at major version 2.0.0.
When canonical and legacy aliases are both present they must contain the same literal value. Divergent definitions fail with CONFIG_INVALID; error context contains variable names only and never their values. Credential-shaped variable names under either namespace — for example names containing TOKEN, PASSWORD, SECRET, API_KEY, COOKIE or PRIVATE_KEY — are rejected.
live mode requires an explicit worker URL and absolute state path through either canonical or legacy aliases. The existing default state location is intentionally unchanged during CORE-004; state-path migration is a separate controlled change.
Canonical variable | Legacy alias | Default | Notes |
|
|
|
|
|
|
| Control-plane bind host |
|
|
| Port 1–65535 |
|
|
| Required explicitly in |
|
|
| Required explicitly in |
|
|
| Positive, maximum 300 seconds |
|
|
| Cannot be disabled in |
|
|
| Must remain |
|
|
|
|
|
|
| Private worker bind host |
|
|
| Private worker bind port |
Readiness exposes only a sanitized configuration summary: host, worker URL and state path are emitted as [REDACTED]. Credentials, tokens, cookies and authentication material are not valid configuration fields.
Development
Requirements: Python 3.12+.
python -m pip install -e ".[dev]"
python -m compileall -q src tests scripts
ruff check .
mypy
pytest -q
python scripts/check_docs.pyCanonical entry points:
m365-ui-mcp
m365-browser-worker
m365-ui-mcp-healthcheckCompatibility entry points remain:
planner-mcp
planner-browser-worker
planner-mcp-healthcheckExisting planner_* MCP tool names are not coupled to repository/package naming and remain PRESERVE.
Container definitions are in docker/ and docker-compose.yml. Base images are digest-pinned and CI blocks HIGH/CRITICAL Trivy findings, validates two CycloneDX SBOMs, performs secret/dependency scanning and runs isolated acceptance.
Governance and release gates
A capability is not considered live-supported because code exists or a mock test passes. Promotion requires evidence and attestation. The current Planner baseline remains governed by:
Backlog keys P-001..P-074 and EPIC-01..EPIC-10 remain canonical in docs/backlog.md. The M365 transition uses the separate M365-SETUP-*, CORE-*, PLN-MIG-*, OUT-*, XAPP-* and REL-* namespaces in docs/m365-transition/roadmap-and-backlog.md.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceA browser automation server providing Playwright capabilities for controlling web browsers, capturing screenshots, extracting content, and performing complex interactions through an MCP interface.6Apache 2.0
- Alicense-qualityCmaintenanceMCP server providing browser automation for AI agents with context-aware playbooks and skills for complex websites.27175PolyForm Noncommercial 1.0.0
- Alicense-qualityBmaintenanceA self-hosted MCP server that exposes Microsoft Planner Premium structural writes via Dataverse PSS V2 APIs as MCP tools, running in the signed-in user's delegated context.MIT
- Alicense-qualityCmaintenanceMCP server for browser automation with shared authentication and built-in UI auditing.MIT
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server for generating rough-draft project plans from natural-language prompts.
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pestoura/m365-ui-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server