内容
# office-mcp
[](LICENSE)
[](https://github.com/r12f/office-mcp/releases)
[](https://github.com/r12f/office-mcp/actions/workflows/release.yml)
[](doc/spec/07-deployment.md)
`office-mcp` 将 MCP 客户端连接到实时 Microsoft Office 文档中,通过 Office 加载项和本地 MCP 守护进程。
## 安装和 MCP 配置
从 PowerShell 安装最新的 Windows 便携版发行版:
```powershell
irm https://raw.githubusercontent.com/r12f/office-mcp/main/scripts/install.ps1 | iex
```
配置 MCP 客户端使用本地 Streamable HTTP 端点:
```text
http://127.0.0.1:8800/mcp
```
有关手动安装、升级、日志、目录和卸载的详细信息,请参阅[部署规范](doc/spec/07-deployment.md)。
## 为什么选择 office-mcp
AI 代理需要访问用户正在编辑的文档,而不仅仅是磁盘上的文件。
Office 文档可能受到保护、打开、锁定或由主机管理,而文件解析器无法正确处理这些情况。本地加载项可以在 Office 主机内运行,继承用户的当前 Office 上下文,并保留用户看到的实时编辑状态。
## 为什么不使用 `python-docx` / `docx2pdf` / COM?
`python-docx`、`openpyxl`、`python-pptx`、`docx2pdf` 等工具适用于文件或自动化表面,而不是实时 Office 主机会话。它们对于批处理非常有用,但无法可靠地看到已经打开、保护、锁定或主机管理的编辑会话的每个部分。
| 问题 | 文件库 / COM | office-mcp |
|---|---|---|
| IRM / RMS 保护文档 | 无法可靠地访问主机强制状态 | 设计目标:在 Office 主机内运行;保护文档行为保持主机验证 |
| 用户打开文档中的实时编辑 | 文件定向工具需要磁盘上的文件;COM 可能与活动桌面会话冲突 | 通过加载到实时文档中的加载项运行 |
| Office 实例独占访问错误 | 当自动化打开或锁定同一文件时常见 | 每个 Office 窗口拥有自己的加载项会话 |
| 加载项安装 / 发现 | 不适用 | 安装程序为 Word、Excel 和 PowerPoint 注册一个受信任的目录 |
| MCP 客户端配置更改 | 通常每个工作流有一个子进程或配置路径 | 一个持久的本地 Streamable HTTP 端点 |
| 平台路径 | COM 仅限于 Windows;文件库缺少主机行为 | Windows 桌面版 v1;其他 Office 平台需要单独的部署验证 |
## 架构(一个图表)
```text
+-------------+ +-----------------------+ +----------------------------+
| MCP 客户端 |<----->| office-mcp 守护进程 |<----->| Word 实例 A(加载项) |
| Claude, | HTTP | 长时间运行的进程 | WSS +----------------------------+
| Cursor, | | | | Word 实例 B(加载项) |
| 代理 | | - 工具路由器 | +----------------------------+
+-------------+ | - 会话注册表 | | Excel 实例 C(加载项) |
| - 访问控制 | +----------------------------+
+-----------------------+
```
- **MCP 守护进程** 是一个长时间运行的单个进程。它通过 Streamable HTTP 与客户端通信,并通过本地安全 WebSocket 与加载项使用 JSON-RPC。
- **Office 加载项** 是适用于 Word、Excel 和 PowerPoint 的 Office.js 任务窗格加载项。每个加载的运行时都拨出到守护进程并注册当前主机文档以驱动。
- **客户端** 看到一个统一的 MCP 工具表面。守护进程过滤禁用的工具,检查会话功能,并将每个调用路由到拥有目标文档的加载项。
## 许可证
[MIT](LICENSE)。