planner-mcp

planner-mcp

MCP server for Microsoft Planner Premium offering read-only access to Planner data through a secure browser automation worker, with fail-closed configuration and mock mode for safe testing.

Category
访问服务器

README

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.

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:

  1. MCP control plane — FastMCP over Streamable HTTP, contracts, policy, state, redaction, metrics and semantic tool registration.
  2. 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
M365_MODE PLANNER_MODE mock mock or live
M365_MCP_HOST PLANNER_MCP_HOST 127.0.0.1 Control-plane bind host
M365_MCP_PORT PLANNER_MCP_PORT 8080 Port 1–65535
M365_WORKER_URL PLANNER_WORKER_URL http://127.0.0.1:8090 Required explicitly in live; HTTP(S), no URL userinfo
M365_STATE_PATH PLANNER_STATE_PATH /var/lib/planner-mcp/state.sqlite3 Required explicitly in live; must be absolute
M365_REQUEST_TIMEOUT_S PLANNER_REQUEST_TIMEOUT_S 30 Positive, maximum 300 seconds
M365_REQUIRE_UI_ATTESTATION PLANNER_REQUIRE_UI_ATTESTATION true Cannot be disabled in live
M365_ALLOW_MUTATIONS PLANNER_ALLOW_MUTATIONS false Must remain false in 0.1.0
M365_LOG_LEVEL PLANNER_LOG_LEVEL INFO DEBUG, INFO, WARNING, ERROR or CRITICAL
M365_WORKER_HOST PLANNER_WORKER_HOST 127.0.0.1 Private worker bind host
M365_WORKER_PORT PLANNER_WORKER_PORT 8090 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.py

Canonical entry points:

m365-ui-mcp
m365-browser-worker
m365-ui-mcp-healthcheck

Compatibility entry points remain:

planner-mcp
planner-browser-worker
planner-mcp-healthcheck

Existing 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.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选