sbroenne/mcp-server-excel
GitHub: sbroenne/mcp-server-excel
该项目是一个基于 Windows COM 自动化的 Excel MCP 服务器与 CLI 工具,使 AI 助手能够通过自然语言全面自动化真实的 Excel 应用程序。
Stars: 347 | Forks: 51
# ExcelMcp - 用于 Microsoft Excel 的 MCP Server
[](https://marketplace.visualstudio.com/items?itemName=sbroenne.excel-mcp)
[](https://github.com/sbroenne/mcp-server-excel/releases)
[](https://github.com/sbroenne/mcp-server-excel/actions/workflows/ci.yml)
[](https://github.com/sbroenne/mcp-server-excel/releases/latest)
[](https://opensource.org/licenses/MIT)
[](https://dotnet.microsoft.com/download/dotnet/10.0)
[](https://github.com/sbroenne/mcp-server-excel)
[](https://copilot.github.com/)
**用 AI 自动化 Excel** — 一个用于通过对话式 AI 全面自动化 Excel 的 Model Context Protocol (MCP) server。
**MCP Server for Excel** 使 AI 助手(GitHub Copilot、Claude、ChatGPT)能够通过自然语言指令自动化 Excel。自动化 Power Query、DAX 度量、VBA 宏、PivotTables、Charts、格式设置和数据转换(26 个工具,包含 232 项操作)。
**⚡ 由真正的 Excel 引擎驱动** — ExcelMcp 通过其官方 COM API 驱动实际的 Excel 应用程序,因此它可以做到文件解析工具做不到的事情:执行实时操作(刷新 Power Query、重新计算、刷新 PivotTables 和 Data Model、评估 DAX、运行 VBA 和 Python `=PY()`)并编辑您现有的工作簿,同时完整保留每一个公式、PivotTable、图表、宏和格式。
**💡 交互式开发** - 在 Excel 中即时查看结果。创建查询,运行它,检查输出,优化并重复。Excel 成为您用于快速开发和测试的 AI 驱动工作区。
**🧪 经 LLM 测试的质量** - 使用 [pytest-skill-engineering](https://github.com/sbroenne/pytest-skill-engineering) 验证了真实 LLM 工作流的工具行为。我们测试 LLM 是否能正确理解和使用我们的工具。
**技术要求:**
- ⚠️ **仅限 Windows** - COM interop 是 Windows 特有的
- ⚠️ **需要 Excel** - 必须安装 Microsoft Excel 2016 或更高版本
- ⚠️ **桌面环境** - 控制实际的 Excel 进程(不适用于服务器端处理)
## 🎯 您可以做什么
**26 个专用工具,包含 232 项操作:**
- 🔄 **Power Query**(1 个工具,12 项操作)- 原子工作流、M 代码管理、加载目标
- 📊 **Data Model/DAX**(2 个工具,19 项操作)- 度量、关系、模型结构
- 🎨 **Excel Tables**(2 个工具,27 项操作)- 生命周期、筛选、排序、结构化引用
- 📈 **PivotTables**(3 个工具,30 项操作)- 创建、字段、聚合、计算成员/字段
- 📉 **Charts**(2 个工具,29 项操作)- 创建、配置、系列、格式设置、数据标签、趋势线
- 📝 **VBA**(1 个工具,6 项操作)- 模块、执行、版本控制
- 📋 **Ranges**(4 个工具,46 项操作)- 值、公式、格式设置、验证、保护
- 📄 **Worksheets**(2 个工具,16 项操作)- 生命周期、颜色、可见性、跨工作簿移动
- 🔌 **Connections**(1 个工具,9 项操作)- OLEDB/ODBC 管理和刷新
- 🏷️ **Named Ranges**(1 个工具,6 项操作)- 参数和配置
- 📁 **Files**(1 个工具,6 项操作)- 会话管理、工作簿创建、支持 IRM/AIP 保护的文件
- 🧮 **Calculation Mode**(1 个工具,3 项操作)- 获取/设置计算模式并触发重新计算
- 🎚️ **Slicers**(1 个工具,8 项操作)- 用于 PivotTables 和 Tables 的交互式筛选
- 🎨 **Conditional Formatting**(1 个工具,2 项操作)- 规则和清除
- 📸 **Screenshot**(1 个工具,2 项操作)- 将范围/工作表捕获为 PNG,用于 LLM 视觉验证
- 🪧 **Window Management**(1 个工具,9 项操作)- 显示/隐藏 Excel、排列、定位、状态栏反馈
📚 **[完整功能参考 →](FEATURES.md)** - 所有 232 项操作的详细文档
## 💬 示例提示词
**创建和填充数据:**
- *“创建一个名为 SalesTracker.xlsx 的新 Excel 文件,其中包含一个带有 Date、Product、Quantity、Unit Price 和 Total 以及示例数据的表格”*
- *“将此数据放在 A1:C4 中 - Name, Age, City / Alice, 30, Seattle / Bob, 25, Portland”*
- *“添加一个公式列,用于计算 Quantity 乘以 Unit Price”*
**分析与可视化:**
- *“根据此数据创建一个 PivotTable,显示按 Product 划分的总销售额,然后添加一个条形图”*
- *“使用 Power Query 导入 products.csv,将其加载到 Data Model,并为 Total Revenue 创建一个度量”*
- *“为 Region 字段创建一个 Slicer,以便我可以交互式地筛选 PivotTable”*
- *“使用 ProductID 在 Orders 和 Products 表之间创建关系”*
**格式设置与样式:**
- *“将 Price 列格式设置为货币,并以绿色突出显示超过 500 美元的值”*
- *“将此范围转换为带有蓝色样式的 Excel Table,并添加汇总行”*
- *“将标题设为粗体并带有深色背景,并自动调整列宽”*
- *“一步将相同的节标题样式应用到 A1:G1、A12:G12 和 A24:G24”*
格式设置拆分:数字显示格式使用 `range` 工具,而视觉样式和自动调整使用 `range_format`。
**自动化:**
- *“将所有 Power Query M 代码导出到文件以进行版本控制”*
- *“运行 UpdatePrices 宏”*
- *“工作时向我展示 Excel”* - 实时观看更改
**🪟 Agent Mode — 观看 AI 在 Excel 中工作:**
- *“在你构建这个仪表板时,并排向我展示 Excel”* - 实时可见
- *“让我看看你创建图表的过程”* - AI 询问您的偏好,然后显示 Excel
- 状态栏显示实时进度:*“ExcelMcp: Building PivotTable from Sales data...”*
## 👥 谁应该使用这个?
**非常适合:**
- ✅ 自动化重复性 Excel 工作流的 **数据分析师**
- ✅ 构建基于 Excel 的数据解决方案的 **开发者**
- ✅ 管理复杂 Excel 工作簿的 **业务用户**
- ✅ 在 Git 中维护 Power Query/VBA/DAX 代码的 **团队**
**不适用于:**
- ❌ 服务器端数据处理(改用 ClosedXML、EPPlus 等库)
- ❌ Linux/macOS 用户(需要安装 Windows + Excel)
- ❌ 大批量操作(考虑不依赖 Excel 的替代方案)
## 🚀 快速开始
| 平台 | 安装方式 |
|----------|-------------|
| **VS Code** | [安装扩展](https://marketplace.visualstudio.com/items?itemName=sbroenne.excel-mcp)(一键安装,推荐) |
| **Claude Desktop** | 从 [最新发布版本](https://github.com/sbroenne/mcp-server-excel/releases/latest) 下载 `.mcpb` |
| **任何 MCP Client** | 从 [最新发布版本](https://github.com/sbroenne/mcp-server-excel/releases/latest) 下载 `mcp-excel.exe` 并添加到 PATH |
| **详情** | 📖 [MCP Server 安装指南](docs/INSTALLATION-MCP-SERVER.md) |
**⚠️ 重要提示:** 使用前请关闭所有 Excel 文件。服务器在自动化期间需要对工作簿的独占访问权限。
## 🔧 CLI 与 MCP Server 的对比
此包同时提供 **CLI** 和 **MCP Server** 接口。请根据您的用例进行选择:
| 接口 | 最适用于 | 原因 |
|-----------|----------|-----|
| **CLI** (`excelcli`) | 编码 Agent(Copilot、Cursor、Windsurf)+ 脚本编写 | **减少 64% 的 token** - 单一工具,无庞大 schema。从 Core 代码自动生成,确保 1:1 的功能对等。捆绑了 excel-cli skill。 |
| **MCP Server** | 对话式 AI(Claude Desktop、VS Code Chat) | 丰富的工具发现功能,持久连接。更适合交互式、探索性的工作流。 |
**安装:**
- **通过 Copilot 插件安装 CLI**(推荐用于 Copilot CLI):安装 `excel-cli` 插件以获取 skill 指导,然后单独安装 `excelcli`
- **独立安装 CLI**:从 [发布版本](https://github.com/sbroenne/mcp-server-excel/releases/latest) 下载 ZIP 或通过 NuGet 安装 — 参见 [CLI 安装指南](docs/INSTALLATION-CLI.md)
- **仅 Skill**:当您的 Agent 的 PATH 上已经有可用的 `excelcli` 时,单独安装 `excel-cli` skill
- **MCP Server**:从发布版本下载或安装 VS Code 扩展 — 参见 [MCP Server 安装指南](docs/INSTALLATION-MCP-SERVER.md)
**⚡ CLI 命令:** 使用 Roslyn 源生成器从 Core 服务定义自动生成。所有 CLI 命令通过共享的代码生成与 MCP 工具保持精确的 1:1 对等。有关详细信息,请参见 [代码生成文档](docs/DEVELOPMENT.md#-cli-command-code-generation)。
### 📦 GitHub Copilot Plugins
ExcelMcp 在 Copilot 插件市场中提供两个 **GitHub Copilot CLI plugins**:
```
# 注册 plugin marketplace(一次性)
copilot plugin marketplace add sbroenne/mcp-server-excel-plugins
# 安装一个或两个 plugins
copilot plugin install excel-mcp@mcp-server-excel-plugins # For conversational AI
copilot plugin install excel-cli@mcp-server-excel-plugins # For scripting / coding agents
```
- **`excel-mcp`** — 用于对话式工作流的 MCP server
- **`excel-cli`** — 用于编码 Agent 的 Skill(如果您想要 CLI 工具,请单独安装 `excelcli`)
**注意:** 每次发布后,插件出现在市场之前可能会有短暂的延迟。您可能需要稍等片刻等待更新同步。
📖 [完整安装指南 →](docs/INSTALLATION.md)
**手动安装:**
```
# 首选:从 latest release 下载独立可执行文件(无需 .NET runtime)
# https://github.com/sbroenne/mcp-server-excel/releases/latest
# - ExcelMcp-MCP-Server-{version}-windows.zip → 解压 mcp-excel.exe
# - ExcelMcp-CLI-{version}-windows.zip → 解压 excelcli.exe(可选,用于 scripting)
# 次要:通过 .NET tool 安装(需要 .NET 10 runtime)
dotnet tool install --global Sbroenne.ExcelMcp.McpServer
dotnet tool install --global Sbroenne.ExcelMcp.CLI
# 以任一方式安装完成后,自动配置所有你的 coding agents:
npx add-mcp "mcp-excel" --name excel-mcp
```
```
# 可选:安装 agent skills 以获得更好的 AI 指导
npx skills add sbroenne/mcp-server-excel --skill excel-cli # Coding agents
npx skills add sbroenne/mcp-server-excel --skill excel-mcp # Conversational AI
```
## ⚙️ 工作原理 - COM 自动化与统一服务架构
**ExcelMcp 使用 Windows COM 自动化来控制实际的 Excel 应用程序(而不仅仅是 .xlsx 文件)。**
**MCP Server** 和 **CLI** 是两个平等的、一等公民的入口点。每个入口点都托管自己的 **ExcelMCP Service** 来管理 Excel 会话 — MCP Server **进程内** 运行它(直接调用,无管道),而 CLI 通过命名管道使用 **后台 daemon**,以便会话在 CLI 调用之间持久存在:
```
┌──────────────────────┐ ┌──────────────────────┐
│ MCP Server │ │ CLI (excelcli) │
│ (AI assistants) │ │ (coding agents) │
└──────────┬───────────┘ └──────────┬───────────┘
│ in-process │ named pipe →
│ (direct calls) │ background daemon
▼ ▼
┌──────────────────────┐ ┌──────────────────────┐
│ ExcelMCP Service │ │ ExcelMCP Service │
│ (session mgmt) │ │ (daemon; sessions │
│ │ │ persist across │
│ │ │ CLI invocations) │
└──────────┬───────────┘ └──────────┬───────────┘
▼ ▼
Core Commands Core Commands
▼ ▼
┌──────────────────────┐ ┌──────────────────────┐
│ Excel COM API │ │ Excel COM API │
│ (Excel.Application) │ │ (Excel.Application) │
└──────────────────────┘ └──────────────────────┘
```
两个入口点共享相同的 Core Commands 代码库,因此每个操作的行为都是相同的。不过它们是独立的进程:每个入口点都运行自己的 ExcelMCP Service 和自己的 Excel 实例,并且它们彼此之间**不**共享实时会话。
**主要优势:**
- ✅ **两个平等的入口点** - 每个操作通过 MCP Server 和 CLI 的运行效果完全相同
- ✅ **持久的 CLI 会话** - CLI daemon 在多次 `excelcli` 调用之间保持工作簿打开状态,因此脚本不需要每次都重新打开文件
- ✅ **进程内 MCP 调用** - MCP Server 进程内(无管道)运行服务,以实现低延迟自动化
- ✅ **真正的 Excel 自动化** - 通过 COM 驱动实际的 Excel.Application,而不仅仅是文件解析
- ✅ **系统托盘 UI** - CLI daemon 显示托盘图标以监控和停止活动会话
**💡 提示:在 AI 工作时观看 Excel**
默认情况下,Excel 在后台隐藏运行以加快自动化速度。要实时查看更改,只需询问:
- *“工作时向我展示 Excel”*
- *“让我看看你在做什么”*
- *“打开 Excel 以便我能看到更改”*
AI 将显示 Excel 窗口,以便您可以观看每个操作的实时发生 - 非常适合学习或验证更改!
## 📋 附加信息
📚 **[CLI 指南 →]()** | **[用于 Agent 的 CLI Skill →](skills/excel-cli/SKILL.md)** | **[MCP Server 指南 →](src/ExcelMcp.McpServer/README.md)** | **[所有 Agent Skill →](skills/README.md)**
**许可证:** MIT 许可证 - 参见 [LICENSE](LICENSE) 文件
**隐私:** 有关我们的隐私政策,请参见 [PRIVACY.md](PRIVACY.md)
**贡献:** 有关指南,请参见 [CONTRIBUTING.md](docs/CONTRIBUTING.md)
**构建工具:** 整个项目是使用 GitHub Copilot AI 辅助开发的 - 主要使用 Claude,但最近使用的是 Auto-mode。
**致谢:**
- Microsoft Excel 团队 - 提供全面的 COM 自动化 API
- Model Context Protocol 社区 - 提供 AI 集成标准
- 开源社区 - 提供灵感和最佳实践
## 相关项目
作者的其他项目:
- [PowerPoint MCP Server](https://powerpointmcpserver.dev/) — 通过 MCP 实现 AI 驱动的 PowerPoint 自动化,本项目的姊妹项目
- [pytest-skill-engineering](https://github.com/sbroenne/pytest-skill-engineering) — 用于 AI Agent 的 LLM 驱动测试框架
- [Windows MCP Server](https://windowsmcpserver.dev/) — 通过 MCP 实现 AI 驱动的 Windows 自动化
- [OBS Studio MCP Server](https://github.com/sbroenne/mcp-server-obs) — 实现 AI 驱动的 OBS Studio 自动化
📊 基准测试结果(相同任务,相同模型)
| 指标 | CLI | MCP Server | 获胜者 | |--------|-----|------------|--------| | **Tokens** | ~59K | ~163K | 🏆 CLI(减少 64%) | **关键见解:** MCP 在每次请求时向 LLM 发送 26 个工具 schema(约 100K+ token)。标签:AI集成, COM接口, Excel自动化, MCP, 多人体追踪