mcpField
E
excel-mcp

excel-mcp

本地服务
github.com/wesseltl数据与分析011 周前更新

关于 excel-mcp

excel-mcp 是供 Agent 读取复杂 Excel 工作簿的 MCP 服务。它能识别表头并处理合并单元格,同时报告解析结果的不确定性。

主要功能

  1. 01列出工作表及其尺寸
  2. 02以网格预览工作表行
  3. 03识别表头并返回表格记录
  4. 04填充合并单元格的跨行值
  5. 05将解析后的表格导出为 CSV
  6. 06报告置信度和解析警告

适用场景

  1. 01分析前检查工作簿
  2. 02提取含标题行工作表中的记录
  3. 03保留由合并单元格表示的类别

MCP 相关

它向 MCP 客户端提供工作簿检查与转换工具,包括工作表列表、预览、表格读取和 CSV 导出。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"wesseltl-excel": {
"command": "uvx",
"args": [
"excel-agent-mcp"
]
}
}
}
启动命令uvx excel-agent-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiexcel-agent-mcp0.1.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

excel-mcp

Python MCP License

让你的 AI Agent 读取真实、杂乱的 Excel 文件。 一个 MCP 服务, 可以处理大模型难以应对的情况:多个工作表、位于实际表格上方的标题行,以及 合并单元格。

如果你把电子表格粘贴到提示词中,模型就得猜测数据从哪里开始,以及合并单元格是什么意思,而且 经常会猜错。这个服务会用确定性代码正确读取文件,因此数值准确,模型也不会编造单元格内容。

它解决的问题

真实的电子表格几乎从不会在 A1 单元格处整齐地开始:

A1:  Quarterly Sales Report 2024      <- title, not data
A2:  Generated by finance             <- note, not data
A3:  (blank)
A4:  Region | Product | Units         <- the actual header
A5:  North  | Widget  | 120
...

让大模型读取这样的表格,它往往会把标题当作列名。read_table 会自动检测表头位于第 4 行,并返回整洁的记录。合并单元格(一个值跨越多行)会向下填充,因此行不会丢失所属类别。

它提供给 Agent 的工具

工具功能
list_sheets(path)工作簿中的所有工作表及其大小
preview_sheet(path, sheet, rows)以网格形式显示顶部行,方便 Agent 查看布局
read_table(path, sheet)将实际数据表作为记录返回。还会报告可能出错的判断:header_source(显式指定/自动检测)、header_confidence 和 forward_filled_columns(从合并单元格推断出的值,而非实际读取的值)
sheet_to_csv(path, sheet)将表格转换为整洁的 CSV 文本

开始使用(Claude Desktop)

最快的使用方式是通过 Claude Desktop 这样的 MCP 客户端。只需三步:

1. 安装

pip install "excel-agent-mcp[mcp]"

2. 将其添加到客户端配置中

Claude Desktop 的配置文件位于:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

添加服务:

{
  "mcpServers": {
    "excel": { "command": "excel-agent-mcp" }
  }
}

3. 重启 Claude Desktop。 你会看到一个工具图标出现,表示服务已连接。

就这样。现在可以询问机器上的任意 .xlsx 文件:

You:  What's in /Users/me/reports/sales.xlsx?

Agent (calls list_sheets, then read_table):
  The workbook has one sheet, "Q1". The table starts on row 4 (the rows above
  are a title). 3 rows: North/Widget/2400, South/Widget/3000, South/Gadget/2400.
  Total revenue 7800.

Agent 会读取实际文件,而不是猜测,因此数值准确。

限制文件访问: 若要阻止 Agent 读取某个文件夹之外的内容,请设置 EXCEL_MCP_ALLOWED_DIR。请参阅 SECURITY.md。

与其他 MCP 客户端搭配使用

同一个服务可用于任何 MCP 客户端,只是配置有所不同。请将 excel-agent-mcp 用作命令。

Cursor — ~/.cursor/mcp.json(全局)或 .cursor/mcp.json(每个项目)。格式与 Claude Desktop 相同,并且支持热重载(无需重启):

{ "mcpServers": { "excel": { "command": "excel-agent-mcp" } } }

VS Code / GitHub Copilot — .vscode/mcp.json。请注意键名不同(使用 servers,而非 mcpServers), 并且必须填写 type。工具仅在 Copilot Agent 模式下运行:

{ "servers": { "excel": { "type": "stdio", "command": "excel-agent-mcp" } } }

Windsurf — ~/.codeium/windsurf/mcp_config.json(若文件不存在,请创建)。格式与 Claude Desktop 相同:

{ "mcpServers": { "excel": { "command": "excel-agent-mcp" } } }

Cline — 在 VS Code 的扩展 MCP 设置面板中添加(命令:excel-agent-mcp)。

理解输出

read_table 不仅会返回数据,还会说明结果的可信度,让你既能信任整洁的解析结果,也能核查猜测:

{
  "columns": ["Region", "Product", "Revenue"],
  "rows": [ ... ],
  "header_row": 3,
  "header_source": "auto-detected",
  "header_confidence": 0.42,
  "forward_filled_columns": ["Region"]
}
  • header_source — 如果你指定了表头所在行,则为 "explicit";如果是自动猜测的,则为 "auto-detected"。
  • header_confidence — 自动检测表头时的 0..1 置信度。数值较低表示难以判断; 如果结果看起来不对,请显式传入 header_row。
  • looks_clean + table_warnings — 对整个表格的评估(标记表头置信度低、列未命名、表格大部分为空等情况),与下方按列提供的信号相互独立。
  • forward_filled_columns — 值来自合并单元格的列。这些值是推断得出的(向下复制以填充区域),而非逐个单元格读取,因此请谨慎看待。

我们的想法是:明确展示可能出错的判断,而不是交出看似整洁、却隐藏了猜测的结果。

也可直接在普通 Python 中使用

from excel_mcp import reader

reader.list_sheets("report.xlsx")
reader.read_table("report.xlsx", "Sales")     # {'columns': [...], 'header_source': ..., ...}
reader.sheet_to_csv("report.xlsx", "Sales")

测试

python -m unittest discover -s tests     # builds its own messy xlsx, runs anywhere

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。