
Ms Calendar Mcp
io.github.0xka13b由 GitHub 帳號 0xka13b 發布v1.0.1更新於 Oct 24, 2026
Microsoft Calendar (Outlook Calendar) MCP server for managing events via Microsoft Graph.
概覽
一個本機 MCP 伺服器,讓助理透過 Microsoft Graph API 讀取與管理 Microsoft Outlook 行事曆事件。
- 可以做什麼
- 列出並讀取行事曆事件,包括依 ID 取得單一事件,皆透過 Microsoft Graph v1.0 封裝實作。建立、更新與刪除行事曆事件,寫入類工具會標記為破壞性以便用戶端確認。以 Microsoft 帳戶登入一次後,伺服器會自動更新權杖供後續工作階段使用。也可選用 Streamable HTTP 傳輸,以每次請求的 bearer 權杖取代 stdio。
- 適用情境
- 當你希望 AI 助理查看、安排或修改自己的 Microsoft 365 / Outlook 行事曆事件時使用,例如在桌面 MCP 用戶端中草擬會議變更或檢視近期行程。
- 執行需求
- 以 Node.js(>= 20)本機程序執行,通常透過 npx 啟動。需要一個 Microsoft Entra ID 應用程式註冊(免費),其用戶端 ID 填入 MICROSOFT_CLIENT_ID,並授予委派權限 Calendars.ReadWrite 與 User.Read,還需執行一次登入指令以快取更新權杖。選用變數包括 MICROSOFT_TENANT_ID、MICROSOFT_ACCESS_TOKEN、MICROSOFT_MCP_CACHE_DIR、MCP_TRANSPORT 與 PORT。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Ms Calendar Mcp,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
[Outlook] [Calendar] [OneDrive] [SharePoint] [Contacts]
Microsoft MCP
Model Context Protocol servers for Microsoft 365.
Calendar · Contacts · OneDrive · Outlook · SharePoint — on the official
@modelcontextprotocol/sdk,
over stdio or Streamable HTTP.
Each server speaks the real MCP protocol and runs over either transport:
- stdio — for local MCP clients that launch the server as a subprocess (Claude Desktop, IDEs, the MCP Inspector).
- Streamable HTTP — for remote/hosted use, with the Microsoft Graph access token supplied per request via
Authorization: Bearer.
Servers
All tools are thin wrappers over the Microsoft Graph v1.0 API.
Layout
A server is just a list of tools handed to run():
confirmationPolicy ("always" for mutating/destructive tools, "never" for read-only) is surfaced to clients as MCP readOnlyHint / destructiveHint annotations.
Requirements
- Node.js >= 20
- pnpm 10 (
corepack enable)
Setup
Tests & CI
Tests live next to the code as *.test.ts and run on TypeScript source directly (no build step). The shared packages/* are covered by unit and integration tests — including a full Streamable-HTTP round-trip against a live server — and CI enforces a coverage floor on them. Each apps/* server ships an invariant suite that locks its tool surface (unique snake_case names, valid schemas and confirmation policies).
Every push and pull request to master runs CI: typecheck → build → tests with coverage. The coverage badge is regenerated from the run.
Authentication
You sign in once with your Microsoft account; the server then caches a refresh token and acquires access tokens silently from then on — no pasting, no 1-hour expiry. Sign-in uses your own Microsoft Entra ID app registration (free) so the servers act on your behalf.
1. Register an Entra ID app (one time)
-
Azure Portal → Microsoft Entra ID → App registrations → New registration. Name it anything; pick the Supported account types that fit (single-tenant, multi-tenant, and/or personal accounts).
-
Authentication → Add a platform → Mobile and desktop applications → add redirect URI
http://localhost, and set Allow public client flows to Yes (enables the--device-codefallback). -
API permissions → Add a permission → Microsoft Graph → Delegated permissions → add the scopes for the servers you use (then Grant admin consent if your tenant requires it):
All servers also use
User.Read. (offline_accessis requested automatically for refresh.) -
Copy the Application (client) ID.
2. Sign in (one time per machine)
Set MICROSOFT_CLIENT_ID, then run the server's login command. A browser opens; after you consent, the token is cached under ~/.config/microsoft-mcp/:
From then on the server refreshes tokens automatically. Use a non-default tenant with MICROSOFT_TENANT_ID (default common).
Advanced: supply your own token
To bypass the built-in flow, supply a pre-acquired Graph token directly:
- stdio: set
MICROSOFT_ACCESS_TOKEN(takes precedence over the cached sign-in). Good for quick tests — mint one withaz account get-access-token --resource https://graph.microsoft.com --query accessToken -o tsv. - HTTP: send
Authorization: Bearer <token>on eachPOST /mcprequest. Each request is stateless with its own token, so callers never share credentials — this is the model for hosted/remote deployments, which handle their own auth.
Running
stdio (e.g. Claude Desktop)
Each server is published to npm and runnable with npx — no clone or build. Sign in once first (npx -y ms-calendar-mcp login, see Authentication), then:
Or point at a local build instead of npm:
During development you can skip the build and run the TypeScript directly:
Streamable HTTP
The server exposes POST /mcp (the MCP endpoint) and GET /healthz. Point any Streamable-HTTP MCP client at http://localhost:3000/mcp with an Authorization: Bearer header.
Transport selection
Resolved in this order: --stdio / --http flag → MCP_TRANSPORT=stdio|http → default stdio.
HTTP port: --port <n> → PORT → 3000.
Environment variables
來源:README.md,提交 3791c27
工具
0版本歷史
1- v1.0.1最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分