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 [![VS Code Marketplace Installs](https://vsmarketplacebadges.dev/installs-short/sbroenne.excel-mcp.svg?label=VS%20Code%20Installs)](https://marketplace.visualstudio.com/items?itemName=sbroenne.excel-mcp) [![Downloads](https://img.shields.io/github/downloads/sbroenne/mcp-server-excel/total?label=GitHub%20Downloads)](https://github.com/sbroenne/mcp-server-excel/releases) [![CI Gate](https://static.pigsec.cn/wp-content/uploads/repos/cas/9b/9b1f3c7222a1467bb5993d163ef98d548f7b2dd792cfda424b9576c79fa0f577.svg)](https://github.com/sbroenne/mcp-server-excel/actions/workflows/ci.yml) [![Release](https://img.shields.io/github/v/release/sbroenne/mcp-server-excel)](https://github.com/sbroenne/mcp-server-excel/releases/latest) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![.NET](https://img.shields.io/badge/.NET-10-blue.svg)](https://dotnet.microsoft.com/download/dotnet/10.0) [![Platform](https://img.shields.io/badge/platform-Windows-lightgrey.svg)](https://github.com/sbroenne/mcp-server-excel) [![Built with Copilot](https://img.shields.io/badge/Built%20with-GitHub%20Copilot-0366d6.svg)](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)
📊 基准测试结果(相同任务,相同模型) | 指标 | CLI | MCP Server | 获胜者 | |--------|-----|------------|--------| | **Tokens** | ~59K | ~163K | 🏆 CLI(减少 64%) | **关键见解:** MCP 在每次请求时向 LLM 发送 26 个工具 schema(约 100K+ token)。
**手动安装:** ``` # 首选:从 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 自动化
标签:AI集成, COM接口, Excel自动化, MCP, 多人体追踪