Skip to main content
Glama
trsdn

io.github.trsdn/mcp-server-word

by trsdn

WordMcp — Microsoft Word MCP-Server

Ein MCP-Server, der KI-Assistenten dabei hilft, Microsoft Word für Windows über COM-Automatisierung zu steuern: Dokumente öffnen, Text lesen und bearbeiten, Absätze und Tabellen verwalten, Dokumenteigenschaften festlegen und als PDF exportieren.

Nur Windows. Eine lokale Installation von Microsoft Word ist erforderlich. Dieser Server automatisiert die echte Anwendung, er parst keine .docx-Dateien.


Anforderungen

Betriebssystem

Windows 10/11

Laufzeit

.NET 9 SDK oder Laufzeit

Office

Microsoft Word 2016 oder neuer (Desktop-Version, nicht Microsoft Store)

Related MCP server: Word Document MCP Server

Installation

dotnet tool install --global WordMcp.McpServer

Das Tool ist danach als mcp-word verfügbar.

mcp-word --version
mcp-word --help

Um es später zu aktualisieren oder zu entfernen:

dotnet tool update --global WordMcp.McpServer
dotnet tool uninstall --global WordMcp.McpServer

Um stattdessen einen unveröffentlichten Build auszuführen, packen Sie ihn lokal und installieren Sie ihn aus dem Ausgabeordner:

dotnet pack src\WordMcp.McpServer\WordMcp.McpServer.csproj -c Release -o artifacts
dotnet tool install --global --add-source .\artifacts WordMcp.McpServer

Ohne Installation

Der Server ist im MCP-Registry als io.github.trsdn/mcp-server-word gelistet. Clients, die Pakete selbst auflösen, können ihn über dnx ausführen, das die Version bei Bedarf abruft, statt ein globales Tool vorzuhalten:

{
  "servers": {
    "word": {
      "type": "stdio",
      "command": "dnx",
      "args": ["WordMcp.McpServer@0.1.0", "--yes"]
    }
  }
}

Client-Konfiguration

Der Server spricht stdio.

VS Code / GitHub Copilot

.vscode/mcp.json:

{
  "servers": {
    "word": {
      "type": "stdio",
      "command": "mcp-word"
    }
  }
}

Claude Desktop

%APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "word": {
      "command": "mcp-word"
    }
  }
}

Copilot CLI

copilot mcp add word --command mcp-word

Konzepte

Jeder Vorgang läuft innerhalb einer Sitzung. Eine Sitzung besitzt eine Word-Instanz und ein geöffnetes Dokument, identifiziert durch eine session_id wie word-a1b2c3d4e5f6g.

file(open|create) ──► session_id ──► text / paragraph / table / document ──► file(save) ──► file(close)
  • Pfade müssen absolut sein (C:\Users\me\Documents\report.docx).

  • Unterstützte Eingabeformate: .docx, .docm, .doc, .dotx, .dotm, .rtf.

  • Das Dokument darf nicht bereits in Word geöffnet sein – WordMcp benötigt exklusiven Zugriff.

  • Word läuft unsichtbar im Hintergrund und wird beendet, wenn die Sitzung geschlossen wird.

Der Sitzungsdienst

Sitzungen leben normalerweise im Prozess des MCP-Servers und verschwinden mit ihm. WordMcp.Service.exe ist ein optionaler Hintergrund-Daemon, der die Sitzungen stattdessen hält, sodass eine Sitzung einen Client-Neustart übersteht und von mehreren Clients gemeinsam genutzt werden kann:

WordMcp.Service.exe --daemon [--idle-minutes 30]   # listen until idle or stopped
WordMcp.Service.exe --status                       # what is it doing?
WordMcp.Service.exe --stop                         # save open documents and exit

Ein manueller Start ist selten nötig – ein Client, der den Daemon nutzt, startet ihn bei Bedarf. Die Pipe, auf der er lauscht, enthält Ihre SID und ist per ACL an diese gebunden, sodass Sitzungen nie zwischen Konten geteilt werden. Er beendet sich von selbst, sobald nach dem Leerlauf-Timeout keine Sitzung mehr geöffnet war.

