mcp-excel
mcp-excel
一个 Model Context Protocol 服务器,为 Claude Code(或任何 MCP 客户端)提供对 Excel 工作簿的完整读写访问:工作表、单元格区域、结构化表格、公式、格式以及跨工作簿引用。它使用 ExcelJS 读写磁盘上的真实 .xlsx 文件;无需安装 Excel、无需 Microsoft 账户,也无需云服务。
它作为 stdio 子进程在本地运行,或作为 HTTP/SSE 服务运行(方便通过 Docker 在局域网内与桌面客户端共享一个实例)。
状态: 11 个工具,stdio + SSE 传输,除 npm 外零外部依赖。许可证:MIT。
工具
工具 | 功能 |
| 列出工作簿中的所有工作表,并显示行/列计数 |
| 读取单元格区域;返回值、公式和类型 |
| 向特定单元格写入值或公式(如果文件/工作表不存在则创建) |
| 从起始单元格写入多行数据(批量构建数据集) |
| 创建带标题、数据和可选列公式的结构化 Excel 表格(ListObject) |
| 创建一个新的空工作簿,包含一个或多个命名工作表 |
| 向现有工作簿添加新工作表 |
| 从工作簿中删除工作表 |
| 对区域应用字体、填充、数字格式、对齐和边框 |
| 从一个工作簿读取数据,并将值(或链接公式)写入另一个工作簿 |
| 列出工作簿中的命名区域和表格名称 |
所有文件路径参数都通过 path.resolve() 相对于服务器的工作目录进行解析,因此绝对路径最安全。在 Docker(SSE)模式下,路径在容器内相对于挂载的 /data 卷解析(见下文)。
Related MCP server: mcp-xlsx-server
要求
设置:Claude Code(stdio,本地)
克隆并安装:
git clone https://bitbucket.org/corvalon/mcp-excel.git
cd mcp-excel
npm ci注册服务器。可以通过 CLI 添加:
claude mcp add excel -- node /absolute/path/to/mcp-excel/index.js或手动添加到你的 Claude Code 配置(~/.claude.json):
{
"mcpServers": {
"excel": {
"command": "node",
"args": ["/absolute/path/to/mcp-excel/index.js"]
}
}
}重启 Claude Code。工具将出现在 mcp__excel__* 前缀下。
设置:Claude Desktop(stdio,本地)
将相同的块添加到 Claude Desktop 的配置中(Settings > Developer > Edit Config,这会打开 claude_desktop_config.json):
{
"mcpServers": {
"excel": {
"command": "node",
"args": ["/absolute/path/to/mcp-excel/index.js"]
}
}
}保存并重启。当出现锤子/工具图标时,服务器已连接。
设置:Docker(SSE,共享实例)
运行一个容器,使网络上的任何 MCP 客户端都可以通过 SSE 访问它。这对于在没有 Node.js 的机器上驱动 Excel 文件非常有用。
将容器指向存放工作簿的文件夹并启动它:
MCP_EXCEL_DATA_DIR=/path/to/your/spreadsheets docker compose up -d --buildcompose 文件将该文件夹挂载为容器内的
/data,并监听端口3001。将 SSE 端点添加到你的客户端配置中(如果客户端在另一台机器上,请将主机替换为容器主机的局域网 IP):
{ "mcpServers": { "excel": { "url": "http://localhost:3001/sse" } } }由于路径在容器内解析,请相对于
/data挂载点来指定文件。如果MCP_EXCEL_DATA_DIR是~/spreadsheets,那么在工具调用中~/spreadsheets/2025/Budget.xlsx就是/data/2025/Budget.xlsx。
当不同主机上的客户端通过 SSE 连接时,请设置 MCP_ALLOWED_HOSTS,以便服务器接受请求。在 docker-compose.yml 旁边创建一个 .env 文件:
MCP_ALLOWED_HOSTS='localhost,127.0.0.1,::1,192.168.1.50,my-host.local'容器管理:
docker compose up -d --build # start / rebuild after code changes
docker compose down # stop
docker compose logs -f # tail logs健康检查可在 http://<host>:3001/health 使用。
配置
变量 | 默认值 | 用途 |
|
|
|
|
| SSE 模式的端口(Docker compose 文件使用 |
|
| SSE 模式的逗号分隔的 Host 头允许列表 |
|
| 在 Docker 容器中挂载为 |
安全
此服务器读写真实文件,并且在 SSE 模式下会打开网络端口。请将其视为受信任的本地工具,而不是面向互联网的服务。
文件访问。 工具调用可以读取或写入服务器进程能够访问的任何
.xlsx路径。在 stdio 模式下,这是你的整个文件系统;在 Docker(SSE)模式下,它仅限于挂载的/data卷,因此 Docker 是限制访问的更安全方式。SSE 没有身份验证。 HTTP/SSE 端点监听在
0.0.0.0上,并且不验证调用者身份。仅在受信任的局域网中运行,并通过MCP_ALLOWED_HOSTS(Host 头允许列表)以及你自己的防火墙来限制访问。不要将端口3001暴露到公共互联网。公式是数据,不是代码。 ExcelJS 写入公式字符串;它不执行宏或 VBA,因此打开生成的工作簿不会运行来自此服务器的任何代码。
示例提示
"创建一个新的预算工作簿,包含列 Category、Budget、Actual 和 Difference。"
"读取
Sales.xlsx中的数据,并按区域汇总总计。""在 Q1 工作表的 B 列底部添加一个 SUM 公式。"
"根据这些数据构建一个带总计行的格式化表格。"
"将
Budget.xlsx中的月度总计提取到Report.xlsx的 Summary 工作表中。"
注意事项和陷阱
权限。 一个通配符即可覆盖所有 11 个工具:允许 mcp__<key>__*,其中 <key> 是你注册服务器时使用的名称。如果注册为 excel,那就是 mcp__excel__*。你永远不需要单独枚举工具。
未知参数会被拒绝(自 1.1.0 起)。拼写错误的参数名会以 -32602 unrecognized_keys 失败,并指出该键,每个工具都发布 additionalProperties: false。早期版本会静默丢弃拼写错误并使用默认值运行,从而返回看似正确但实际错误的数据。
公式被存储,而不被计算。 此服务器写入公式文本;它不计算结果。读取公式单元格会返回 =SUM(A1:A2) (result: not calculated),直到文件在 Excel 或 LibreOffice 中打开并保存,才会填充缓存的结果。当你需要计算后的总计时,要么自己读取源单元格并求和,要么先将文件通过电子表格应用程序往返一次。
限制
目前没有任何工具支持:
在工作表中间插入或删除行/列
创建或编辑定义名称
区分表格和定义名称
对于这些需求,请直接使用电子表格库来操作文件。在 Python 中,openpyxl 可以覆盖以上三种情况;使用 load_workbook(path, data_only=False) 加载以保留公式,因为 data_only=True 会返回缓存值,而这些值可能因上述原因而为 None。
许可证
MIT (c) 2026 Corvalon.
This server cannot be deployed
Maintenance
Related MCP Connectors
Parse Excel workbooks, evaluate formulas, trace dependencies and edit workbook models.
Excel analytics: inspect, query (JSON rows), charts, and JSON-to-xlsx workbook writing.
Formula-backed WorkPaper tools for workbook readback, input edits, and JSON persistence.
Convert Apple Numbers (.numbers) to Excel (.xlsx) in the browser — first sheet free. MCP v1.1.0 (Streamable HTTP) exposes four tools: open_numbers2excel (open site / Stripe checkout intents; conversion is browser-local), get_site_info (product overview, pricing, URLs; read-only), get_pro_status (Stripe subscription_id sub_… status), get_unlock_from_session (Checkout session_id cs_… → entitlement). Path A: MCP does not accept or upload files.
Related MCP Servers
- AlicenseCqualityBmaintenanceAutomates Microsoft Excel spreadsheet creation and editing via MCP tools for any MCP-compatible client.37MIT
- AlicenseAqualityDmaintenanceMCP server for reading and writing Excel (xlsx) files using SheetJS, providing tools to list sheets, read data, create files, add sheets, and update cells.54 npmMIT
- FlicenseNot gradedqualityDmaintenanceFast, multi-sheet Excel retrieval and writing via MCP, supporting efficient data access with patch-based navigation and formula support.-
- AlicenseAqualityDmaintenanceEnables reading and writing Excel workbooks (.xlsx) through MCP. Supports listing sheets, tables, pivot tables, reading cell data, exporting to CSV/text/Markdown, and creating/modifying Excel files.14GPL 3.0