Skip to main content
Glama

Draftly (wps-mcp)

Deutsch | Englisch

In WPS Office (Mac) einen echten KI-Chat-Seitenbereich betreiben, der das aktuelle Dokument bearbeiten kann, basierend auf der offiziellen JS-Add-in-Objektmodell-API + Claude Agent SDK. Keine Tastatur-/Maus-Simulation, sondern direkter Aufruf des Objektmodells von WPS Text / Tabellen / Präsentationen über MCP-Tools (Application.CreateTaskPane usw.).

Voraussetzungen

  • macOS mit installiertem WPS Office (Mac-Version), mindestens einmal vollständig geöffnet

  • Node.js 20 oder höher

  • Installierte und angemeldete Claude Code CLI (claude login) – Draftly verwaltet keinen eigenen API-Schlüssel, sondern nutzt den lokal angemeldeten Claude Code CLI, um deinen Konto-Login-Status wiederzuverwenden. Bei einem anderen Rechner / einer anderen Person muss zuerst auf diesem Rechner die claude CLI installiert und angemeldet werden.

Related MCP server: wps-mcp-server

Installation

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

Das Skript ist idempotent; nach Codeänderungen einfach erneut ausführen, das ist der Upgrade-Prozess. Es wird:

  1. npm install ausführen, um Abhängigkeiten zu installieren

  2. Einen lokalen gemeinsamen Schlüssel erzeugen (.bridge-token, siehe unten "Sicherheitsmodell")

  3. Die Add-in-Dateien in das WPS-Add-in-Verzeichnis kopieren (~/Library/Containers/com.kingsoft.wpsoffice.mac/Data/.kingsoft/wps/jsaddons/wps-mcp_)

  4. Einen launchd-LaunchAgent installieren, damit der Brückendienst beim Login automatisch startet und bei Abstürzen automatisch neu startet

Nach der Installation:

  1. WPS Office vollständig neu starten (bei Erstinstallation oder wenn ribbon.xml aktualisiert wurde, ist ein Neustart erforderlich – die Definition der Menüband-Schaltflächen wird von WPS nur beim Start gelesen, kein Hot-Reload; Aktualisierungen von taskpane.html/main.js werden automatisch per Hot-Reload übernommen, kein Neustart nötig)

  2. In WPS die Registerkarte "WPS-MCP" im Menüband finden und die Schaltfläche "Draftly" anklicken, um den Seitenbereich zu öffnen

  3. Wenn keine Verbindung möglich ist, Logs prüfen: tail -f ~/Library/Logs/wps-mcp.log

Deinstallation:

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_

Sicherheitsmodell

Der Brückendienst lauscht auf 127.0.0.1:58892 und verarbeitet WebSocket- und HTTP-Anfragen. Alle Endpunkte mit Nebenwirkungen (zwei WebSocket, /tool, /mcp) erfordern ?token= in der URL. Dieser Token ist ein bei der Installation zufällig erzeugter, lokal geteilter Schlüssel, der im Projektstamm unter .bridge-token gespeichert wird (nicht im Versionskontrollsystem) und dessen gleicher Wert in das in WPS bereitgestellte js/token.js eingebettet wird. Ohne diese Prüfung könnte jede auf deinem Computer geöffnete Webseite direkt diesen Port verbinden und sich als Add-in/Bedienfeld ausgeben, um mit MCP-Tools das aktuell bearbeitete Dokument zu verändern – das ist kein theoretisches Risiko: Browser erzwingen bei WebSocket-Verbindungen keine Same-Origin-Beschränkungen.

Architekturübersicht

  • addin/ – WPS-JS-Add-in: ribbon.xml (Menüband), main.js (Objektmodell-Brücke), taskpane.html (Chat-Panel-UI)

  • server/bridge.js – lokale WebSocket/HTTP-Brücke, Drehscheibe zwischen Add-in und MCP-Server

  • server/agent.js/agent-WS-Verarbeitung des Chat-Panels, nutzt query() des Claude Agent SDK zur Dialogsteuerung

  • server/tools.js + server/index.js – MCP-Server (stdio), leitet wps_word_*/wps_et_*/wps_wpp_*-Toolaufrufe an die Brückenschicht weiter

server/index.js erkennt Portkonflikte automatisch: Wenn 58892 bereits von einer dauerhaft laufenden Instanz belegt ist, wird es zu einem schlanken stdio-Relay, das Toolaufrufe dorthin weiterleitet, statt den Port zu beanspruchen – so kollidieren die vom Agent SDK selbst gestarteten MCP-Server-Subprozesse nicht mit dem dauerhaft laufenden Dienst.

Entwicklung

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

Strikte TDD: Vor einer Verhaltensänderung wird zuerst ein fehlschlagender Test geschrieben. Reine Logik (Session-/Host-Verarbeitung, Streaming-Akkumulator usw.) ist in DOM/WS-unabhängige Module extrahiert, um Unit-Tests zu ermöglichen; WS/DOM-Klebecode bleibt dünn und wird durch Lesen geprüft.

Bekannte Einschränkungen

  • Derzeit nur für WPS Office unter macOS, und es wird die Standard-Container-Pfadannahme verwendet

  • Mehrbenutzerszenario nicht umgesetzt – jeder Benutzer muss die claude-CLI selbst installieren und anmelden; Draftly übernimmt keine einheitliche Authentifizierung/Abrechnung

  • Der Markenname "Draftly" ist ein Platzhalter; vor der offiziellen Veröffentlichung wird empfohlen, die Verfügbarkeit der Marke zu prüfen

Lizenz

GPL-3.0. Auf diesem Projekt basierende modifizierte Versionen müssen bei Weiterverbreitung ebenfalls unter GPL-3.0 als Open Source bereitgestellt werden.

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