Um den Daemon zu verwenden, setzen Sie für den MCP-Server WORDMCP_SERVICE_MODE=daemon. Jeder Tool-Aufruf wird dann an den Daemon gesendet, statt im eigenen Prozess des Servers zu laufen. Ohne diese Einstellung behält der Server die Sitzungen für sich selbst – genau das, was ein einzelner Client möchte: kein zweiter Prozess und keine Wartezeit beim Start.


Tools

Fünfzehn Tools, jeweils mit einem action-Parameter.

file — Sitzungslebenszyklus

Aktion

Zweck

open

Öffnet ein vorhandenes Dokument und startet eine Sitzung

create

Erstellt ein neues Dokument unter path

save

Speichert das geöffnete Dokument

close

Speichert (optional) und schließt die Sitzung

list

Listet alle aktiven Sitzungen auf

test

Prüft, ob Word auf diesem Rechner automatisiert werden kann

file(action: "open", path: "C:\\Users\\me\\Documents\\report.docx")
// → { "sessionId": "word-a1b2c3d4e5f6g", "fileName": "report.docx", ... }

text — Inhalt

Aktion

Zweck

get

Liest den gesamten Text oder einen Zeichenbereich (start, end, max_length)

append

Hängt Text an, optional als neuen Absatz

find

Findet einen Begriff; gibt Positionen und umgebenden Kontext zurück

replace

Ersetzt Vorkommen (match_case, match_whole_word, replace_all)

format

Wendet bold, italic, underline, font_name, font_size, color auf einen Bereich an

Zeichenpositionen stammen aus get und find und sind Word-Range-Offsets.

paragraph — Absätze

Aktion

Zweck

list

Listet Absätze mit Index, Text, Formatvorlage, Ausrichtung und Gliederungsebene auf

add

Fügt einen Absatz an, optional mit style

insert

Fügt einen Absatz vor einem angegebenen Index ein

delete

Löscht einen Absatz anhand des Index

set-style

Wendet eine Formatvorlage wie Heading 1 an

set-alignment

left, center, right oder justify

Absatzindizes sind 1-basiert, genau wie in Word.

table — Tabellen

Aktion

Zweck

list

Listet Tabellen mit Abmessungen und Stil auf

create

Erstellt eine Tabelle mit rows × columns

read

Liest alle Zellen einer Tabelle als Zeilen-/Spalten-Matrix

set-cell

Schreibt eine einzelne Zelle (row, column, text)

add-row

Fügt eine Zeile hinzu

delete-row

Löscht eine Zeile

set-style

Wendet einen Tabellenstil wie Table Grid an

document — Metadaten und Export

Aktion

Zweck

get-info

Zählt Wörter, Zeichen, Absätze, Seiten, Tabellen und Abschnitte

get-properties

Titel, Autor, Betreff, Schlagwörter, Kommentare, Unternehmen

set-properties

Ändert diese integrierten Eigenschaften

export-pdf

Exportiert nach PDF, ohne das geöffnete Dokument zu verändern

save-as

Speichert eine Kopie in einem anderen Format

image — Bilder

Aktion

Zweck

list

Listet Inline-Bilder mit Index, Größe, Alt-Text und verknüpftem Status auf

insert

Fügt ein Bild ein, optional mit width, height, caption und alt_text

resize

Ändert die Größe über width/height oder über scale_percent

replace

Tauscht das Bild hinter einem Index aus und behält standardmäßig seine Größe

delete

Löscht ein Bild anhand des Index

set-alt-text

Setzt den Alternativtext für die Barrierefreiheit

field — Felder und Inhaltsverzeichnisse

Aktion

Zweck

list

Listet alle Felder mit Index, Typ und Feldfunktion auf

insert-toc

Fügt ein Inhaltsverzeichnis ein (upper_heading_level, lower_heading_level)

update-toc

Aktualisiert jedes Inhaltsverzeichnis

update-all

Aktualisiert alle Felder, einschließlich derer in Kopf- und Fußzeilen

insert-page-number

