mcp-wikijs
Search, get, list, and create pages on a Wiki.js instance.
Click on "Install 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., "@mcp-wikijssearch for 'engineering onboarding'"
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.
mcp-wikijs
MCP server that connects Claude to your Wiki.js instance.
Tools
Tool | Description |
| Search pages by keyword |
| Get full page content by path |
| List all pages |
| Create a new markdown page |
Related MCP server: WikiJS MCP Server
Setup
1. Get your Wiki.js API key
In Wiki.js admin panel → Administration → API Access → create a key.
2. Configure environment
cp .env.example .env
# Fill in WIKIJS_URL and WIKIJS_API_KEY3. Install and run
npm install
node index.js4. Connect to Claude Code
Add to ~/.claude/claude_mcp_config.json:
{
"mcpServers": {
"wikijs": {
"command": "node",
"args": ["/absolute/path/to/mcp-wikijs/index.js"],
"env": {
"WIKIJS_URL": "https://your-wiki.railway.app",
"WIKIJS_API_KEY": "your-api-key"
}
}
}
}Deploy to Railway
Push this repo to GitHub
New Project on Railway → Deploy from GitHub
Add
WIKIJS_URLandWIKIJS_API_KEYas environment variables
Available Tools
4 toolscreate_pageC
Create a new page in Wiki.js
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Page title | |
| path | Yes | Page path e.g. docs/new-page | |
| content | Yes | Page content in Markdown | |
| description | No | Short page description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It only states 'Create', which implies a write operation, but lacks details on side effects (e.g., whether it overrides existing content), error handling, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence. It is front-loaded with the action and resource, but it lacks any structure or additional context that might be helpful. It is not excessively verbose, but could be slightly more informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is minimal but adequate for a simple create operation given that the schema fully describes the parameters. However, without behavioral details or output schema, an agent may lack sufficient context for full correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all four parameters with descriptions, achieving 100% coverage. The tool description adds no additional meaning beyond what is in the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('new page in Wiki.js'). It is straightforward and distinguishes from sibling tools which are read-only operations, though it lacks explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the sibling tools (e.g., when to create vs. update an existing page). The description does not mention any conditions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pageB
Get the full content of a Wiki.js page by its path
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Page path e.g. /home or /docs/setup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It does not mention that the tool is read-only, what happens on missing paths, authentication needs, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundancy, front-loaded with key information. Every word is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool, the description covers the core functionality. However, it lacks details on return format, error behavior, or performance considerations, which is noticeable given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (path documented). Description adds no additional meaning beyond restating the parameter purpose; it is adequate but not enriched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('get'), the resource ('full content of a Wiki.js page'), and the method ('by its path'). It distinguishes from sibling tools (create, list, search) by focusing on retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like search_pages or list_pages. The description does not mention prerequisites or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pagesC
List all pages in Wiki.js
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max pages to return (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose behavioral traits such as return format, pagination behavior, or limits. Only the schema indicates pagination via the 'limit' parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise, but it lacks substance and could be considered underspecified. It does not fully earn its place by adding sufficient value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description should provide more context about the operation (e.g., pagination, ordering, what data is returned). It does not fully compensate for the missing structured information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (limit parameter fully described). The description adds no additional meaning beyond the schema, but per guidelines, baseline is 3 when coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'pages in Wiki.js', but does not differentiate from sibling tools like search_pages or get_page, which could cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (search_pages, get_page) or when not to use it. The description is too terse to provide context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_pagesB
Search for pages in Wiki.js by keyword
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully convey behavior. It states 'search by keyword' but does not indicate whether the search is read-only, what fields are searched (title, content, etc.), or if there are any side effects or limitations like pagination or scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. Every part contributes to clarity, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (1 parameter, no output schema, no annotations), the description is minimally adequate but lacks details about the result format, search scope, or any constraints. It covers the core function but not fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter 'query' described as 'Search keyword'. The description repeats this ('by keyword') but adds no additional meaning beyond the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Search' and identifies the resource 'pages in Wiki.js' with the method 'by keyword'. It clearly distinguishes from sibling tools like create_page, get_page, and list_pages, which have different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as list_pages (for all pages) or get_page (for a specific page). There are no usage exclusions or best practices mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.0- First observed
create_page - First observed
get_page - First observed
list_pages - First observed
search_pages
TDQS
Scored across 4 tools
Each tool targets a unique operation on pages: create, get by path, list all, and search. No overlap in functionality.
All tools follow a consistent verb_noun pattern with snake_case (create_page, get_page, list_pages, search_pages).
With 4 tools, the set is well-scoped for basic page operations and within the ideal range of 3-15 tools.
Missing critical operations like update and delete pages, which are essential for a wiki. Agents cannot modify or remove pages, leading to workflow failures.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Connect your team's living knowledge base — docs, data, issues, CRM — to Claude and ChatGPT.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Read, edit, publish, and preview your pepita websites from Claude.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that enables Claude to read and update documentation in Wiki.js instances through capabilities like searching, reading, creating, and updating wiki pages.17-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search, retrieve, and optionally edit pages in a WikiJS knowledge base via the Model Context Protocol.311MIT
- FlicenseAqualityDmaintenanceEnables natural language query and ingestion of wiki knowledge bases built from documents, powered by Claude Agent SDK skills.2-
- AlicenseAqualityCmaintenanceAn MCP server that lets Claude (or any MCP client) manage a Wiki.js instance through its GraphQL admin API — read and write pages, manage navigation and groups, and trigger Git storage syncs.11MIT