wikijs-mcp-http
Provides tools for interacting with Wiki.js, enabling management of pages, comments, tags, assets, users, navigation, and system info.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@wikijs-mcp-http search wiki for MCP integration guide"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
wikijs-mcp-http
Native HTTP/SSE MCP server for Wiki.js. A clean, production-oriented replacement for supergateway-based setups.
This fork exists because the original transport layer was janky. We replaced it with Wiki.js's built-in --http / SSE support so you get a proper, stable, long-lived MCP server you can actually run behind a reverse proxy.
Features
29 tools (19 read + 10 write) covering pages, comments, tags, assets, users, navigation, and system info
Full-text search, page tree browsing, link graphs, and version history
Complete comment system (list, read, create, update, delete)
Asset and folder management
Tag management
System diagnostics and site config
Optional mutations with multiple safety layers (
WIKI_MUTATIONS_ENABLED, dry-run mode, confirm tokens, path prefix restrictions)Built-in resources:
wikijs://markdown-guide,wikijs://mermaid-guide,wikijs://api-permissions-guideTyped errors with LLM-friendly messages
GraphQL client with timeout + exponential backoff
Sensitive field filtering and input hardening
Related MCP server: mcp-wikijs-mv
Quick Start (HTTP/SSE Mode)
cp .env.example .env
npm install
npm run buildEdit .env:
WIKI_BASE_URL=https://your-server
WIKI_API_TOKEN=your_wikijs_jwt_token
MCP_TRANSPORT=http
MCP_HOST=0.0.0.0
MCP_PORT=3200
WIKI_MUTATIONS_ENABLED=false # set true only when you need writes
WIKI_MUTATION_DRY_RUN=trueRun it:
npm startConnect your MCP client to:
https://your-server:3200/sseRecommended Production Setup (systemd + Caddy)
See the full systemd service and Caddyfile examples in the repo (or the one running at 666temple.love right now).
Basic pattern:
Run as a dedicated user
Bind to localhost only
Put Caddy (or nginx) in front with HTTPS + subdomain (e.g.
mcp.website.com)Use a strong
WIKI_MUTATION_CONFIRM_TOKENif you enable writes
Environment Variables
Variable | Required | Default | Description |
| Yes | - | Your Wiki.js URL (e.g. |
| Yes | - | Wiki.js JWT API token |
| No |
| Use |
| No |
| Bind address for HTTP mode |
| No |
| Enable write tools |
| No |
| Preview mutations without writing |
| No | (empty) | Extra safety gate — write tools must supply matching |
| No | (empty) | Comma-separated path prefixes allowed for mutations |
Full reference is in .env.example.
Wiki.js Setup
Go to Administration → API in Wiki.js and enable API access
Create an API key (JWT) with appropriate permissions
Paste it into
WIKI_API_TOKEN
For heavy read usage you usually only need read:pages + read:source + read:comments.
Mutation Safety
Write tools are disabled by default. When enabled they still have multiple guardrails:
WIKI_MUTATION_DRY_RUN=true(default) → tools only previewWIKI_MUTATION_CONFIRM_TOKEN→ forces you to pass a matchingconfirmargument on every writeWIKI_ALLOWED_MUTATION_PATH_PREFIXES→ scope writes to specific path prefixesAll mutation attempts are logged to stderr with structured audit info
MCP Client Config
HTTP/SSE (recommended)
{
"mcpServers": {
"wikijs": {
"command": "node",
"args": ["/path/to/wikijs-mcp-http/dist/index.js"],
"env": {
"WIKI_BASE_URL": "https://website.com",
"WIKI_API_TOKEN": "your_token",
"MCP_TRANSPORT": "http",
"MCP_PORT": "3200"
}
}
}
}Stdio (local only)
Still supported if you prefer the classic style.
Development
npm run dev # HTTP dev server with hot reload
npm run dev:stdio # stdio dev mode
npm run buildLicense
CC0. Do whatever the fuck you want with it.
Maintained as part of the 666 Grimoire stack.
Available Tools
29 toolswikijs_create_commentA
Create a new comment on a page. Requires WIKI_MUTATIONS_ENABLED=true and may need comment posting permissions. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
Inputs: pageId (required), content (required), confirm, replyTo, +2 more.
wikijs_create_pageA
Create a new page. Requires WIKI_MUTATIONS_ENABLED=true. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
Inputs: path (required), title (required), content (required), confirm, +10 more.
wikijs_delete_commentA
Delete a comment by ID. Requires WIKI_MUTATIONS_ENABLED=true and comment management permissions. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
Inputs: id (required), confirm.
wikijs_delete_pageA
Delete a page by ID. Requires WIKI_MUTATIONS_ENABLED=true and may need manage:pages or delete:pages permission. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
Inputs: id (required), confirm.
wikijs_delete_tagA
Delete a tag by ID. Removes the tag from all pages and the tag registry. Requires WIKI_MUTATIONS_ENABLED=true and may need manage:system permission. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
Inputs: id (required), confirm.
wikijs_get_commentA
Get a single comment by ID. Returns full comment details including content and author information.
Inputs: id (required).
wikijs_get_current_userA
Get the profile of the currently authenticated API user. Returns identity, permissions context, and activity info.
Inputs: no named parameters.
wikijs_get_page_by_idA
Get a single page body/content by numeric page ID.
Inputs: id (required).
wikijs_get_page_by_pathB
Get a single page body/content using path + locale.
Inputs: path (required), locale.
wikijs_get_page_historyA
Get edit history trail for a page by ID. Returns version dates, authors, and change types.
Inputs: id (required), offset, limit.
wikijs_get_page_linksB
Get all pages and their outbound links for a locale. Returns an array of pages with their link relationships.
Inputs: locale.
wikijs_get_page_treeA
Get the page tree hierarchy for site navigation and structure discovery. Returns folders and/or pages with depth info.
Inputs: path, parentId, mode, locale, +1 more.
wikijs_get_page_versionA
Get a specific version of a page by page ID and version ID. Returns full page content and metadata for that version.
Inputs: id (required), versionId (required).
wikijs_get_site_configA
Retrieve safe (non-sensitive) site configuration including title, description, feature flags, and upload limits. Does not expose secrets or authentication keys.
Inputs: no named parameters.
wikijs_get_system_infoA
Retrieve Wiki.js system information including version, database type, and usage statistics. Useful for diagnostics. Sensitive fields (dbHost, configFile, workingDirectory, hostname) are filtered out.
Inputs: no named parameters.
wikijs_list_asset_foldersB
List asset folders within a parent folder. Returns folder structure for navigating the asset hierarchy.
Inputs: parentFolderId.
wikijs_list_assetsA
List assets (files, images) in a specific folder. Returns asset metadata including filename, type, size, and upload date.
Inputs: folderId, kind.
wikijs_list_commentsA
List all comments for a specific page by path and locale. Returns comment details including author info and timestamps.
Inputs: path (required), locale.
wikijs_list_pagesC
List pages for crawling/indexing with optional locale and limit.
Inputs: locale, limit, orderBy, orderByDirection.
wikijs_list_tagsA
List all tags used across wiki pages. Useful for discovering content categories and taxonomy.
Inputs: no named parameters.
wikijs_move_pageA
Move a page to a new path or locale. Requires WIKI_MUTATIONS_ENABLED=true and may need manage:pages permission. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
Inputs: id (required), destinationPath (required), confirm, destinationLocale.
wikijs_restore_pageA
Restore a page to a previous version. Requires WIKI_MUTATIONS_ENABLED=true and may need manage:pages permission. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
Inputs: id (required), versionId (required), confirm.
wikijs_search_pagesA
Search pages by keyword and return path/title summary for knowledge lookup.
Inputs: query (required), locale, path.
wikijs_search_tagsA
Search for tags matching a query string. Returns an array of matching tag name strings.
Inputs: query (required).
wikijs_search_usersA
Search for users by name or email. Returns matching user profiles for collaboration context.
Inputs: query (required).
wikijs_update_commentA
Update an existing comment by ID. Requires WIKI_MUTATIONS_ENABLED=true and comment management permissions. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
Inputs: id (required), content (required), confirm.
wikijs_update_pageC
Update an existing page by ID. Requires WIKI_MUTATIONS_ENABLED=true. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
Inputs: id (required), confirm, title, content, +11 more.
wikijs_update_tagA
Update an existing tag by ID. Changes the tag slug and/or title. Requires WIKI_MUTATIONS_ENABLED=true and may need manage:system permission. confirm is only checked when WIKI_MUTATION_CONFIRM_TOKEN is set.
Inputs: id (required), tag (required), title (required), confirm.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 29 tools
Each tool has a distinct verb-noun pair that clearly specifies the resource and action. Potential overlaps like get_page_by_id vs get_page_by_path are resolved by different identifiers. No two tools are ambiguous.
All tools follow the consistent pattern 'wikijs_verb_noun' with imperative verbs and lowercase nouns separated by underscores. No mixing of styles or irregular naming.
29 tools is somewhat high for an MCP server, but the breadth of Wiki.js functionality (pages, comments, tags, assets, users, system) justifies the count. Still, it leans towards the heavier side.
Core page and comment operations are well-covered with CRUD and additional actions. However, tag creation is missing (only delete/update/list/search), asset management lacks upload/delete, and user management is limited to search and current user. Some notable gaps remain.
Maintenance
Related MCP Connectors
Shared project wiki for AI agents: read and write pages, next actions, and activity logs over MCP.
MCP-native open-source Notion alternative: read & write pages, databases and kanban boards.
A MCP server built for developers enabling Git based project management with project and personal…
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables full management of WikiJS instances, supporting operations like page creation, searching, and updating. It also provides tools for knowledge graph exploration, content summarization, and retrieval of wiki statistics.19 npmMIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Wiki.js with full GraphQL API coverage, fine-grained permissions, multi-user support, and deployable on Vercel.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceMCP server for accessing Wiki.js through its GraphQL API, enabling page management, search, tags, and system info operations.MIT
- AlicenseAqualityDmaintenanceAn MCP server for managing Wiki.js 2.x pages through its GraphQL API, enabling search, read, create, update, move, delete, version history, and asset listing.1364 npmMIT