Skip to main content
Glama
mcp-excel
by Corvalon

mcp-excel

License: MIT Model Context Protocol

一个 Model Context Protocol 服务器,为 Claude Code(或任何 MCP 客户端)提供对 Excel 工作簿的完整读写访问:工作表、单元格区域、结构化表格、公式、格式以及跨工作簿引用。它使用 ExcelJS 读写磁盘上的真实 .xlsx 文件;无需安装 Excel、无需 Microsoft 账户,也无需云服务。

它作为 stdio 子进程在本地运行,或作为 HTTP/SSE 服务运行(方便通过 Docker 在局域网内与桌面客户端共享一个实例)。

状态: 11 个工具,stdio + SSE 传输,除 npm 外零外部依赖。许可证:MIT。

工具

工具

功能

list_sheets

列出工作簿中的所有工作表,并显示行/列计数

read_range

读取单元格区域;返回值、公式和类型

write_cells

向特定单元格写入值或公式(如果文件/工作表不存在则创建)

write_rows

从起始单元格写入多行数据(批量构建数据集)

create_table

创建带标题、数据和可选列公式的结构化 Excel 表格(ListObject)

create_workbook

创建一个新的空工作簿,包含一个或多个命名工作表

add_sheet

向现有工作簿添加新工作表

delete_sheet

从工作簿中删除工作表

format_cells

对区域应用字体、填充、数字格式、对齐和边框

cross_workbook_reference

从一个工作簿读取数据,并将值(或链接公式)写入另一个工作簿

get_defined_names

列出工作簿中的命名区域和表格名称

所有文件路径参数都通过 path.resolve() 相对于服务器的工作目录进行解析,因此绝对路径最安全。在 Docker(SSE)模式下,路径在容器内相对于挂载的 /data 卷解析(见下文)。

Related MCP server: mcp-xlsx-server

要求

  • Node.js 18 或更高版本(stdio 模式),或

  • Docker(SSE / 共享实例模式)

设置: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 文件非常有用。

  1. 将容器指向存放工作簿的文件夹并启动它:

    MCP_EXCEL_DATA_DIR=/path/to/your/spreadsheets docker compose up -d --build

    compose 文件将该文件夹挂载为容器内的 /data,并监听端口 3001。

  2. 将 SSE 端点添加到你的客户端配置中(如果客户端在另一台机器上,请将主机替换为容器主机的局域网 IP):

    {
      "mcpServers": {
        "excel": {
          "url": "http://localhost:3001/sse"
        }
      }
    }
  3. 由于路径在容器内解析,请相对于 /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 使用。

配置

变量

默认值

用途

MCP_TRANSPORT

stdio

stdio 用于本地子进程,sse 用于 HTTP/SSE 服务

MCP_PORT

3000

SSE 模式的端口(Docker compose 文件使用 3001)

MCP_ALLOWED_HOSTS

localhost,127.0.0.1,::1

SSE 模式的逗号分隔的 Host 头允许列表

MCP_EXCEL_DATA_DIR

./data

在 Docker 容器中挂载为 /data 的主机文件夹

安全

此服务器读写真实文件,并且在 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.

Related MCP Connectors

Related MCP Servers