ExcelAI · MCP 接入手册

让 WorkBuddy / Trae / Codex / Cursor / Claude 等 AI 客户端直接读写你的 Excel
v1.1 · 2026-10-09 · 适用 ExcelAI(Windows)· 含 COM 版 与 桥接版 两种接入
Windows 专属 COM 版 · HTTP 直连 桥接版 · stdio 本机回环 · 带令牌 写操作有审计 + 撤销

不确定用哪个版本?看客户端配置里填什么:填一个 URL → COM 版;填 exe 路径 → 桥接版。

1开开关

Excel 插件里打开「智能体接入(MCP)」

2填路径

下面生成器里填桥接程序的位置

3粘贴

贴进你那个客户端的配置文件

4验证

问一句「工作簿里有几张表」

一、开工前先确认三件事

  • ExcelAI 插件已装好并能打开 —— 在 Excel 里能看到 ExcelAI 的功能区(Ribbon)。MCP 能力是插件的一部分,插件没装什么都接不上。
  • 插件侧开关已打开 —— Excel 里点功能区「API设置」→ 设置面板底部「智能体接入(MCP)」→ 打开开关。
    ⚠️ 这个开关关着时,插件根本不会监听端口(不是「开着但拒绝调用」),客户端会报连接失败。这一步最容易漏。
  • Excel 得先开着 —— 插件活在 Excel 进程里,Excel 一关,服务就停。顺序永远是:先开 Excel,再用客户端。
为什么顺序不能反? ExcelAI 是 Excel 的加载项,只能被动等待连接,没法被客户端「启动」。 MCP 客户端普遍支持 stdio(它启动一个子进程来通信),所以中间放了一个 桥接小程序(ExcelAI.McpBridge.exe) 来补上这一段。桥接程序在你打开 Excel 之后才拿得到地址和令牌。

二、30 秒看懂它是怎么连的

  WorkBuddy / Trae / Codex / Cursor …     你的 AI 客户端
              │
              │  stdio(客户端启动子进程,管道收发)
              ▼
  ExcelAI.McpBridge.exe                    桥接程序(随插件发布)
              │
              │  HTTP → 127.0.0.1:17890 + 一次性令牌
              ▼
  ExcelAI 插件内的 MCP 服务                跑在 Excel 进程里
              │
              │  调度回 Excel 主线程(COM 不能跨线程)
              ▼
  Excel 对象模型  →  读数据 / 写单元格 / 建图表 / 改 VBA …

三个关键点,决定了后面所有配置长得都差不多:

  • 所有客户端都只是在「启动一个 exe」 —— 所以配置里永远只有两样东西:command(exe 路径)和 args(留空)。不用装 Node、不用装 Python。
  • 端口和令牌你都不用填 —— 桥接程序自己去 %LOCALAPPDATA%\ExcelAI\mcp-endpoint.json 读,而且令牌每次启动都换,写死在配置里反而会过期。
  • 只监听回环地址 —— 外部机器连不上,只服务本机。

三、生成你的配置(改一处,下面全跟着变)

默认是开发机上的路径。请改成你自己机器上的实际位置;如果安装包把文件放在别处,以安装目录里的 ExcelAI.McpBridge.exe 为准。
不确定它在哪:在文件资源管理器里搜 ExcelAI.McpBridge.exe,右键该文件 → 复制文件地址,粘到上面即可。

① 通用 JSON— Claude Desktop / Cursor / Trae / Windsurf / Cline / WorkBuddy …
{
  "mcpServers": {
    "excelai": {
      "command": "F:\\Excelai2028online\\McpBridge\\bin\\Debug\\ExcelAI.McpBridge.exe",
      "args": []
    }
  }
}
② VS Code / GitHub Copilot— 注意根键是 servers,不是 mcpServers
{
  "servers": {
    "excelai": {
      "type": "stdio",
      "command": "F:\\Excelai2028online\\McpBridge\\bin\\Debug\\ExcelAI.McpBridge.exe",
      "args": []
    }
  }
}
③ Codex CLI— 这个客户端用 TOML,格式完全不同
# 追加到 ~/.codex/config.toml 末尾
# ⛔ 表名是 mcp_servers(下划线),不是 mcpServers
[mcp_servers.excelai]
command = 'F:\Excelai2028online\McpBridge\bin\Debug\ExcelAI.McpBridge.exe'
args = []
⛔ 两个必踩的坑:
· Windows 路径里的反斜杠要写两遍(JSON 里 \ 是转义符)。上面①已经自动帮你转好了;你手改时若看到 F:\Excelai… 只写一个,配置会解析失败。
· 路径里如果有空格,JSON 不用加引号(值本身就在引号里),TOML 用单引号包住即可 —— 上面③已处理好。

