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.
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:
- Read the page with
wikijs_get_page. - Assemble the entire new content.
- Send the complete content with
wikijs_update_pageand passisPublished: 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 }
Search
{ "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.