draftly-wps
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. При смене машины / пользователя нужно сначала установить и авторизоватьclaudeCLI на этой машине.
Related MCP server: wps-mcp-server
Установка
git clone <this-repo>
cd wps-mcp
bash scripts/install.shСкрипт идемпотентен: повторный запуск после изменения кода и есть процесс обновления. Он:
npm installустановит зависимостисгенерирует локальный общий ключ (
.bridge-token, см. ниже «Модель безопасности»)скопирует файлы надстройки в каталог надстроек WPS (
~/Library/Containers/com.kingsoft.wpsoffice.mac/Data/.kingsoft/wps/jsaddons/wps-mcp_)установит LaunchAgent
launchd, чтобы мостовой сервис автоматически запускался при входе в систему и автоматически перезапускался при сбое
После установки:
Полностью перезапустите WPS Office (при первой установке или обновлении
ribbon.xmlперезапуск обязателен — определения кнопок ленты WPS читает только при запуске, горячее обновление не поддерживается; обновленияtaskpane.html/main.jsприменяются автоматически без перезапуска).В WPS найдите вкладку ленты «WPS-MCP» и нажмите кнопку «Draftly», чтобы открыть боковую панель.
Если подключиться не получается, смотрите журнал:
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.
Многопользовательский сценарий не реализован — каждый пользователь должен сам установить и авторизовать
claudeCLI; Draftly не выполняет единую аутентификацию/биллинг.Название бренда «Draftly» — временное; перед официальным релизом рекомендуется проверить доступность товарного знака.
Лицензия
GPL-3.0. Модифицированные версии, основанные на этом проекте, при распространении также должны быть с открытым исходным кодом под лицензией GPL-3.0.
This server cannot be installed
Maintenance
Related MCP Servers
- Alicense-qualityDmaintenanceEnables AI assistants to create, read, edit, and manipulate LibreOffice documents with support for track changes, comments, search/replace, and real-time document operations through a native extension or HTTP API.9MIT
- Alicense-qualityDmaintenanceEnables AI agents to natively create and edit WPS Office documents, spreadsheets, and presentations via natural language commands.14MIT
- Alicense-qualityAmaintenanceA 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
- Alicense-qualityCmaintenanceIntegrates AI assistants with WPS Office to automate operations across Writer, Spreadsheets, and Presentations via the MCP protocol.1MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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