四、按你的客户端,照抄一份

点下面的名字切换。ExcelAI 只在 Windows 上跑,所以只列 Windows 路径。

WorkBuddy桌面客户端
就是你现在用的这个。它有自己的配置目录和连接器管理页。
~/.workbuddy/mcp.json (即 C:\Users\<你的用户名>\.workbuddy\mcp.json)
{
  "mcpServers": {
    "excelai": {
      "command": "F:\\Excelai2028online\\McpBridge\\bin\\Debug\\ExcelAI.McpBridge.exe",
      "args": []
    }
  }
}
  1. 保存文件。
  2. 新增的自定义 MCP 不会自动可用 —— 到「连接器管理」页面右上角的自定义连接器入口,找到 excelai,点一次「信任」。

新开一个会话,问「工作簿里有几张表」。

注意:点「信任」这一步不能跳。没信任的话,配置文件看着完全正确,但工具就是不出现在会话里。

五、怎么确认真的通了

最快的一句话验证

在任何已接好的客户端里直接问:

用 excelai 看一下当前工作簿里有几张表,分别叫什么

能列出真实的表名 = 全链路通了。答不上来或说没有这个工具 = 看下一节排错。

命令行直连验证(最硬,绕过客户端)

打开 PowerShell,逐段粘贴:

# 1) 看端点文件在不在(不在 = 插件没监听,回去开 Excel + 打开开关)
Get-Content "$env:LOCALAPPDATA\ExcelAI\mcp-endpoint.json"

# 2) 带着令牌问一次工具列表
$ep = Get-Content "$env:LOCALAPPDATA\ExcelAI\mcp-endpoint.json" -Raw | ConvertFrom-Json
$h  = @{ Authorization = "Bearer $($ep.token)" }
$b  = '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
$r  = Invoke-RestMethod -Uri "http://127.0.0.1:$($ep.port)/mcp" -Method Post -Headers $h -ContentType 'application/json' -Body $b
"可用工具数:" + $r.result.tools.Count
输出「可用工具数:77」这类数字(数字会随版本变,只要 > 0 就是通的)= 插件这一侧完全正常, 问题只可能在客户端那半步。
没带令牌会怎样?一定返回 401 和错误码 -32001 —— 这是设计如此,说明服务活着在正常鉴权。

六、接不上?照这张表查

现象原因怎么办
客户端里看不到任何 excelai 工具 插件开关没开 / Excel 没开 先确认 mcp-endpoint.json 存在(见第五节);没有就回 Excel 打开「智能体接入」开关。改完重启客户端。
报 -32000 找不到 MCP 端点 桥接程序连不上插件 Excel 没开,或插件没加载。打开 Excel 后不用重启客户端,下次调用会自动重连。
报 -32001 未授权 / 401 令牌过期 令牌每次随 Excel 启动更换。桥接程序会自动重读,无需手动改配置;若一直报,重启客户端。
配置保存了但没生效 客户端没重载配置 Claude Desktop 要完全退出(含托盘图标)再开;Cursor/Windsurf 在设置里点刷新;Trae / VS Code 重启窗口。
VS Code 里加了配置工具列表还是空 根键写错了 VS Code 用的是 servers,不是 mcpServers —— 它是唯一一个这么干的,见生成器②。
Codex 报 command not found 或工具不出现 把 JSON 贴进了 TOML 文件 Codex 读 config.toml,表名必须是 [mcp_servers.名字]。codex mcp list 可查看状态。
工具能列出来,但一调用就报权限不足 权限档被关掉了 见第七节。默认全开;被关掉的那一档需要到 mcp-policy.json 里打开。
Excel 重启后客户端突然不通 端口或令牌变了 这是正常的:端点文件已更新。桥接程序会自己重读一次;不行就重启客户端。
Write-Host : 拒绝访问 之类 PowerShell 执行策略 上面那段是交互命令,不用保存成脚本,直接粘到窗口里回车即可。

