概览
dsh-wps
WPS / 金山文档 cloud-docs integration for DeepSeek Harness: official SkillHub MCP (https://mcp-center.wps.cn/skill_hub/mcp), custom browser authorization (auth-guide + exchange-poll token), WPS cloud-doc tools under mcp__wps__*, wps_status/wps_oauth_start/wps_test helper tools, and a web settings panel
README / ZH
插件文档
English | 中文
dsh-wps
DeepSeek Harness(DSH)WPS / 金山文档云文档能力集成插件。 装上后,你可以在 DSH 对话里用自然语言操作 WPS 云文档:列目录、搜索、读取、创建、上传/下载云文档,以及文字/表格/演示/PDF 的内容读写。
它做什么
- 连接金山文档官方 SkillHub MCP(
https://mcp-center.wps.cn/skill_hub/mcp)。 - 通过自定义浏览器授权(auth-guide + exchange 轮询拿 token,非标准 OAuth)登录你的 WPS 个人账号。
- 授权后把官方 MCP 的工具动态注册为
mcp__wps__<名称>(云盘 / wps / sheet / wpp / dbsheet / pdf / form / aippt 等)。 - 提供 4 个帮助工具
wps_status/wps_oauth_start/wps_test/wps_clear,并带 Web 设置面板「WPS」。
安装(npm)
dsh plugin --profile web add dsh-wps
# 或从 Git:
# dsh plugin --profile web add github.com/zhengjy01/dsh-wps
重启后触发授权:浏览器会打开 WPS 登录页,用个人 WPS 账号登录授权(企业账号会被拒绝)。之后即可直接说「列一下我的 WPS 云文档根目录」。
使用(示例)
| 你说的话 | 调用 |
|---|---|
| 「看看我最近的 WPS 文件」 | mcp__wps__list_latest_items |
| 「列我的云文档根目录」 | mcp__wps__list_my_files |
| 「搜含『周报』的文件」 | mcp__wps__search_files |
| 「读这个文档/表/演示」 | read_file / sheet.get_range_data / read_slide |
| 「新建一个 docx,内容是……」 | create_file_with_content |
| 「把这个演示导出 PDF」 | wpp.export.export.pdf |
全部工具名以 wps_test 实际列出为准(共 558 个)。
授权(实现要点)
mcp-center.wps.cn/.well-known/oauth-authorization-server 返回 404,说明 WPS 不用标准 MCP OAuth 发现,而是自定义流程:生成 auth_code → 打开 https://mcp-center.wps.cn/kdocs-auth/auth-guide?auth_code=<uuid> → 用户登录 → 每秒轮询 POST https://api.wps.cn/office/v5/ai/skill_hub/wps_auth/exchange(body {code})直到 {code:200, token}。403=企业账号被拒(用个人号)、409=已取消。token 作为每次 JSON-RPC 调用到 SkillHub MCP 的 Bearer 凭据。
目录结构
dsh-wps/
├── src/
│ ├── index.ts # cordis 插件入口(apply + 帮助工具 + 公告)
│ ├── store.ts # token 存储(~/.dsh/dsh-wps.json,0600)
│ ├── auth.ts # 浏览器授权(auth-guide + exchange 轮询)
│ ├── mcp.ts # JSON-RPC-over-HTTP MCP 客户端 + 动态注册 mcp__wps__*
│ ├── routes.ts # /api/dsh-wps/*(设置面板)
│ └── client/ # Web 设置面板「WPS」
├── cordis.patch.yml # bundle patch(insert wps 行)
├── tsdown.config.ts # host + client bundle 构建
└── package.json # dsh.bundle.patch 声明
License
MIT
