1. 为什么要在 Cursor 里让 AI 直接操控 WPS
先说清楚这套方案到底在解决什么问题。平时我们用 AI 写文档,流程基本是:让模型生成一段文字,复制,切到 WPS,粘贴,再手动调格式。表格更麻烦,AI 给你一段 Markdown 表格,你还得自己往单元格里填。整个过程 AI 只负责「想」,动手的活还是人干。
Cursor MCP 配置 AI 操控 WPS 这套玩法,核心是把「动手」这一步也交给 AI。你在 Cursor 的 Agent 里说一句「帮我把当前文档加个一级标题,正文改成微软雅黑 11 号、1.5 倍行距」,它就直接去操作你已经打开的那个 WPS 窗口,标题、字体、行距当场就变了。你眼睛看到的文档,就是 AI 正在改的那一份。
这里的关键角色是 MCP(Model Context Protocol)。你可以把它理解成 Cursor 和外部工具之间的一套「插座标准」。Cursor 本身不会操作 WPS,但它能通过 MCP 协议去调用一个叫 wps-office-mcp 的本地服务,这个服务再通过 Windows 的 PowerShell + COM 通道,去指挥当前打开的 WPS。整条链路是:Cursor Agent → MCP 服务(Node.js 进程)→ PowerShell COM → WPS 加载项 → 你的文档。
适合谁用?三类人最合适。第一类是经常要批量做 Word 排版、Excel 数据整理、PPT 框架的办公族,重复劳动多;第二类是写报告、做周报月报的人,格式要求固定但每次都要手动调;第三类是想尝鲜 MCP 生态的开发者,WPS 这套正好是个「看得见效果」的练手场景。
和「用 Python 直接改 docx 文件」有什么区别?Python 那种方式是在后台改磁盘上的文件,docx 本质是个压缩包,改起来快,但复杂排版、图表、批注经常力不从心,而且改完你得重新打开文件才看得到。MCP 这套是「真的在驱动你打开的 WPS」,适合改格式、动图表、写批注这类必须在软件界面里完成的活。两者不冲突,看场景选。
下面从环境准备一路写到验证成功,每一步都给可复制的命令和配置。踩过的坑我也会标出来,尤其是那个让很多人卡住的 logger.ts 改动。
2. 前置准备:Node.js、WPS 与 wps-skills 项目获取
动手之前先把环境对齐,不然后面报错会很难定位。这一节把需要装的东西、版本要求、项目怎么拿,一次讲清楚。
2.1 环境要求清单
WPS Office 已安装,个人版或专业版都行,标准是能正常打开文字、表格、演示三种文档。WPS 装在 C 盘还是 E 盘不影响,加载项和 MCP 主要依赖当前用户的 AppData 目录。
Node.js 版本要 ≥ 18,推荐用 LTS。我实测时用的是 v24,没问题。装完在终端敲一句验证:
node -v能打印出版本号就对了。如果提示node 不是内部或外部命令,说明 Node 没进 PATH,重装时勾选「Add to PATH」,或者手动把 Node 安装目录加进环境变量。
Git 用于克隆仓库。没有 Git 也行,直接去 GitHub 下载 ZIP 解压,效果一样。Cursor 要已安装,并且你有权限编辑它的用户级 MCP 配置。
2.2 获取 wps-skills 源码
把仓库克隆到一个固定目录,路径自己定。下面以C:\Users\<用户名>\Desktop\WPS\wps-skills-main为例:
cd C:\Users\<用户名>\Desktop\WPS git clone https://github.com/lc2panda/wps-skills.git如果你是从 GitHub 下载 ZIP 解压的,文件夹名可能是wps-skills-main。后文里凡是出现「项目根目录」,你都替换成自己的实际路径。
克隆完进项目根目录看一眼,应该能看到这几个文件夹:wps-office-mcp、wps-claude-addon、scripts、skills。wps-office-mcp是 MCP 服务端,wps-claude-addon是 WPS 加载项,scripts里有一键安装脚本。结构对不上说明下载不完整,重新拉一次。
2.3 这套方案的三层结构
理解结构能帮你排错。整套东西是三层叠起来的:
第一层,Cursor 里的「遥控器」——wps-office-mcp,用 Node 跑。Cursor 通过它把你说的话变成一条条指令,每条指令对应一个wps_开头的工具,比如改单元格、插段落、调格式。
第二层,WPS 里的「接收器」——加载项,文件夹名一般是wps-claude-addon。装好后 WPS 顶部会出现「Claude 助手」选项卡,它负责跟已经打开的 WPS 打交道,不是另起一个假 Word。
第三层,Windows 上的「传话通道」——PowerShell + COM。Cursor 不直接摸你的文档文件,而是让系统去跟「当前这个 WPS 窗口」说话,就像以前用宏、用脚本控制 Office 一样,只是现在换成了 AI 在点。
三层任何一层断了,工具调用都会失败。后面排错时,先判断是哪一层的问题,能省很多时间。
3. 可复制配置:一键安装脚本与 Cursor MCP 注册
这一节是全文的核心操作区,给的都是能直接复制的片段。分两步:先在项目里跑一键安装脚本,再手动往 Cursor 里注册 MCP。
3.1 一键安装脚本
在项目根目录执行:
cd <你的项目根目录> powershell -ExecutionPolicy Bypass -File .\scripts\auto-install.ps1这个脚本大致会做四件事:检查 Node.js 版本;在wps-office-mcp里执行npm install和npm run build;向%USERPROFILE%\.claude\settings.json写入wps-officeMCP 配置(主要供 Claude Code 用);把加载项复制到 WPS 的 jsaddons 目录并维护publish.xml。
成功时末尾会出现Installation Complete。如果卡在某一步,看下面的常见问题。
踩坑点:jsaddons 目录不存在。脚本在第 5 步会往%APPDATA%\kingsoft\wps\jsaddons复制加载项。如果这个目录还没被创建,脚本会报错:
[ERR] WPS add-on directory not found: C:\Users\...\AppData\Roaming\kingsoft\wps\jsaddons原因是 WPS 虽然装了、也用过,但有时不会自动创建jsaddons文件夹。这跟 WPS 装在哪个盘无关,用户级加载项始终落在当前用户的Roaming\kingsoft\wps\下。手动建一下再跑脚本:
New-Item -ItemType Directory -Path "$env:APPDATA\kingsoft\wps\jsaddons" -Force3.2 在 Cursor 中注册 MCP
注意:auto-install.ps1不会修改 Cursor,这一步必须手动做。打开 Cursor 的用户级 MCP 配置文件,在mcpServers里加一项。路径改成你自己的dist\index.js绝对路径:
{ "mcpServers": { "wps-office": { "command": "node", "args": ["C:\\Users\\你的用户名\\Desktop\\WPS\\wps-skills-main\\wps-office-mcp\\dist\\index.js"] } } }如果文件里已经有其他 MCP,只需在mcpServers里追加"wps-office": { ... }。注意上一项末尾要加英文逗号,保持 JSON 合法,否则整个配置会解析失败。
关于 command 用 node 还是绝对路径。如果 Cursor 启动子进程时找不到node(PATH 不完整),把command改成node.exe的绝对路径:
"command": "C:\\Program Files\\nodejs\\node.exe"保存后完全重启 Cursor,在「设置 → MCP」里确认wps-office已连接。这里三件套要齐全:Base URL 指向本地 MCP 服务、Key 由 MCP 进程内部管理、Model ID 在 Cursor 侧选择。MCP 这套不像 HTTP API 那样显式填 Key,但概念上是一样的——Cursor 通过配置找到服务,服务再对接模型。
3.3 改一处代码让 Cursor 能连上
这一步是很多人卡住的地方。默认的 logger 配置会把日志写到 stdout,而 MCP 协议要求 stdout 只传协议数据,日志必须走 stderr,否则 Cursor 会报连接错误。
用 Cursor 或任意编辑器打开这个文件:
<项目根目录>\wps-office-mcp\src\utils\logger.ts按Ctrl+F搜索transports,你会看到transports: [下面排着几段new winston.transports....。找到第一块控制台输出,有两种写法:
写法 A(需要改):里面是new winston.transports.Console({。 写法 B(已经改好):里面是new winston.transports.Stream({且下一行有stream: process.stderr。
如果是写法 B,跳过改动,直接编译。如果是写法 A,选中并删除从new winston.transports.Console({开始到与它成对的}),为止的整段(注意包含最后的逗号,后面往往还有 File 之类的配置,别删错)。在原位置粘贴:
// 控制台日志:固定写到 process.stderr new winston.transports.Stream({ stream: process.stderr, format: winston.format.combine( winston.format.colorize({ all: true }), winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), wangFormat ), }),保存后重新编译,否则 Cursor 还在用旧的dist:
cd <项目根目录>\wps-office-mcp npm run build看到没有报错、命令结束即可。确认生成了<项目根目录>\wps-office-mcp\dist\utils\logger.js。然后完全退出 Cursor(不是只关窗口,尽量从托盘也退出),再打开,看wps-office是否不再报错。
如果npm run build报错,先在wps-office-mcp目录下执行npm install再npm run build。仍失败就把完整英文报错复制下来,去项目 GitHub 的 Issues 里搜。
4. 验证请求:让 AI 真的操控 WPS 文档
配置完不算成功,得实际跑一遍确认链路通了。这一节给自检清单和三类文档的验证指令。
4.1 安装后自检清单
先做静态检查,四项都对上再联调:
文件存在:<项目根目录>\wps-office-mcp\dist\index.js。 WPS:完全退出后重新打开,打开任意文字/表格/演示文档,功能区出现「Claude 助手」(或英文 Claude Assistant),连接状态显示 PowerShell COM 桥接、初始化完成。 Cursor:MCP 列表中wps-office无红点,可展开查看工具列表。 联调:在 WPS 中保持目标文档打开且为当前窗口,在 Cursor Agent 里发起自然语言指令,允许调用wps-office工具。
4.2 Word 文档验证
先打开一个 WPS Word 文档,然后在 Cursor Agent 里发指令。下面这条可以直接复制:
帮我完成当前 WPS Word 文档的初始化排版:在文档开头插入一级标题「WPS-Skills 与 Cursor MCP 联动测试报告」,字体微软雅黑、加粗、居中,字号 24,颜色深蓝,标题下方加一条黑色细横线。横线下方插入三段正文,内容分别是测试目的、测试目标、测试环境说明。所有正文统一微软雅黑、11 号、1.5 倍行距、首行缩进 2 字符,段落加黑色上下边框,第一段加灰色底纹和批注「MCP 工具自动生成」。
发出去后观察 WPS 窗口,标题、横线、正文格式应该逐项出现。如果只动了一部分,说明部分工具调用成功,检查是不是某条指令超出了加载项支持范围。
4.3 Excel 表格验证
打开一个 WPS 表格文档,发这条:
操作当前 WPS 表格,生成员工信息统计表。A1 到 E1 依次填员工编号、姓名、部门、岗位、月薪,表头加粗、微软雅黑、12 号、浅蓝背景、居中。下方填 5 行模拟数据。然后在 E8 填「合计」、E9 填「平均工资」,E8 自动算 E2:E6 月薪总和,E9 算平均值,E8:E9 加粗、红色、保留 2 位小数。最后给 A1:E9 加全边框。
这条能验证单元格写入、格式设置、公式计算三类能力。公式那步如果没生效,检查是不是把公式当成了纯文本写入。
4.4 PPT 演示验证
打开一个 WPS 演示文档,发这条:
创建一个 PPT 框架,主题「AI 赋能办公自动化」。第 1 页标题页,主标题「AI 赋能办公自动化」,副标题「未来工作方式的变革与机遇」。第 2 页目录页,四个目录项:行业趋势与挑战、核心技术解析、应用场景展示、未来发展展望。第 3 页内容页讲行业趋势。第 4 页图文页讲核心技术。第 5 页结束页,居中大字「感谢观看」,下方小字「Q&A」。统一标题字体思源黑体 Bold 32 号,内容字体思源黑体 Regular 16 号。
PPT 的验证重点是页面创建和主题应用,如果页面出来了但字体没统一,多半是字体名在系统里对不上,换成系统已装的字体再试。
5. 本篇常见错误排查
配置过程中最容易撞上的几个报错,这里对照真实现象给处理方向。先看速查表:
| 现象 | 可能原因 | 处理方向 |
|---|---|---|
| 脚本报 jsaddons 不存在 | 目录未创建 | 手动建目录后重装 |
| Cursor MCP 红色 Error | stdout 被日志占用,或 node 不在 PATH | 改 logger.ts;command 改用 node 绝对路径 |
| WPS 无「Claude 助手」选项卡 | 加载项未复制或 publish.xml 未注册 | 检查 wps-claude-addon 与 publish.xml,重启 WPS |
| 工具调用无效果或返回空 | 未打开对应类型文档 | 打开文字/表格/演示并置于前台 |
| npm run build 失败 | 依赖或 TypeScript 问题 | 删 node_modules 与 dist 后重装依赖再编译 |
5.1 401 与 local proxy failed
如果你在 Cursor 里看到类似401 Unauthorized或local proxy failed的报错,先分清是 MCP 层还是模型层。MCP 层的 401 通常是配置里的服务地址或凭据不对,检查mcpServers里的路径是否指向真实存在的dist\index.js。local proxy failed多半是本地 MCP 进程没起来,去 Cursor 的 MCP 面板看进程状态,或者手动在终端跑一次node <项目根目录>\wps-office-mcp\dist\index.js,看有没有报错输出。
5.2 reading choices 报错
reading choices这类报错一般出现在模型返回结构不符合预期时。MCP 工具调用要求模型输出结构化的 tool call,如果模型侧配置不对,Cursor 解析不了就会报这个。检查 Cursor 里选的模型是否支持 function calling,以及 MCP 工具列表是否正常加载。工具列表为空的话,模型根本不知道有哪些工具可用。
5.3 OAuth 相关报错
MCP 服务本身不走 OAuth,但如果你在 Cursor 里同时配了其他需要 OAuth 的 MCP,可能会互相干扰。看到 OAuth 报错先确认是不是wps-office这一项引起的,把其他 MCP 临时禁用,单独测wps-office。确认是它的问题再回来查配置。
5.4 工具调用返回空
最常见的原因是没打开对应类型的文档。wps_工具是操作「当前活动窗口」的,你没开 Word 文档却让它插段落,自然返回空。另一个原因是文档没置于前台,被其他窗口挡住了。操作前把目标文档点一下,确保它是当前活动窗口。
6. 长期使用建议与接入入口
跑通之后,这套配置可以长期用。几个实用建议:把常用的排版指令存成 Cursor 的 prompt 片段,下次直接调用;WPS 加载项更新后可能需要重新复制到 jsaddons,升级 WPS 后如果选项卡消失,重跑一次安装脚本;wps-office-mcp的源码改动后记得npm run build,否则 Cursor 用的还是旧 dist。
如果你想把模型调用也统一管理,TaoToken 提供了模型对话、Coding Plan、API Keys 和接入文档几个入口,按需取用:
- 想先试试模型对话效果:https://taotoken.net/api?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite
- 长期编码、跑 Agent 场景,看 Coding Plan:https://taotoken.net/api?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite
- 管理密钥进控制台:https://taotoken.net/api?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite
- 创建和查看 API Keys:https://taotoken.net/api?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite
- 接入文档:https://taotoken.net/api?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
- Claude Code 相关接入:https://taotoken.net/api?utm_source=taotoken_aicg_blog_end&utm_content=claudecode-anthropic&utm_campaign=rewrite
官网入口:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
最后给个最小命令备忘,复制粘贴就能用:
# 1. 创建 jsaddons(若不存在) New-Item -ItemType Directory -Path "$env:APPDATA\kingsoft\wps\jsaddons" -Force # 2. 进入项目根目录后一键安装 cd <项目根目录> powershell -ExecutionPolicy Bypass -File .\scripts\auto-install.ps1 # 3. 仅重新编译 MCP(更新代码或改过源码后) cd <项目根目录>\wps-office-mcp npm run build整套流程走下来,最花时间的其实是 logger.ts 那处改动和 Cursor 的 MCP 注册,其余都是一次性配置。配好之后,日常办公里那些重复的排版、填表、做 PPT 框架的活,就可以直接交给 Cursor 里的 Agent 去点了。