Skip to main content
Glama

Draftly (wps-mcp)

简体中文 | English

В WPS Office (Mac) можно запустить настоящую боковую панель чата с ИИ, которая умеет управлять текущим документом, на основе официального JS API объектной модели надстроек + Claude Agent SDK. Это не имитация клавиатуры/мыши, а прямой вызов объектной модели WPS Writer / Spreadsheet / Presentation через MCP-инструменты (Application.CreateTaskPane и т.д.).

Предварительные требования

  • macOS с установленным WPS Office (версия для Mac), хотя бы один раз полностью открытым

  • Node.js 20 и выше

  • установлен и авторизован CLI Claude Code (claude login) — Draftly не управляет собственным API-ключом, а использует состояние входа локального CLI Claude Code. При смене машины / пользователя нужно сначала установить и авторизовать claude CLI на этой машине.

Related MCP server: wps-mcp-server

Установка

git clone <this-repo>
cd wps-mcp
bash scripts/install.sh

Скрипт идемпотентен: повторный запуск после изменения кода и есть процесс обновления. Он:

  1. npm install установит зависимости

  2. сгенерирует локальный общий ключ (.bridge-token, см. ниже «Модель безопасности»)

  3. скопирует файлы надстройки в каталог надстроек WPS (~/Library/Containers/com.kingsoft.wpsoffice.mac/Data/.kingsoft/wps/jsaddons/wps-mcp_)

  4. установит LaunchAgent launchd, чтобы мостовой сервис автоматически запускался при входе в систему и автоматически перезапускался при сбое

После установки:

  1. Полностью перезапустите WPS Office (при первой установке или обновлении ribbon.xml перезапуск обязателен — определения кнопок ленты WPS читает только при запуске, горячее обновление не поддерживается; обновления taskpane.html/main.js применяются автоматически без перезапуска).

  2. В WPS найдите вкладку ленты «WPS-MCP» и нажмите кнопку «Draftly», чтобы открыть боковую панель.

  3. Если подключиться не получается, смотрите журнал: tail -f ~/Library/Logs/wps-mcp.log

Удаление:

launchctl bootout gui/$(id -u)/com.wps-mcp.bridge
rm ~/Library/LaunchAgents/com.wps-mcp.bridge.plist
rm -rf ~/Library/Containers/com.kingsoft.wpsoffice.mac/Data/.kingsoft/wps/jsaddons/wps-mcp_

Модель безопасности

Мостовой сервис прослушивает на локальной машине 127.0.0.1:58892 и обрабатывает WebSocket- и HTTP-запросы. Все точки входа, вызывающие побочные эффекты (два WebSocket-канала, /tool, /mcp), требуют параметр ?token= в URL. Этот токен — локальный общий ключ, генерируемый случайным образом при установке, сохраняемый в файл .bridge-token в корне проекта (не попадает в систему контроля версий). То же значение встраивается в файл js/token.js, разворачиваемый в WPS. Без такой проверки любая веб-страница, открытая на вашем компьютере, сможет напрямую подключиться к этому порту и выдать себя за надстройку/панель, и с помощью MCP-инструментов изменить документ, который вы редактируете. Это не теоретический риск: браузеры не применяют ограничения same-origin к WebSocket-соединениям.

Обзор архитектуры

  • addin/ — JS-надстройка WPS: ribbon.xml (лента), main.js (мост объектной модели), taskpane.html (UI боковой панели чата)

  • server/bridge.js — локальный WebSocket/HTTP-мост, связующее звено между надстройкой и MCP-сервером

  • server/agent.js — обработчик WS /agent боковой панели чата, использующий query() из Claude Agent SDK для управления диалогом

  • server/tools.js + server/index.js — MCP-сервер (stdio), пересылающий вызовы инструментов wps_word_*/wps_et_*/wps_wpp_* в мостовой слой

server/index.js автоматически определяет занятость порта: если 58892 уже занят постоянно работающим экземпляром, он превращается в лёгкий stdio-ретранслятор и пересылает вызовы инструментов, а не перехватывает порт — так дочерние процессы MCP-сервера, порождаемые самим Agent SDK, не конфликтуют с фоновым сервисом.

Разработка

npm test   # node --test,全仓库单测

Строгий TDD: прежде чем менять поведение, напишите падающий тест. Чистая логика (обработка session/host, стриминговые аккумуляторы и т.п.) вынесена в модули, не зависящие от DOM/WS, для удобства модульного тестирования; WS/DOM-клей остаётся тонким и рассчитывает на чтение человеком.

Известные ограничения

  • Пока поддерживается только macOS-версия WPS Office, при этом предполагается стандартный путь Container.

  • Многопользовательский сценарий не реализован — каждый пользователь должен сам установить и авторизовать claude CLI; Draftly не выполняет единую аутентификацию/биллинг.

  • Название бренда «Draftly» — временное; перед официальным релизом рекомендуется проверить доступность товарного знака.

Лицензия

GPL-3.0. Модифицированные версии, основанные на этом проекте, при распространении также должны быть с открытым исходным кодом под лицензией GPL-3.0.

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Related MCP Servers

  • A
    license
    -
    quality
    A
    maintenance
    A local MCP server that lets Claude, Cursor, Codex, or any MCP client work with Office documents on your Mac: evaluate spreadsheet formulas, read/write XLSX and PPTX, extract structured DOCX content, and merge/split/protect PDFs. 100% local, no network calls, no account. 14 tools.
    MIT

View all related MCP servers

Related MCP Connectors

  • Generate PDFs from templates via AI chat. Works with Claude, ChatGPT, Cursor, and any MCP client.

  • AI document editing for agents: draft, edit, export .docx/PDF. 37 MCP tools; agent self-signup.

  • A personal RAG database you build from chat, so AI creates work that sounds like you.

View all MCP Connectors

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/Antares422/draftly-wps'

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