| Pfad | Aufgabe |
|---|---|
src/index.ts |
Einstiegspunkt: lädt die .env, prüft die Variablen, registriert die 7 Tools, startet den stdio-Transport, behandelt Signale |
src/constants.ts |
feste Limits (Timeout, Kürzung, Größen, Paginierung) |
src/schemas/index.ts |
Zod-Schemas für alle Tool-Eingaben |
src/services/client.ts |
WikiJsClient: sendet die GraphQL-Anfragen |
src/services/error-handler.ts |
einheitliche Fehler- und Erfolgsantworten |
src/tools/*.ts |
je eine Datei pro Tool |
tests/update-page.test.ts |
Vitest-Tests für das Update-Verhalten |
Das Paket ist ein ES-Modul ("type": "module"), Einstiegspunkt und bin-Eintrag ist dist/index.js.
tsc nach dist/@modelcontextprotocol/sdk (McpServer, stdio-Transport).envfetch, keine zusätzliche HTTP-BibliothekAlle Anfragen gehen als POST mit JSON-Body und Authorization: Bearer <Token> an WIKIJS_API_URL.
| Tool | Operation | Hinweis |
|---|---|---|
wikijs_list_pages |
pages.list |
liefert alle Seiten, Locale-Filter und Paginierung passieren im Server |
wikijs_get_page |
pages.single(id) oder pages.singleByPath(path, locale) |
ohne Tags |
wikijs_search_pages |
pages.search(query) |
Locale-Filter im Server |
wikijs_create_page |
pages.create |
mit path, title, content, description, editor, isPublished, isPrivate, locale, tags |
wikijs_update_page |
pages.update |
mit id, content, title, description, isPublished, tags |
wikijs_delete_page |
pages.delete(id) |
|
wikijs_move_page |
pages.move(id, destinationPath, destinationLocale) |
Pfadbasierte Aufrufe von update, delete und move lösen den Pfad zuerst mit pages.singleByPath in eine ID auf.
Die Mutation pages.update benötigt einen Wert für Titel, Beschreibung, Inhalt und Tags; deshalb ergänzt der Server fehlende Felder aus dem aktuellen Stand der Seite.
isError: true mit {"success": false, "error": ..., "tool": ...} zurück. Der Server stürzt dabei nicht ab.Wiki.js API request failed: HTTP error! status: <Code>.Wiki.js API request failed: GraphQL request failed: <Meldungen>.responseResult succeeded: false, lautet die Meldung Failed to create page: ..., Failed to update page: ..., Failed to delete page: ... oder Failed to move page: ... mit dem Text von Wiki.js.Request timed out. Please try again.Bei SIGINT, SIGTERM, unbehandelten Fehlern und Promise-Rejections schließt der Server die MCP-Verbindung und beendet sich. Ein EPIPE (Client hat die Verbindung geschlossen) wird dabei nicht geloggt.
npm install
npm run dev # tsx im Watch-Modus
npm run build # Kompilieren nach dist/
npm run typecheck # Typprüfung ohne Ausgabe
npm test # Vitest
Die CI baut und typprüft das Projekt mit Node.js 18, 20 und 22.