Das Model Context Protocol (MCP) ist ein offenes Protokoll, das es KI-Assistenten wie Claude ermöglicht, mit externen Tools und Diensten zu interagieren. Ein MCP-Server stellt eine Sammlung von "Tools" (Funktionen) bereit, die Claude während eines Gesprächs aufrufen kann.
Vorteile von MCP:
Ohne MCP-Server:
Mit MCP-Server:
Dieser MCP-Server ermöglicht Claude, direkt mit deiner Wiki.js-Instanz zu interagieren:
1. Automatische Dokumentation nach Plugin-Entwicklung
Du: "Ich habe gerade das Ticket-Merge-Plugin fertig entwickelt.
Erstelle eine ausführliche technische Dokumentation in Wiki.js."
Claude: *Analysiert den Code, die Architektur und API*
*Erstellt automatisch eine strukturierte Wiki-Seite mit:*
- Technischer Übersicht
- Architektur-Diagrammen
- API-Dokumentation
- Code-Beispielen
- Troubleshooting-Guide
2. Wissensmanagement während der Entwicklung
Du: "Suche in Wiki.js nach allen osTicket-Plugin-Dokumentationen
und zeige mir die Naming-Conventions."
Claude: *Sucht in Wiki.js*
*Extrahiert relevante Informationen*
*Wendet diese auf deinen aktuellen Code an*
3. Content-Reorganisation
Du: "Alle Seiten unter /legacy/ sollten nach /archive/ verschoben werden."
Claude: *Listet alle /legacy/ Seiten auf*
*Verschiebt sie systematisch nach /archive/*
*Aktualisiert interne Links*
# MCP-Server Directory erstellen
mkdir -p ~/.claude/mcp-servers/wikijs
# Repository klonen
git clone https://github.com/markus-michalski/wikijs-mcp-server.git ~/.claude/mcp-servers/wikijs
cd ~/.claude/mcp-servers/wikijs
npm install
cd ~/.claude/mcp-servers/wikijs
cp .env.example .env
Bearbeite ~/.claude/mcp-servers/wikijs/.env:
WIKIJS_API_URL=https://deine-wiki-instance.com/graphql
WIKIJS_API_TOKEN=dein-api-token-hier
Wichtig: Der Server lädt automatisch die .env-Datei aus ~/.claude/mcp-servers/wikijs/.env beim Start. Du musst KEINE Umgebungsvariablen in .claude.json setzen.
Claude Code MCP Serverread:pages - Seiten lesenwrite:pages - Seiten erstellen und aktualisierenmanage:pages - Seiten löschen und verschieben~/.claude/mcp-servers/wikijs/.envBearbeite ~/.claude.json und füge den wikijs-Server zur globalen mcpServers-Sektion hinzu:
{
"mcpServers": {
"wikijs": {
"type": "stdio",
"command": "node",
"args": [
"/home/DEIN_USERNAME/.claude/mcp-servers/wikijs/index.js"
],
"env": {}
}
}
}
Hinweis: Ersetze /home/DEIN_USERNAME/ mit deinem tatsächlichen Home-Verzeichnis-Pfad.
# Claude Code beenden
/exit
# Claude Code neu starten
claude
Überprüfe die Verbindung:
/mcp
Du solltest "wikijs" mit Status "✓ connected" sehen.
Erstellt eine neue Seite in Wiki.js.
Parameter:
path (erforderlich) - Seiten-Pfad (z.B. "osticket/plugin-name")title (erforderlich) - Seiten-Titelcontent (erforderlich) - Seiten-Inhalt (Markdown oder HTML)description (erforderlich) - Kurze Seitenbeschreibunglocale (optional) - Sprache (Standard: "en")editor (optional) - Editor-Typ: "markdown", "code", "ckeditor" (Standard: "markdown")isPublished (optional) - Sofort veröffentlichen (Standard: true)isPrivate (optional) - Private Seite mit eingeschränktem Zugriff (Standard: false)tags (optional) - Array von Tags (Standard: [])Beispiel:
{
"path": "osticket/ticket-merge-plugin",
"title": "Ticket Merge Plugin - Technische Dokumentation",
"content": "# Technische Dokumentation\\n\\n...",
"description": "Detaillierte technische Dokumentation für das Ticket Merge Plugin",
"locale": "de",
"editor": "markdown",
"isPublished": true,
"isPrivate": false,
"tags": ["osticket", "plugin", "entwicklung"]
}
Aktualisiert eine bestehende Seite.
Parameter:
id (erforderlich) - Seiten-IDcontent (optional) - Neuer Inhalttitle (optional) - Neuer Titeldescription (optional) - Neue BeschreibungisPublished (optional) - Veröffentlichungsstatustags (optional) - Neues Tags-ArrayBeispiel:
{
"id": 7,
"content": "# Aktualisierter Inhalt\\n\\nNeue Informationen...",
"tags": ["osticket", "plugin", "updated"]
}
Ruft eine Seite per ID oder Pfad ab.
Parameter:
id (optional) - Seiten-IDpath (optional) - Seiten-Pfad (erforderlich wenn keine ID)locale (optional) - Sprache (erforderlich bei Pfad-Nutzung)Beispiele:
// Per ID
{ "id": 5 }
// Per Pfad
{ "path": "osticket/plugin-name", "locale": "de" }
⚠️ Wichtiger Hinweis zu Tags:
Das get_page Tool gibt keine Tags zurück. Dies ist eine Limitation der Wiki.js GraphQL API - das tags Feld wird nur bei pages.list() unterstützt, nicht bei pages.single() oder pages.singleByPath().
Workaround: Wenn du Tags einer bestimmten Seite brauchst, nutze stattdessen list_pages und filtere die Ergebnisse nach ID oder Pfad.
Listet alle Seiten mit optionaler Filterung auf. Dieses Tool gibt auch Tags zurück!
Parameter:
locale (optional) - Nach Sprache filternlimit (optional) - Maximale Ergebnisse (Standard: 100)Beispiel:
{
"locale": "de",
"limit": 50
}
Sucht Seiten nach Suchbegriff.
Parameter:
query (erforderlich) - Suchbegrifflocale (optional) - Nach Sprache filternBeispiel:
{
"query": "osTicket Plugin",
"locale": "de"
}
Löscht eine Seite (unwiderruflich!).
Parameter:
id (erforderlich) - Seiten-ID zum LöschenBeispiel:
{ "id": 123 }
Verschiebt eine Seite zu einem neuen Pfad.
Parameter:
id (erforderlich) - Seiten-IDdestinationPath (erforderlich) - Neuer PfaddestinationLocale (optional) - Ziel-Sprache (Standard: "en")Beispiel:
{
"id": 5,
"destinationPath": "projekte/osticket/ticket-merge",
"destinationLocale": "de"
}
Nach Fertigstellung eines Plugins automatisch umfassende Wiki.js-Dokumentation erstellen:
Du in Claude Code:
"Ich habe gerade das Ticket-Merge-Plugin fertig entwickelt.
Erstelle eine ausführliche technische Wiki-Seite"
Claude:
1. Analysiert den Code in src/
2. Liest die README.md
3. Extrahiert API-Endpoints, Klassen, Methods
4. Generiert strukturierte Markdown-Dokumentation
5. Erstellt automatisch Wiki-Seite mit:
- Architektur-Übersicht
- Komponenten-Struktur
- API-Dokumentation
- Code-Beispiele
- Troubleshooting-Tipps
Du: "Füge der Seite über das Ticket-Merge-Plugin einen
Abschnitt über Performance-Optimierung hinzu"
Claude:
1. Ruft aktuelle Seite ab via get_page
2. Analysiert bestehenden Content
3. Generiert neuen Abschnitt
4. Aktualisiert Seite via update_page
Du: "Finde alle osTicket-Seiten und verschiebe sie unter projekte/osticket/"
Claude:
1. Sucht via search_pages nach "osTicket"
2. Listet gefundene Seiten auf
3. Verschiebt jede Seite via move_page zum neuen Pfad
4. Gibt Zusammenfassung aus
Typischer Workflow:
Vorteile:
Problem: .env-Datei nicht gefunden oder unvollständig
Lösung:
.env unter ~/.claude/mcp-servers/wikijs/.env existiertWIKIJS_API_URL und WIKIJS_API_TOKEN gesetzt sind.env.example für das korrekte FormatProblem: API-Token hat nicht die erforderlichen Berechtigungen
Lösung:
read:pageswrite:pagesmanage:pagesProblem: Falsche API-URL
Lösung:
WIKIJS_API_URL in ~/.claude/mcp-servers/wikijs/.env/graphql endenhttps://deine-wiki.com/graphqlProblem: MCP-Konfiguration nicht geladen oder Server-Start fehlgeschlagen
Lösung:
~/.claude.json Syntax (muss valides JSON sein)index.js ist korrekt.env-Datei existiert/mcp in Claude Code aus um Server-Status zu sehen/exit dann neu starten)wikijs-mcp-server/
├── index.js # MCP-Server Entry Point
├── package.json # Dependencies
├── .env # Konfiguration (nicht in Git)
├── .env.example # Konfigurations-Template
├── src/
│ ├── client.js # Wiki.js GraphQL Client
│ └── tools/
│ ├── create-page.js
│ ├── update-page.js
│ ├── get-page.js
│ ├── list-pages.js
│ ├── search-pages.js
│ ├── delete-page.js
│ └── move-page.js
└── README.md
Verwende eine klare Hierarchie für Wiki-Pfade:
projekte/osticket/plugins/ticket-merge
projekte/oxid/module/payment-gateway
tutorials/symfony/testing
Nutze Tags für bessere Suchbarkeit:
tags: ["osticket", "plugin", "api", "entwicklung"]
Gute Descriptions helfen bei der Suche:
description: "Technische Dokumentation für osTicket Ticket-Merge-Plugin mit API-Referenz"
MIT License - Siehe LICENSE-Datei für Details
Markus Michalski