七、安全:MCP 下没有「弹窗确认」这一步

在插件自己的对话面板里,AI 要写单元格会弹确认框。走 MCP 时不会 —— 客户端直连工具内核, 这类确认框属于对话面板,不在这条链路上。所以插件给了三条兜底,都在本地文件里、改完即生效:

护栏位置作用
可追查%LOCALAPPDATA%\ExcelAI\mcp-audit.log每次调用记录:时间、分类、工具名、成功/失败、参数(截断 600 字)
可回退工具 undo_last_operation单步撤销,连续调用可多步回退。直接让 AI「撤销上一步」即可
可收回%APPDATA%\AIExcelCopilot\mcp-policy.json关掉某一档权限,改完即生效,不用重启插件

权限档怎么收窄(文件不存在 = 全开)

{
  "allow_write": true,
  "allow_vba": false,
  "allow_batch": false,
  "allow_office": true
}
建议:只想让 AI 看看数据的话,把 allow_write / allow_vba / allow_batch 都改成 false。VBA 与批量处理是最危险的一档(改代码、批量动多个工作簿),务必按需开。

八、接上以后,它能干什么

插件的工具会全部暴露给客户端(只有一个例外:remember,那是对话面板的记忆功能,不属于 Excel 操作)。 数量随版本变,别记数字。按用途分五档:

档位权限开关能做什么代表工具
读取始终允许看工作簿结构、列画像、读区域、条件聚合、跨表找关联键get_workbook_summary read_excel_data get_sheet_profile query_data
写入allow_write写单元格/区域、公式、格式、边框、排序、筛选、去重、合并、透视、图表write_range set_format create_chart create_pivot_table
Officeallow_office生成 Word 文档 / PPT、读写外部 Office 文件create_word_document create_presentation read_office_file
VBAallow_vba读工程/模块/窗体、写模块、建改窗体、运行宏、备份还原read_vba_project write_vba_module run_vba_macro
批量allow_batch批量处理多个工作簿、导出 CSVbatch_process_workbooks export_csv
无头场景的一个提醒:AI 不会「先点选一个区域再操作」,所以它会显式传表名和区域地址。 你在提问时最好也说清楚是哪张表 —— 比如「在 销售明细 这张表的 A 列后面插一列」, 比「帮我插一列」稳得多。

COM 版接入(HTTP 直连,无需桥接程序)

COM 版插件把 MCP 服务端直接开在 Excel 进程里,客户端用一个 URL 连它 —— 不需要 ExcelAI.McpBridge.exe,也不用装 Node / Python。 本页只讲 COM 版;要看桥接版,点顶部切到「桥接版」。

1 与桥接版的区别(先看这张表)

对比项COM 版(本节)桥接版(第一~八节)
传输方式Streamable HTTP,客户端直连stdio,客户端启动桥接 exe
客户端里填什么url(一个地址)command + args(exe 路径)
令牌放哪写在 URL 路径末尾不用填,桥接程序自己去读
令牌会不会变不变,固定存在本机,配一次长期用每次启动 Excel 都换,桥接程序自动重读
要不要 Authorization 头不要要(桥接程序自动带)
默认端口8931(可改)17890
怎么判断自己是哪个版本?看客户端配置要不要填 exe 路径 —— 要填就是桥接版; 只要一个 http://127.0.0.1:… 地址就是 COM 版。 也可以看设置页:COM 版在「MCP 服务」分区里会显示一个可复制的连接地址。

2 它是怎么连的

  Codex / WorkBuddy …                      你的 AI 客户端(MCP 客户端)
              │
              │  HTTP(仅本机回环)· POST /mcp/<随机令牌>
              ▼
  ExcelAIPlus(跑在 Excel 进程内)
              │   ├ MCP 服务端
              │   └ ToolCallHandler
              ▼
  当前打开的那个工作簿  →  读数据 / 写单元格 / 建图表 / 做透视 / 跑 VBA …

