Skip to main content
Glama
Corvalon
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.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Corvalon/mcp-excel'

If you have feedback or need assistance with the MCP directory API, please join our Discord server