Fügt eine Seitenzahl in die Kopf- oder Fußzeile ein

section — Abschnitte und Seiteneinrichtung

Aktion

Zweck

list

Listet alle Abschnitte mit Starttyp, Seitenrändern, Seitengröße und Ausrichtung auf

add

Fügt einen Abschnittsumbruch ein (start_type: next-page, continuous, even-page, odd-page)

page-setup

Legt Seitenränder, orientation und paper_size für einen Abschnitt oder das ganze Dokument fest

Aktion

Zweck

get

Liest die Kopf- oder Fußzeile eines Abschnitts oder aller Abschnitte

set

Schreibt Text, optional mit einer alignment

clear

Leert die Kopf- oder Fußzeile

kind wählt header oder footer aus, type wählt primary, first-page oder even-pages aus.

style — Formatvorlagen

Aktion

Zweck

list

Listet Formatvorlagen; standardmäßig nur die im Dokument verwendeten

create

Fügt eine benutzerdefinierte Formatvorlage hinzu, optional basierend auf einer vorhandenen

modify

Ändert Schrift- und Absatzformatierung einer Formatvorlage

delete

Entfernt eine benutzerdefinierte Formatvorlage

style_type wählt paragraph, character, table oder list. Übergeben Sie in_use_only: false an list, um den vollständigen Satz einer lokalisierten Word-Version zu erhalten, der über 370 Einträge umfasst.

style(action: "create", session_id: "...", name: "Callout", base_style: "Normal")
style(action: "modify", session_id: "...", name: "Callout",
      font_size: 11, bold: true, color: "#C00000", space_after: 12)

list — Aufzählungen und Nummerierung

Aktion

Zweck

get

Gibt die Listenformatierung der Absätze zurück, einschließlich der dargestellten Aufzählungszeichen oder Nummer

apply

Formatiert einen Absatzbereich als Liste mit bullet, number oder outline-number

set-level

Legt die Listenebene eines Absatzbereichs fest (1–9)

restart

Startet die Nummerierung an einem Absatz neu

remove

Entfernt die Listenformatierung

Ohne end_index wird die Aktion ausschließlich auf start_index angewendet.

list(action: "apply", session_id: "...", start_index: 2, end_index: 5, list_type: "number")
list(action: "set-level", session_id: "...", start_index: 3, end_index: 4, level: 2)
list(action: "restart", session_id: "...", start_index: 6)

comment — Kommentare

Aktion

Zweck

list

Listet die Kommentare mit Autor, Datum, Text und dem kommentierten Text auf

add

Fügt einen Kommentar an einen Absatz oder eine Phrase darin an

resolve

Markiert einen Kommentar als erledigt oder öffnet ihn wieder

delete

Entfernt einen Kommentar

add kommentiert den gesamten Absatz, es sei denn, anchor_text benennt eine Phrase darin. Indizes von Unterschieden nach delete – listen Sie die Kommentare vor dem Löschen eines weiteren Kommentars also erneut auf.

comment(action: "add", session_id: "...", paragraph_index: 4,
        text: "Source?", anchor_text: "fifteen percent")
comment(action: "list", session_id: "...", unresolved_only: true)

revision — Änderungen nachverfolgen

Aktion

Zweck

list

Listet die nachverfolgten Änderungen und gibt an, ob die Änderungsverfolgung eingeschaltet ist

accept

Übernimmt eine Änderung oder alle Änderungen

reject

Lehnt eine Änderung oder alle Änderungen ab

set-tracking

Schaltet die Änderungsverfolgung ein oder aus

Wenn bei accept/reject der index weggelassen wird, wird das gesamte Dokument behandelt, einschließlich Kopf- und Fußzeilen.

revision(action: "set-tracking", session_id: "...", enabled: true)
revision(action: "accept", session_id: "...")

bookmark — stabile Verweise

Aktion

Zweck

list

Lesezeichen mit Name, Absatzindex und Vorschau des markierten Textes

add

Ein Lesezeichen auf einen Absatz, einen Absatzbereich oder eine Textstelle innerhalb eines Absatzes setzen