为什么必须由插件来起服务端:MCP 是「客户端主动连服务端」。 Codex / WorkBuddy 是客户端,而插件寄生在 Excel 里、本来没有端口,谁也连不进来。 所以插件在进程内起了一个回环 HTTP 服务,客户端连它,它再转发给 Excel。

服务端能力只声明 tools(不提供 resources / prompts),协议版本 2025-06-18。

3 开启服务(三步)

① 打开设置

Excel 里点 Ribbon 上的 设置 按钮(或插件设置入口),滚动到 「MCP 服务」 分区。

② 打开总开关

勾选 「允许外部 AI 工具连接并操作当前 Excel」。

这一步很关键:当前权限档是 完全读写、免确认。 连上来的 AI 调 write_cell 会直接写进你的表,不弹任何确认框。只在你信任那个客户端时打开。

③ 记下连接地址

开关打开并 保存 后,分区里会显示:

  • 一个状态点 —— 🟢 正在监听 127.0.0.1:8931 表示已经在跑;🔴 未运行 多数是端口被占用,换个端口再保存即可。
  • 客户端连接地址 —— 形如下面这样,点「复制」拿到它:
http://127.0.0.1:8931/mcp/<你的令牌>

上面 8931 是端口,<你的令牌> 是 32 位十六进制随机串。 它生成一次就固定保存在本机(%LOCALAPPDATA%\ExcelAI\mcp-token.txt),重启 Excel 也不会变 —— 客户端配置一次即可长期用。

还是建议点「复制」拿,别手打:32 位字符打错一位,表现是「地址看着对、就是连不上」,很难查。 地址框下面那行会写明令牌有没有固定住。想换令牌时,点旁边的「重置令牌」(需连点两次确认)。

🔑 地址末尾那段就是访问令牌。它本身就是凭据 —— 拿到这个地址的人就能操作你的表格,不要外传。 怀疑泄露时点「重置令牌」换一份新的,旧地址立刻作废。

关于端口

  • 默认 8931,可在 1024–65535 之间改。
  • 仅监听 127.0.0.1,不对局域网开放。
  • 端口被占用时服务会启动失败(状态点亮红),换个端口重存即可 —— 不会崩。

随时开关

  • 关掉总开关 → 端口立即停止监听(不是「还监听着但拦请求」),连 TCP 握手都建立不了,这是能给出的最强保证。
  • 改完设置 保存即生效,不需要重启 Excel。
  • Excel / 插件退出时自动停止。

4 支持的客户端

任何支持 MCP Streamable HTTP 的客户端都能接。已验证 / 推荐的:

客户端传输方式说明
Codex(CLI / IDE 扩展 / 桌面应用)Streamable HTTP配置最简单,见 5.1
WorkBuddyStreamable HTTP走「连接器 → 自定义连接器」入口,见 5.2
Claude Code / Cursor / Cline 等Streamable HTTP填法大同小异,见 5.3
只支持 STDIO 的老客户端—不支持,本服务不提供 STDIO

5 客户端配置

5.1 Codex

Codex 把 MCP 配置存在 ~/.codex/config.toml(项目级可用 .codex/config.toml)。在文件末尾加上:

[mcp_servers.excel]
url = "http://127.0.0.1:8931/mcp/<你的令牌>"

把 url 换成你在 3 复制到的那串即可。不需要 bearer_token_env_var 或 http_headers —— 令牌已经在 URL 路径里了。

几个可选项(按需加):

[mcp_servers.excel]
url = "http://127.0.0.1:8931/mcp/<你的令牌>"
startup_timeout_sec = 20          # 启动超时,默认 10
tool_timeout_sec = 120            # 工具超时,默认 60 —— 跑大表建议调大
default_tools_approval_mode = "auto"   # 免审批(本服务已是免确认语义)
保存后在 Codex 里输入 /mcp 查看是否连上;或直接问它「用 excel 工具列出当前工作表」。
也可以走图形界面:Settings → MCP servers → Add server,名称随便填,类型选 Streamable HTTP,把地址贴进 URL 即可。

5.2 WorkBuddy

