communication MCP Server
Custom MCP server connecting Claude to Microsoft Outlook (email, calendar, contacts, tasks, OneDrive) via Cloudflare Workers + OAuth 2.0.
Discovered via github-topic:model-context-protocol and last synced 1d ago.
1. Add to claude_desktop_config.json
{
"mcpServers": {
"outlook-mcp": {
"command": "uvx",
"args": [
"mcp-server-outlook"
]
}
}
}Config file location: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) / %APPDATA%\Claude\claude_desktop_config.json (Windows)
One-time code you paste at `/authorize` to mint a Claude bearer. Also used as the encryption secret for upstream Microsoft tokens at rest — rotating it invalidates stored tokens and forces clean Microsoft re-auth.
Your Azure AD app's client secret.
Purpose
Forward a message to one or more recipients with optional comment.
List Focused Inbox per-sender override rules.
Update event fields (subject, time, location, body). Only patches changed fields.
Update contact fields.
Delete a task.
List mail folders with counts, `parent_id`, and `child_count`. Pass `recursive=true` to walk the full folder tree (subfolders included).
Set follow-up flag: `flagged`, `complete`, or `notFlagged`.
List events in a date range. Expands recurring events. Configurable via `days`, `after`, `before`.
List contacts with cursor pagination.
List tasks with status filter and pagination.
Update draft fields. Accepts `is_html=True` for HTML bodies and `deferred_send_datetime` to set or clear the scheduled delivery time.
Remove a single attachment from a draft.
Upsert a per-sender Focused Inbox override (`focused` / `other`). Case-insensitive sender matching; PATCH-if-exists, else POST.
Check if authenticated and whether read-only mode is active.
Reply or reply-all to a message.
Move a message between Focused Inbox and Other (`focused` / `other`).
Create event with location, attendees, recurrence, online meeting support.
Create a new contact.
Mark task as completed.
Rename a mail folder.
Search mail using KQL query. Optionally scope to a folder by name or ID.
Delete a message. Soft delete (Deleted Items) by default. `permanent: true` for hard delete.
List To Do lists.
Create a draft. Supports scheduled delivery via `deferred_send_datetime` (server-side, Outlook-desktop-compatible "Delay Delivery").
Add attachments to an existing draft (auto upload session for >3MB).
Copy a message to another folder.
Get full message by ID. Format: `text`, `html`, or `full` (both). Pass `include_deferred_send=True` to also surface the draft's scheduled delivery time.
Send email. Supports TO/CC/BCC, HTML body, importance level.
Mark a message as read or unread.
Get full contact details by ID.
Update task fields.
Move a message to a folder by name or ID.
Delete a Focused Inbox override by ID.
RSVP to an event: `accept`, `decline`, or `tentative`. Optionally include a message.
List draft messages with pagination.
Send message with file attachments (auto upload session for >3MB).
Get all messages in a conversation thread.
Set categories on a message.
Get full event details: attendees, body, online meeting URL, recurrence.
Search contacts by name or email.
Create task with due date, importance, recurrence.
Send an existing draft.
Delete a calendar event.
Delete a contact.
Download attachment and save decoded bytes to a file.
Delete a draft.
Create mail folder (top-level or nested).
Get current user profile.
Write the server-side mailbox timezone. Accepts IANA (`America/Los_Angeles`) or Windows (`Pacific Standard Time`) zone names; Graph validates.
`list[string]`
create/update/complete/delete task
Delete a mail folder (refuses well-known folders).
List category definitions with colors.
Batch move/flag/categorize/mark_read (max 20 per call). Single Graph `/$batch` round-trip — 10-20× faster than per-message calls for large triage.
List available calendars.
Read out-of-office / auto-reply configuration. Scheduled datetimes are normalized to UTC ISO 8601 where possible.
Tools
get/set timezone, get/set auto-reply (OOO)
Pre-send check (OOF, delivery restrictions).
List configured accounts.
`string`
create/rename/delete folder
Switch active account.
`string`
send, reply, forward, send_draft, send_with_attachments
Read the server-side mailbox timezone (`/me/mailboxSettings/timeZone`).
`bool`
create/update/delete contact
Configure auto-reply. Supports `disabled` / `always` / `scheduled` status, internal + external messages, `none` / `contacts_only` / `all` external-audience scopes, and scheduled start/end datetimes.
create/update/delete draft
Type
move, delete (soft), flag, categorize, mark read, copy, batch
`string`
create/update/delete event, RSVP
`ol_email_create_draft` / `ol_email_update_draft` / `ol_email_list_drafts` / `ol_email_discard_draft`, `ol_calendar_create_event_draft` / `ol_calendar_discard_event_draft`, attachment access, per-profile draft registry.
Status
Backend
shows pending drafts created by this profile
OS keyring
Work / school
encrypted-file`. ## Troubleshooting ### "No usable credentials" The cached token expired (refresh tokens last ~60–90 days) or never existed. Run: ```bash uvx mcp-server-outlook login --profile <name> ``` ### Linux: keyring fails / "Secret Service unavailable" The plain-file backend kicks in automatically — no action needed. If you'd rather have encryption at rest: ```bash export OUTLOOK_TOKEN_PASSPHRASE='<some-strong-passphrase>' uvx mcp-server-outlook login --profile <name> ``` ## Development ```bash git clone https://github.com/XMV-Solutions-GmbH/outlook-mcp.git cd outlook-mcp uv sync --extra dev # Unit + integration (no real Microsoft Graph), with coverage reporting ./tests/run_tests.sh # Harness (real Microsoft 365 sandbox; requires harness-profile login) ./tests/run_tests.sh harness ```
yes
no
Default
List messages in a folder. `folder` accepts display names, well-known names, or Graph IDs. Filter by read status, sender, date range, Focused Inbox classification. Pagination via `skip`.
Bulk read up to 20 messages by ID via Graph `$batch` in one round-trip. Per-message shape matches `outlook_read_message` byte-for-byte for the same `(format, concise, include_deferred_send)`. Partial-failure tolerant: 404s on some IDs surface in `failures[]` without failing the whole call. Use NOT N `outlook_read_message` calls.
List only inbox changes since the last call. First call returns a full snapshot plus a `delta_token`; subsequent calls (token passed back) return only added/updated/deleted items. Deletes come back as `{id, is_deleted: True}`. Cursor is stateless — agent persists and replays.
One structured "since last call" digest composing mail/events/contacts deltas. Returns counts + `urgent_flagged` mail + top-5 `by_sender` + new/cancelled events. Each resource has an independent `delta_token`; stale-token recovery (HTTP 410) auto-resyncs that resource and surfaces `_meta.resync`. First-call snapshot is filtered to `fallback_window_hours` (default 24). Designed for recurring agent loops.
List only event changes inside a window since the last call. `start` and `end` (ISO 8601) required on the first call (Graph constraint — no whole-calendar sync). Deletes come back as `{id, is_deleted: True}`. Cursor is stateless.
List only contact changes since the last call. Deletes come back as `{id, is_deleted: True}`. Cursor is stateless.
List attachments on a message.
Optional. Email signature block appended server-side — see [Email signature](#email-signature).
Optional. Publicly reachable HTTPS URL of the signature logo.
What it does
meaning
ordinary — nobody recorded the meeting
ordinary — organised in another tenant, so Graph won't serve its artifacts
worth investigating — no Teams link found on the event
worth investigating — link found, but no matching online meeting
worth investigating — an unexpected failure
Send messages and upload files to Slack channels using the `slack` CLI. Supports direct messages, channel posts, file uploads, and thread replies.
Bidirectional Telegram bridge — talk to Claude from your phone. Built into OpenPaw.
Discover agents across local node and mesh peers at runtime — their roles, handles, and how to communicate with or delegate to them.
Apply data visualization and storytelling principles from Storytelling with Data by Cole Nussbaumer Knaflic. Covers choosing effective visuals (line, bar, table, scatterplot), eliminating clutter (Gestalt principles, data-ink ratio), focusing attention (preattentive attributes, strategic color), thinking like a designer (affordances, alignment, white space), and narrative structure (three-act story, horizontal/vertical logic, Big Idea). Trigger on "data visualization", "chart design", "dashboard design", "data storytelling", "presentation chart", "declutter chart", "bar chart", "line chart", "data narrative", "slide deck data", "chart review", "viz critique", "storytelling with data".
🔬 A curated collection of 23,000+ agent skills for empirical research across 8 social science disciplines. | 精选 23,000+ AI Agent 技能库,覆盖8大社会科学学科的实证研究。CoPaper.AI 20分钟完成一篇可复现的规范实证论文,并支持用户上传 Skills。-- Maintained by CoPaper.AI from Stanford REAP.
🔬 A curated collection of 23,000+ agent skills for empirical research across 8 social science disciplines. | 精选 23,000+ AI Agent 技能库,覆盖8大社会科学学科的实证研究。CoPaper.AI 20分钟完成一篇可复现的规范实证论文,并支持用户上传 Skills。-- Maintained by CoPaper.AI from Stanford REAP.
AgentNetworkProtocol(ANP) is an open source protocol for agent communication. Our vision is to define how agents connect with each other, building an open, secure, and efficient collaboration network for billions of intelligent agents.
Learn how to use the c-slack Claude skill. Complete guide with installation instructions and examples.
Learn how to use the c-telegram Claude skill. Complete guide with installation instructions and examples.
Learn how to use the Letter Writer Claude skill. Complete guide with installation instructions and examples.