get-text

Den vollständigen markierten Text lesen

delete

Lesezeichen entfernen; der Text bleibt erhalten

Namen müssen mit einem Buchstaben beginnen und dürfen nur Buchstaben, Ziffern und Unterstriche enthalten. Lesezeichen überstehen Bearbeitungen an anderer Stelle des Dokuments und sind deshalb der zuverlässige Weg, auf eine Textstelle zu verweisen, sobald sich die Absatzindizes verschoben haben.

bookmark(action: "add", session_id: "...", name: "Intro", paragraph_index: 2)
bookmark(action: "add", session_id: "...", name: "Growth",
         paragraph_index: 4, anchor_text: "fifteen percent")
bookmark(action: "get-text", session_id: "...", name: "Intro")

screenshot — die Seite anzeigen

Aktion

Zweck

page

Eine Seite als PNG rendern

Layoutfragen — Seitenumbrüche, Tabellenbreiten, Bildplatzierung, Kopfzeilenpositionen — lassen sich anhand der gerenderten Seite weitaus leichter beantworten als aus. Das PNG wird in eine Datei geschrieben und der Pfad zurückgegeben; include_image: true gibt es zusätzlich inline als base64 zurück, was nur dann den Kontext lohnt, wenn das Bild auch angesehen werden soll.

dpi hat den Standardwert 150. Verwenden Sie 96 für eine schnelle Layoutprüfung und 300 für etwas in druckähnlicher Qualität.

screenshot(action: "page", session_id: "...", page: 2)
screenshot(action: "page", session_id: "...", page: 1,
           output_path: "C:/temp/page1.png", dpi: 300, include_image: true)

Antworten

Jedes Tool gibt JSON zurück. Fehler werden als strukturierte Antworten gemeldet, niemals als Transportfehler:

{
  "success": false,
  "isError": true,
  "tool": "text",
  "action": "Replace",
  "errorType": "KeyNotFoundException",
  "errorMessage": "Session 'word-unknown' not found."
}