WorkBuddy 走 连接器 入口:

  1. 打开 连接器管理 页面。
  2. 找到右上角的 自定义连接器 入口(或「添加 MCP 服务」)。
  3. 填名称 + 类型选 HTTP / URL,把 3 复制的地址贴进 URL。
  4. 保存后按提示点「信任」启用。
WorkBuddy 的官方文档目前没有覆盖自定义 MCP 的字段细节,界面名称可能随版本变化,以当前客户端实际显示为准。 如果它接受 JSON 配置,用 5.3 那份即可。

5.3 其他 MCP 客户端(通用写法)

多数客户端用 mcpServers 这一段 JSON:

{
  "mcpServers": {
    "excel": {
      "type": "http",
      "url": "http://127.0.0.1:8931/mcp/<你的令牌>"
    }
  }
}

要点:

  • 不要填 command / args —— 那是 STDIO 用的,本服务是 HTTP。
  • 不带 Authorization 头,令牌在 URL 里。
  • 有的客户端把 type 写作 "streamable-http" 或 "sse",按客户端要求填。

6 怎么用

连上之后直接用自然语言,不需要记工具名。

6.1 先摸清结构,再动手

好的开场是让 AI 先看:

用 excel 工具看一下当前工作簿有哪些表、各多少行。

它会调 get_workbook_summary / get_sheet_profile / inspect_current_data。 之后你说「把 B 列的空值填成上一行的值」这类话,它才知道该动哪儿。

6.2 典型任务示例

你说的话它会做的事
「把订单表按金额从高到低排序,前 20 行标黄」multi_sort → color_range
「给每个销售区域做一张柱状图」group_and_summarize → create_chart
「这两列日期格式不统一,规整成 yyyy-mm-dd」normalize_dates
「找出金额的异常值,单独列到新表」detect_outliers → create_sheet → write_range
「做个透视表:部门 × 月份,求和金额」create_pivot_table
「按部门算平均薪资,只看超过 1 万的」advanced_query
「帮我写个宏,把当前表导出成 CSV」vba_add_code → vba_run_macro
「刚才那步不对,撤销」undo_last_operation

6.3 两个使用建议

  • 改之前先让它「看一眼」:AI 看不见你的屏幕,只能通过工具读。 让它先 get_range_preview 或 get_sheet_profile,比上来就写要靠谱得多。
  • 大改动前先自己备份,或者让它先 preview_write_range 看差异。 免确认意味着没有「要不要覆盖」这一问。

7 支持的功能(完整工具表)

服务端一共暴露 85 个工具。工具表和对话框里的 AI 用的是同一份定义 (都来自 ToolCallHandler.GetToolDefinitions),所以能力与插件本体基本一致 —— 不是另起一套,MCP 只是把同一张表换了个协议发出去(另有两处刻意的删减,见 7.0)。

7.0 数量口径与两类被剔除的工具

环节数量
工具表里的全部名字(属性 72 + MakeTool 24 + 内联 .Name 68,去重)102
其中真能被 ExecuteToolCall 分发的101
减:死工具(batch_process_workbooks,见 ①)1
减:OfficeCLI 一族(能执行,但 MCP 刻意不提供,见 ②)16
MCP 实际暴露85
数量口径由 vbcheck/check_mcp_tool_reach.py 守着 —— 上面的数字是它算出来的,不是手抄的,避免文档里的数悄悄过期。
(早前写 89 是错的:那是显示名表的条数,被误当成了工具数。)

① batch_process_workbooks —— 列不出来,因为调不动

它(批量合并文件夹内的 Excel)不在 MCP 工具表里,但在对话框里能用。

原因:它挂在对话框的编排层执行(WebChatControl.xaml.vb 里 Await HandleBatchProcessAsync), 因为要弹一个文件夹选择框让用户选目录。MCP 走的是同步分发链(McpBridge.InvokeTool → ExecuteToolCall), 到不了那里,硬调只会得到「未知工具」。

列出来却调不动,比不列出来坏得多 —— 提示词主动教模型用它,模型调了报错、发现它明明在列表里、于是再调,白烧轮次。所以 MCP 侧直接不列。
也就是说:除了这一个,对话框能做的 MCP 都能做。想通过 MCP 批量合并文件夹,目前得绕道 —— 让 AI 用 read_excel_data 逐个读再 write_range 汇总,或干脆在插件对话框里操作。

