Outlook MCP 是 AI Skill Hub 本期精选MCP工具之一。综合评分 7.5 分,整体质量较高。我们推荐使用将其纳入你的 AI 工具库,帮助提升工作效率。
Outlook MCP 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
Outlook MCP 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
# 方式一:通过 Claude Code CLI 一键安装
claude skill install https://github.com/mpalermiti/outlook-mcp
# 方式二:手动配置 claude_desktop_config.json
{
"mcpServers": {
"outlook-mcp": {
"command": "npx",
"args": ["-y", "outlook-mcp"]
}
}
}
# 配置文件位置
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%/Claude/claude_desktop_config.json
# 安装后在 Claude 对话中直接使用 # 示例: 用户: 请帮我用 Outlook MCP 执行以下任务... Claude: [自动调用 Outlook MCP MCP 工具处理请求] # 查看可用工具列表 # 在 Claude 中输入:"列出所有可用的 MCP 工具"
// claude_desktop_config.json 配置示例
{
"mcpServers": {
"outlook_mcp": {
"command": "npx",
"args": ["-y", "outlook-mcp"],
"env": {
// "API_KEY": "your-api-key-here"
}
}
}
}
// 保存后重启 Claude Desktop 生效
MCP server for Microsoft Outlook personal accounts via Microsoft Graph API.
Personal Microsoft accounts only —@outlook.com,@hotmail.com,@live.com. Work/school accounts (Entra ID) are not supported in v1.
Disclaimer: Independent open-source project. Not affiliated with, endorsed by, or supported by Microsoft Corporation. "Outlook" and "Microsoft Graph" are trademarks of Microsoft.
---
68 tools across 13 categories:
$batch, search (KQL), list folders, delta-sync inbox changes, composed "since last call" digest across mail/events/contactsDesign principles:
azure-identity (macOS Keychain, Windows Credential Store, Linux Secret Service).read_only: true in config to block all write operations. Note this limits the tools, not the token -- see What read_only does and does not do.permanent: true.7d is seven days ago, +7d is seven days from now, now is this moment. Units: m, h, d, w.attachments_dir, so a message that asks an agent to mail a file elsewhere on disk cannot be obeyed.delta_token is caller-held state, so it is untrusted input. Every URL that would carry a Graph bearer token is parsed and required to be https on graph.microsoft.com, which is what stops a poisoned cursor from redirecting your mailbox token to someone else. Its path must also be the delta endpoint of the tool it was handed to, so a cursor cannot point a delta tool at some other part of the mailbox.morning_brief, triage_folder and catch_up ship as MCP prompts, so the common sequences do not have to be reconstructed call by call.Microsoft has deprecated app registration for personal accounts without an Azure AD tenant. You need to create a free Azure account first:
@outlook.com account. Requires a credit card for identity verification but won't charge you. This creates a proper Azure AD tenant.uv sync --extra dev
Option A — from PyPI (recommended):
```bash uv tool install outlook-graph-mcp
**Option B — from source:**
bash git clone https://github.com/mpalermiti/outlook-mcp.git cd outlook-mcp uv sync ```
openclaw mcp set outlook '{"command":"outlook-mcp"}'
openclaw mcp set outlook '{"command":"uv","args":["--directory","/path/to/outlook-mcp","run","outlook-mcp"]}'
```
Your config and sign-in are untouched; no re-auth needed.
Create ~/.outlook-mcp/config.json:
{
"client_id": "YOUR_APPLICATION_CLIENT_ID",
"tenant_id": "consumers",
"timezone": "America/Los_Angeles",
"read_only": true,
"attachments_dir": "~/.outlook-mcp/attachments"
}
The only required field is client_id. Everything else has sensible defaults. Start with read_only: true — flip to false when you're comfortable.
Config lives at ~/.outlook-mcp/config.json (created with 0600 permissions on macOS and Linux; see Config permissions below for Windows). It is read as UTF-8 on every platform, and a byte-order mark is accepted. Set the OUTLOOK_MCP_CONFIG_DIR environment variable to move that settings directory (config.json, auth record, and the attachments default move with it) — see Two accounts, two instances below.
| Field | Type | Default | Description |
|---|---|---|---|
client_id | string | null | Azure AD application (client) ID. Required for auth. |
tenant_id | string | "consumers" | Azure AD tenant. Use "consumers" for personal Microsoft accounts. |
timezone | string | "UTC" | IANA timezone (e.g. "America/New_York"). Interprets zone-less dates, **and anchors every event you create** — a recurring event is expanded in this zone, so on the default "UTC" a 09:00 weekly meeting shifts an hour when the clocks change. Set it to where you are. |
read_only | bool | false | When true, all write tools (send, reply, move, delete, create, update, RSVP) return an error. Gates the tools, not the Microsoft token -- see below. |
read_only_consent | bool | false | When true, outlook-mcp auth asks Microsoft for the read permissions only, instead of the read-write set. For a second, read-only app registration -- see [What read_only does and does not do](#what-read_only-does-and-does-not-do). Requires read_only: true; the config is refused without it. |
attachments_dir | string | "~/.outlook-mcp/attachments" | The only directory the attachment tools may read from or write to. Every path an agent supplies is resolved and must land inside it — a symlink out or a .. is refused. Widen it only if you understand that anything reachable can be emailed. |
allow_categories | list[string] | [] | Optional. Restrict write tools to specific categories (see below). Empty list = all writes allowed when read_only: false. |
allow_unencrypted_token_cache | bool | false | Permit the OAuth token cache to be written in cleartext when the platform has no encrypted store (Linux without libsecret). Off by default: authentication stops with an explanation rather than silently persisting a reusable Graph token in plaintext. macOS and Windows always encrypt and are unaffected. |
All 68 tool schemas load into the client's context every turn (the chars/4 proxy test_tool_surface_budget.py measures with; a different yardstick than the ~8.6k o200k figure in ROADMAP for the 62-tool surface). A client that only needs part of the surface can set the OUTLOOK_MCP_TOOLSETS environment variable to a comma-separated list of tool groups, and only those load. The account group (auth / identity) is always available.
```bash
One server process serves one mailbox. To work against two accounts, register two client entries and give each its own settings directory with OUTLOOK_MCP_CONFIG_DIR — pair it with OUTLOOK_MCP_TOOLSETS so each instance also only loads the tool groups it needs:
{
"mcpServers": {
"outlook-net": {
"command": "outlook-mcp",
"env": {
"OUTLOOK_MCP_TOOLSETS": "mail,calendar,contacts",
"OUTLOOK_MCP_CONFIG_DIR": "~/.outlook-mcp-net"
}
},
"outlook-neko": {
"command": "outlook-mcp",
"env": {
"OUTLOOK_MCP_TOOLSETS": "todo",
"OUTLOOK_MCP_CONFIG_DIR": "~/.outlook-mcp-neko"
}
}
}
}
Then run outlook-mcp auth once per instance, with the same env set, to write each auth record in its own directory. Each instance reads its own config.json (own client_id, timezone, permissions) from its own directory.
Only move the config directory — never HOME. The token cache is not in it: it stays in the OS keyring, and on macOS every azure-identity cache on the host shares one Keychain item, coordinated through a signal file — on this server, ~/.IdentityService/outlook-mcp.nocae (azure-identity appends .nocae to every non-CAE cache name; a CAE cache would be a different file over the same item). Both processes must keep consulting that same signal file so their cache writes lock and merge into the one shared entry — which is exactly what moving the config directory preserves and redirecting HOME (or the cache location) would break: two signal files that each believe they own the Keychain item overwrite each other's token. OUTLOOK_MCP_CONFIG_DIR deliberately moves only where config.json, the auth record, and attachments live; unset or empty keeps the default ~/.outlook-mcp.
By default, read_only: false unlocks all write tools. For finer control, set allow_categories to restrict write access to specific categories. Read tools (list, search, get) are always allowed — allow_categories only narrows the write surface.
Available categories:
| Category | Tools | Risk |
|---|---|---|
mail_drafts | create/update/delete draft | Safe — drafts only, no send |
mail_triage | move, delete (soft), flag, categorize, mark read, copy, batch | Moderate — reversible except hard delete |
mail_folders | create/rename/delete folder | Moderate |
mail_send | send, reply, forward, send_draft, send_with_attachments | **Dangerous** — sends email on your behalf |
calendar_write | create/update/delete event, RSVP | Moderate — your own calendar. The parts that email other people text the agent wrote need mail_send as well: inviting attendees, rewording (subject, body, location) any event that already has them, and adding a message to an RSVP. A bare RSVP, a time change and a cancellation still notify the people involved, but carry nothing the agent wrote |
contacts_write | create/update/delete contact | Moderate |
todo_write | create/update/complete/delete task, checklist items; upload/delete task attachments | Moderate — your own task list, but outlook_upload_task_attachment reads local files from attachments_dir and pushes their bytes to Graph, and task/checklist/attachment deletes are irreversible. Listing and downloading attachments are plain reads, gated like every other read (not at all) and fenced to attachments_dir |
Example policies:
Draft-only assistant (agent can compose drafts, you review and send):
{ "read_only": false, "allow_categories": ["mail_drafts", "mail_triage", "todo_write"] }
(Note that todo_write includes the write-side task-attachment tools — file reads from attachments_dir, uploads to Graph, and irreversible deletes. Listing and downloading task attachments are reads and are not write-gated, like the mail attachment reads — see the table above.)
Calendar-only (agent can manage your schedule, nothing else):
{ "read_only": false, "allow_categories": ["calendar_write"] }
(It cannot invite anyone. An invitation is an email, so attendees need mail_send too — add it if the agent should set up meetings with other people, not just block out your own time.)
Full write access (agent can do everything):
{ "read_only": false }
Read-only (safest default, no writes):
{ "read_only": true }
When allow_categories is set, any tool in a non-allowed category returns a permission-denied error (PermissionDeniedError) naming the blocked category. When allow_categories is empty (or unset) and read_only is false, all write tools are permitted. read_only: true always takes precedence — if set, all writes are blocked regardless of allow_categories. Unknown category names are rejected at config load time with a validation error; only the seven names above are accepted.
---
Dates. Every datetime parameter (after, before, start, end, due, deferred_send_datetime) accepts ISO 8601 — 2026-10-22 or 2026-10-22T14:30:00Z — or a relative offset: 7d is seven days ago, +7d is seven days from now, and now is this moment. Units are m, h, d, w. Bare means ago, matching the usual CLI convention, so a due date in the future needs the +. Zone-less input is interpreted in your configured timezone; responses are always UTC.
outlook-mcp 是一个 MCP 服务器,通过 Microsoft Graph API 为个人 Microsoft Outlook 账户提供支持。该项目已发布到 PyPI,支持多个 Python 版本,采用 MIT 许可证。它使开发者能够通过 MCP 协议与 Outlook 邮箱、日历、联系人等功能进行集成和交互。
项目提供 62 个工具,分为 13 个类别。包括:身份验证状态检查(通过 CLI 登录)、邮件读取功能(收件箱列表、重点收件箱筛选、读取邮件、批量读取、KQL 搜索、文件夹列表、增量同步、摘要生成)、邮件写入功能(发送、回复、转发)、邮件分类功能(移动、删除、标记等)以及其他日历、联系人和任务管理工具。
需要个人 Microsoft 账户。由于微软已停止为无 Azure AD 租户的个人账户进行应用注册,用户需先创建免费 Azure 账户。使用 uv 或 pip 安装开发依赖。项目支持 Python 多个版本,建议使用 uv 作为包管理工具。
支持三种安装方式:1) 推荐从 PyPI 安装,使用 `uv tool install outlook-graph-mcp`、`pipx install` 或 `pip install`;2) 从源码安装,克隆仓库后运行 `uv sync`。所有方式都简洁易用,开发者可根据环境选择合适的方式。
项目提供快速开始指南,但具体步骤在文档中未详细展开。建议用户参考官方文档的完整使用教程部分。
配置文件位于 `~/.outlook-mcp/config.json`,权限为 0600。必需字段为 `client_id`(Azure AD 应用 ID),其他字段有合理默认值。关键配置包括:`tenant_id`(默认 "consumers" 用于个人账户)、`timezone`(时区设置)、`read_only`(建议初始设为 true,熟悉后改为 false)。
项目提供工具参考文档,包含 62 个工具的详细说明,涵盖邮件、日历、联系人等多个功能模块的 API 接口定义和使用方法。
该项目提供了一个开源的MCP工具,通过Microsoft Graph API管理Microsoft Outlook个人账户的日历和邮件。代码结构清晰,注释较少。
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
经综合评估,Outlook MCP 在MCP工具赛道中表现稳健,质量良好。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。
| 原始名称 | outlook-mcp |
| 原始描述 | 开源MCP工具:MCP server for Microsoft Outlook personal accounts via Microsoft Graph API. 62 t。⭐12 · Python |
| Topics | calendaremailmcpmicrosoft-graphopenclawpython |
| GitHub | https://github.com/mpalermiti/outlook-mcp |
| License | MIT |
| 语言 | Python |
收录时间:2026-05-23 · 更新时间:2026-05-30 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端