Bekanntes Verhalten und Fallstricke

  • document(save-as) speichert auch das Original. Word hat keine API, die das Format ändert, indem sie eine Kopie speichert. Für jedes andere Ziel außer PDF ruft der Server SaveAs2(target) und dann SaveAs2(original) auf, was ausstehende Änderungen als Nebeneffekt in der Originaldatei speichert. Verwenden Sie export-pdf, wenn Sie einen Export ohne Nebenwirkung brauchen.

  • Farben sind hex-RGB (#0078D4). Der Server konvertiert in den BGR-Wert, den Word erwartet.

  • Rechtegeschützte Dokumente (IRM/AIP) werden abgelehnt, bevor Word gestartet wird.

  • Ein Dokument, das in Word geöffnet ist, blockiert die Sitzung — schließen Sie es zuerst.

  • Word-Dialoge blockieren die Automatisierung. Wenn ein Aufruf eine Zeitüberschreitung hat, prüfen Sie zuerst, ob auf dem Desktop ein Dialog geöffnet ist.

  • Formatnamen sind englisch. Integrierte Formate (Heading 1, Title, Table Grid, …) werden in die Sprachklärung „ – deutschen Stil-IDs von Word übersetzt, sodass sie auf lokalisierten Installationen funktionieren. Jeder andere Name wird unverändert an Word übergeben; so werden benutzerdefinierte und lokalisierte Stile angesprochen. Beachten Sie: Word meldet Stile unter ihrem lokalisierten Namen (Überschrift 1 auf einer deutschen Installation). Darum gibt style(list) sowohl name als auch english_name zurück — senden Sie english_name zurück, wenn er vorhanden ist.

  • Integrierte Stile können nicht gelöscht werden. style(delete) lehnt das klar verständlich ab, anstelle des generischen COM-Fehlers von Word durchzusickern. Auch ein benutzerdefinierter Stil, der in einer Textmarke noch auf einen Absatz angewendet wird, kann nicht gelöscht werden; setzen Sie diese Absätze zuerst auf einen anderen Stil.

  • Neue Dokumente werden direkt geschrieben, nicht über Word. file(create) schreibt selbst eine leere ..docx/.docm`-Paket-Paketdatei und öffnet sie. Dokumente über Word zu erstellen, ist auf Computern mit Microsoft-365-Anmeldung unzuverlässig, weil AutoSave das neue Dokument für OneDrive beansprucht und den anforderten lokalen Pfad stillschweigend ignoriert.

  • Zusammengefügte Tabellenzellen werden von table(read) als leere Zeichenketten zurückgegeben.

  • Bildgrößen sind Maßeinheit Punkt, nicht Pixel (72 pt = 1 Zoll). image(insert) und image(resize) erhalten das Seitenverhältnis, außer gesetzt ist; wird nur width übergeben, wird die Höhe automatisch skaliert.

  • image umfasst nur Inline-Bilder. Schwebende Objekte, Textfelder und Diagramme werden unberührt bleiben und erscheinen nicht in image(list); ihre Anwesenheit verschiebt also nicht die Bildindizes.

  • Ein Inhaltsverzeichnis listet nur Überschriftenabsätze auf. field(insert-toc) liefert entry_count: 0 für ein Dokument ohne Überschriftenstile — wenden Sie zuerst Heading 1/Heading 2 über paragraph(add|set-style) an, dann rufen Sie field(update-toc) aus.

  • field(update-all) erfasst auch Kopf- und Fußzeilen. Wenn Document.Fields von Word nur den Textkörper abdeckt, warum beziehen sich Seitenzahlen eigentlich sonst verschieden s? Deshalb würden Seitenzahlen nie aktualisiert, wenn dieser nicht mitbehandelt würde.

  • image(insert) mit einer Beschriftungsanmerkung verwendet die Nummerierung von „Beschriftung“ in Word, sodass die Bildunterschrift Figure 1 <Ihr_text> lautet (auf nicht-englischen Installationen lokalisiert) und an einem Abbildungsverzeichnis teilnimmt.

  • Alle Maße sind in Punkt gehalten, einschließlich Seiten enthält; Abbildung (1 cm = 28,35 pt; 1 Zoll = 72 pt).

  • section(page-setup) formiert paper_size vor den Rändern, weil die Änderung der Papiergröße die Ränder im Word zurücksetzt. Ohne section_index gilt das für alle Abschnitte.

  • Spalten- und Fußzeilen werden zwischen Abschnitten vererbt. Ein neuer Abschnitt zeigt die Kopfzeile des vorherigen Abschnitts, bis etwas hineingeschrieben wird. header-footer(set) mit Angabe einer section_index unterbricht die Verknüpfung automatisch, in Abschnitt 1 bleibt also sein eigener Text erhalten.

  • first-page und even-pages brauchen einen Abschnittswechsel. header-footer(set) aktiviert für Sie DifferentFirstPage bzw. DifferentOddEvenPages — ohne das speichert Word Speichert den Text, rendert ihn aber nie.

  • list(apply) startet standardmäßig eine neue Liste. `` weiter: continue_previous_list ist aus, da eine Übernahme der Nummerung einer unzusammenhängenden früheren Liste selten beabsichtigt ist. Zwei nummerierte Listen, die mit normalen Absätzen getrennt sind, bleiben getrennt; verwenden Sie list(restart), falls Word sie trotzdem zusammenfügt.

  • Nur das Listenformatete mit Ebenen von Gliedern zeigt Ebenen mit unterschiedlichen Graden. list(set-level) funktioniert mit jeder Liste, aber eine einfache bullet- oder number-Liste zeigt auf jeder Ebene denselben Marker — die Absätze sind gleichsam nur noch eingerückt.

  • comment(resolve) schlägt bei Microsoft 365 oft fehl. Moderne Kommentare in Word behandeln jeden über die API hinzugefügten Kommentar als unveröffentlichten Entwurf, und Entwürfe können nicht als erledigt markiert werden. Der Server meldet das benaberzield klar; löschen Sie den Kommentar stattdessen. comment(list) liefert resolved: null auf Systemen, die den Zustand überhaupt nicht offengeben.

  • Kommentar- und Revisions-Indizes verschieben sich. Das Löschen von Kommentaren oder das Annehmen einer einzelnen überarbeitung nummeriert alles danach neu. Führen Sie vor, zäh Tor. BetweenZwei solchen Aufrufen: Führen Sie list erneut aus, statt die alten Indizes zu verwenden.

  • revision(accept|reject) ohne Indexursor umfasst auch Kopf- und Fußzeilen. Word Document.AcceptAllRevisions() deckt nur den Textkörper ab, genau dieselbe Lücke wie bei field(update-all).

  • Verfolgte Änderung werden nur aufgezeichnet, solange Überarbeitungen getrackt werden. revision(set-tracking) wirkt nicht retentional— aktivieren Sie die. Bevor Sie die Änderungen durchführen, die Sie aufgezeichnet haben möchten.

  • Lesezeichennamen unterliegen Einschränkungen aus Word. Sie müssen mit einem Buchstaben beginnen, dürfen nur Buchstaben, Ziffern und Unterstriche enthalten und sind auf 40 Zeichen begrenzt. Leerzeichen, Bindestriche, Punkte und nicht-ASCII-Buchstaben werden abgelehnt, bevor der Aufruf Word erreicht, das sonst mit einem generischen COM-FehlFehler abbricht.

  • Lesezeichen Lesezeichen sind der stabile Weg, um auf eine Passage zu verweisen. Die Absatzindexe a ändern sich bei jedem Einfügen, Buchzeichen nicht. Diese Stelle Lesezeichen zuerst aus und lesen Sie später mit bookmark(get-text) wieder.

  • bookmark(add) auf einem Absatz schließt Paragraph-Zeichenzeichen aus, sodass get-text den Text ohne nachfolgenden Zeilenumbruch zurückgibt. Ein Lesezeichen über mehrere Absätze enthält die Zeichen dazwischen.

  • screenshot(page) rendert über eine PDF. Word hat keine API, die eine Art als Bild liefert; der Server export die Einzelseite mit ExportAsFixedFormat und wandelt sie in Raster. Ungespeicherte Änderungen werden ein begonnenessen, und die temporäre PDF wird danach gelöscht.

  • Seitenzahlen stammen aus neuer Rerepagination. Ein Dokument, das nur automatisiert bearbeitet wird, meldet eine überholte Seitenzahl; deshalb macht screenshot zuerst eine neue Seitenwanderung. Das bedeutet, dass die Seitenzahl den aktuellen Layout repr en wiring repulsiert, nicht das beim Öffnen.


Bau aus dem Quellcode

git clone https://github.com/trsdn/mcp-server-word.git
cd mcp-server-word
dotnet build WordMcp.sln -c Release
dotnet test WordMcp.sln --filter "Category!=RequiresWord"

Projekteinrichtung

Projekt

Zweck

src/WordMcp.ComInterop

Word-COM-Leberzyklus: STA-Threads, Sitzungungen, OLE-Message-Argument, Dateivalidierung

src/WordMcp.Core

Befehlsschnittstellen, befehlsimplementierungen und Ergebnismodelle

src/WordMcp.Generators.Shared

gemeinsame Quelldateien der Generatoren; kein Lieferprojekt für den ganzes selbst

src/WordMcp.Generators.Mcp

Roslyn-Quellviews, das die MCP-Tool-Werkzeuge erzeugt

src/WordMcp.McpServer

stdio-MCP-Server, wichtige drei Tool-öffentlichkeit fünfzehn Werkzeuge

tests/WordMcp.Core.Tests

Unit-Komponententests und Integrationstests gegen ein echtes Word

tests/WordMcp.McpServer.Tests

Unit-Tests der Werkzeugschicht, ohne Word-Anwendung

Generierte Werkzeugschicht

Vierzehn Aufgaben der fünfzehn Tools werden zur Build-Zeit erzeugt. Die Befehl- und Schnittstellen in src/WordMcp.Core/Commands sind die genaue Spezifikation für den Vertrag:

  • ServiceCategory( "section", "Section") benennt die Tool-Klasse, WordSectionTool.

  • [McpTool("section", Title = ..., Description = ...)] liefert den ToolNamen und den Prompt, dem das Modell liest.

  • [ServiceAction("page-setup")] auf jeder Methode wird zu einem Enum-Wert der generierten WordSectionAction.

  • XML-Dokumentation der Schnittstellenparameter wird zu den Parameterbeschreibungen im MCP-Schema.

Der Generator führt die Parameter aller Aktionen in einer Methode, so dass ein param Parameter, der nur von einigen Aktionen verwendet wird, als optional oll als ausgegeben wird. Für die API-Änderung arbeiten Sie die Schnittstelle — und niemals generierten Code berühren. file bleibt von Hand geschrieben, weil es Sitzungen verwaltet, nicht mit jeweilsArbe una-bearbeitet.

Unter src/WordMcp.McpServer/obj/gen steht der erzeugten Code. Die Tests im GeneratedToolContractTests vergleichen die generierte Oberfläche mit den Schnittstellen, so dass eine Abweichung den Build fehlschlagen lassen, statt bis zum Client zu gelangen.

Tests, die eine echte Word-Installation benötigen, werden mit [Trait("Category", "RequiresWord")] markiert und in CI ausgeschartet.

Fehlgeschlagene Integrationstests können verwaiste WINWORD.EXE-Prozesse zurücklassen, die spätere Läufe verlangsamen oder blockieren können. Räumen Sie sie auf mit GetProcess WINWORD | Stop-Process -Force, bevor Sie neu starten.

Weiterführende Informationen

Dokument

Enthält

docs/architecture.md

Schichten, Anforderungsfluss und wie die Werkzeugschicht erzeugt wird

docs/com-interop.md

STA-Threading, Freigabe von COM-Objekten und das Word-Verhalten in den Stolperfallen oben

CONTRIBUTING.md

Build, Test, Hinzufügen einer Werkzeugschicht, Veröffentlichen eines Release

skills/word-mcp/SKILL.md

Eine an Agents gerichtete Anleitung, Werkzeuge in richtigen ReihenfolgeReihenfolge richtig einzusetzen

Troubleshooting

Fehlerbild

Ursache und Abhilfe

Word ist nicht installiert oder nicht für COM registriert

Installieren Sie Word-De schreibtisch; die Microsoft-Store-Fassung kann nicht automatisiert werden

Fehler beim Laden der Assembly „office“ can't be found

office.dll wurde im GAC-GAC gefunden — Office neu installieren or reparieren

Zeitüberschreitung des Vorgangs

Ein Word-Dialog wartet auf Eingabe; schließen Sie ihn und wiederholen Sie den Vorfall

Die Datei ist bereits in Word geöffnet

Schließen Sie das Dokument in der Word-Oberfläche

Mitwirken

Fehlermeldungen und Feature-Wünsche lassen sich über die Issue-Vorlagen einreichen. Pull-Requests sind willkommen; CONTRIBUTING.md beschreibt, wie das Projekt gebaut wird, wie die beiden Hälften der Testsuite ausgeführt werden und was erforderlich ist, um ein Tool hinzuzufügen.

Bitte lesen Sie zuerst den Code of Conduct.

Reichen Sie für ein Sicherheitsproblem kein öffentliches Issue ein — melden Sie es privat, wie in der Sicherheitsrichtlinie beschrieben.

Lizenz

MIT — siehe LICENSE.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
1dResponse time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • -
    license
    B
    quality
    Not graded
    maintenance
    Enables AI assistants to create, read, and manipulate Microsoft Word documents with comprehensive formatting, table creation, content management, and document protection capabilities. Supports advanced operations like merging documents, PDF conversion, and rich text formatting through a standardized interface.
    32
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to create, edit, and extract data from Microsoft Word documents programmatically, supporting document creation, content editing, table manipulation, parameter extraction, and template generation.
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Use your own Word templates to convert Markdown → DOCX/PDF/HTML from any MCP-compatible AI.

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

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

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/trsdn/mcp-server-word'

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