② OfficeCLI 一族 —— 能调,但 MCP 不提供

officecli_* 那 16 个工具也不在 MCP 工具表里,但它们在对话框里能用。

这不是因为「它们坏了」,而是语义不是一回事:MCP 服务的作用域是「操作当前正在运行的这个 Excel」, 而 OfficeCLI 是外部进程去读写磁盘上的文件。混在同一张工具表里,外部 AI 会挑到它去改用户没打算改的文件。

两道门都是关着的,防的不是同一件事:

  • 工具表不列它们(GetToolDefinitions 的 mcpReachableOnly 分支里整族摘掉);
  • 执行侧再拦一道(McpBridge.InvokeTool 里在碰 COM 之前就拒)—— 客户端会缓存 tools/list,模型也可能凭上一轮记忆直接调,只靠不列挡不住。
需要处理磁盘上的别的 Office 文件时:打开插件对话框 → 选「外部工作文件」→ 那一批工具就会出现在对话里。那里有用户明确的选择动作,不会误伤当前表。

7.1 读取与探查

工具名功能
get_workbook_summary获取工作簿概要
list_workbook_sheets列出工作表
get_sheet_profile工作表画像
get_range_preview区域预览
read_excel_data读取数据
inspect_current_data探查当前表
analyze_columns列画像分析
list_definitions查看已定义口径

7.2 写入与编辑

工具名功能
write_cell写入单元格
write_formula写入公式
write_range批量写入
preview_write_range预览写入差异
clear_range清空区域
find_and_replace查找替换
set_format设置格式
beautify_table一键美化表格(套用整套样式)
set_borders设置边框
color_range批量着色
apply_conditional_format条件格式
set_data_validation数据验证
merge_cells / unmerge_cells合并 / 取消合并
auto_fit_columns / auto_fit_rows自适应列宽 / 行高
freeze_panes冻结窗格

7.3 工作表与结构

工具名功能
create_sheet / delete_sheet / rename_sheet / copy_sheet新建 / 删除 / 重命名 / 复制工作表
split_sheet / merge_sheets拆分 / 合并工作表
insert_rows / insert_columns插入行 / 列
delete_rows / delete_columns删除行 / 列
sort_data / multi_sort排序 / 多级排序
auto_filter / clear_filter筛选 / 清除筛选
group_and_summarize分组汇总
remove_duplicates删除重复项

7.4 数据分析

工具名功能
query_data聚合查询
advanced_query高级查询(分组聚合 / 明细)
detect_outliers异常值检测
detect_relationships跨表关联键探测(找候选键 + 重合度)
join_and_analyze跨表关联并聚合(关联后可直接出结果)
group_and_summarize分组汇总
define_metric / delete_definition定义业务口径 / 删除口径

7.5 数据清洗

工具名功能
clean_whitespace清理首尾空格
convert_text_to_number文本转数字
normalize_dates规范日期
split_column / merge_columns拆分列 / 合并列

7.6 可视化与看板

工具名功能
create_chart创建图表
create_pivot_table数据透视表
create_native_dashboard生成原生数据看板

7.7 流程与撤销

工具名功能
submit_plan提交执行计划
review_changes复核本轮改动
undo_last_operation撤销上一步
undo_turn撤销本轮改动

7.8 VBA(完全读写档下全部开放,共 23 个)

工具名功能
vba_add_code写入 VBA 代码
vba_run_macro运行 VBA 宏
vba_import_component导入 VBA 组件
vba_list_components列出组件
vba_get_module_code读取模块代码
vba_get_macro_infos / vba_get_macro_code读取宏信息 / 代码
vba_update_macro / vba_delete_macro更新 / 删除宏
vba_remove_component移除组件
vba_get_references / vba_set_reference读取 / 设置 VBA 引用
vba_project_index大型项目结构索引
vba_get_diagnostics / vba_clear_diagnostics读取 / 清空运行诊断
vba_lint代码体检
vba_get_form_info / vba_add_form_control读取窗体信息 / 添加窗体控件
vba_set_form_control_property / vba_set_form_style设置控件属性 / 窗体样式
vba_save_lesson / vba_recall_lesson记录 / 检索经验教训
vba_log_progress / vba_get_project_log记录 / 读取项目进度
另有一个 create_vba_form(创建窗体)属于基础工具集,不在上面这批里。

