Markus Michalski FAQ

Wiki.js MCP Server: Usage and Examples

Typical workflows with the Wiki.js MCP Server: create pages, update them safely, read tags, search, page through lists, move and maintain multiple languages.

Deutsche Version

Back to overview

Usage and Examples

The examples show the tool arguments as JSON. How you phrase them depends on your MCP client; usually you describe the task and the model picks the tool and arguments.

Create a page

{
  "path": "projects/my-plugin",
  "title": "My Plugin",
  "content": "# My Plugin\n\nDescription ...",
  "description": "Short description for the meta tag",
  "locale": "en",
  "tags": ["plugin", "documentation"]
}

Without locale the page is created in the en locale. If the path already exists in that locale, the call fails with Failed to create page: ....

Change an existing page

The safe flow for content changes:

  1. Read the page with wikijs_get_page.
  2. Assemble the entire new content.
  3. Send the complete content with wikijs_update_page and pass isPublished: true.
{
  "path": "projects/my-plugin",
  "locale": "en",
  "content": "# My Plugin\n\nNew, complete content ...",
  "isPublished": true
}

Change only the description or title (content and tags are preserved):

{ "id": 42, "description": "New short description", "isPublished": true }

For pages over 100,000 characters always send the complete content, see Tools reference.

Read and set a page's tags

wikijs_get_page returns no tags. Read them through wikijs_list_pages (the entry with the matching id or path). To set them, send the complete array in tags; it replaces the existing tags.

{ "id": 42, "tags": ["mcp", "wikijs"], "isPublished": true }
{ "query": "plugin", "locale": "en" }

The response contains results with id, title, path, description and locale, plus suggestions from Wiki.js.

Page through the page list

{ "locale": "en", "limit": 100, "offset": 0 }

Continue with offset = pagination.next_offset as long as has_more is true. Mind the caveat about total_count when locale is set in the Tools reference.

Move a page

{
  "path": "old/my-plugin",
  "locale": "en",
  "destinationPath": "archive/my-plugin",
  "destinationLocale": "en"
}

Always pass destinationLocale, otherwise en is used.

Multilingual pages

Wiki.js keeps every language as a separate page under the same path. Therefore make one wikijs_create_page call per language with the matching locale and update both pages separately.

Delete a page

{ "path": "drafts/idea", "locale": "en" }

Deletion is permanent and the server does not ask for confirmation. Handle confirmation in your client or have the page shown with wikijs_get_page first.