7.9 外部 Office 文件(OfficeCLI,共 16 个)—— MCP 不提供

读写磁盘上别的 Office 文件(不是当前工作簿):

officecli_get_status、officecli_get_capabilities、officecli_get_schema、 officecli_inspect_file、officecli_validate_file、officecli_query_file、 officecli_get_element、officecli_modify_copy、officecli_batch_modify_copies、 officecli_batch_modify_selected、officecli_create_presentation、 officecli_get_selected_files、officecli_run_command、officecli_batch、 officecli_watch_preview、officecli_unwatch_preview。

MCP 侧整族不暴露、也不执行,理由见 7.0 ②。这一族在对话框里照旧可用:选「外部工作文件」时只暴露这批工具,防止误改当前表。

8 安全边界

服务做了三重防护:

  • 只绑 127.0.0.1 —— 非回环地址的请求一律 403,不对局域网开放。
  • 校验 Origin 头 —— 拦截恶意网页的跨站请求(DNS rebinding)。没有 Origin 的原生客户端正常放行。
  • 路径随机令牌 + 定长比较 —— 令牌不对一律回 404(不回 401,不告诉扫描者这儿有个服务)。

另外:

  • 总开关关闭 = 端口真的不监听。
  • 每个请求都记一笔(最近 20 条),设置页可以看「最近发生了什么」。
  • 令牌固定保存在本机(%LOCALAPPDATA%\ExcelAI\mcp-token.txt)—— 重启 Excel 不会变,客户端配置长期有效。只有在设置页点过「重置令牌」之后旧地址才会作废,届时回设置页重新复制即可。
仍然要注意:这套防护的定位是「防止陌生人碰你的表」,不是「可以放心把地址发群里」。 权限档是免确认的,拿到地址 = 拿到控制权。

9 接不上?照这张表查

现象原因 / 处理
状态点 🟢 但客户端说连不上检查客户端填的完整 URL(含末尾令牌)。复制时别漏字符。
状态点 🔴「未运行 —— 端口可能被占用」换个端口(如 8932)重新保存。
设置页开关打开了但状态没变需要保存才生效(页面会提示「正在保存设置…」)。
客户端报 404URL 里的令牌作废了(你点过「重置令牌」)→ 回设置页点「复制」拿新地址。若地址框下提示「仅本会话有效」,说明令牌写不进 %LOCALAPPDATA%\ExcelAI\,检查一下那个目录的权限。
客户端报 403请求带了非本机的 Origin,或来自非回环地址。
刚还好好的,突然连不上多半是点过「重置令牌」(旧地址当场作废)→ 回设置页重新复制。若近期没重置过,先看状态点还在不在跑。
工具调用超时大表操作较慢。Codex 侧把 tool_timeout_sec 调大(如 120)。
写入几百行时特别慢 / 卡死AI 很可能在循环调 write_cell 逐格写。每次调用都是一次独立往返,500 行 = 500 次。让它改用 write_range 一次写完整块 —— 明确要求它「用 write_range」。
AI 说「无法连接 Excel」确认 Excel 已打开、加载项在运行;重启一次 Excel 再试。
改东西没反应检查最近调用列表里有没有记录 —— 有记录说明请求到了,看返回内容里的错误。

10 一页速查

1. 设置 → MCP 服务 → 打开开关
2. 填端口(默认 8931)→ 保存
3. 点「复制」拿到连接地址
4. 客户端配置:
     Codex →  ~/.codex/config.toml
              [mcp_servers.excel]
              url = "<粘贴地址>"
     其他  →  mcpServers JSON,type: "http",url: <粘贴地址>
5. 用完关开关 → 端口立刻停止监听
能力:85 个工具,与插件对话框里的 AI 完全同源(同一份 GetToolDefinitions)。 唯一例外是 batch_process_workbooks —— 它靠弹文件夹选择框取路径,MCP 下用不了,已剔除。
权限:完全读写、免确认。只在你信任客户端时开启。