Skip to content

Concepts

The following terms are relevant for understanding the DokuWiki MCP server and its architecture.

The Model Context Protocol is an open standard that enables AI assistants to securely access external tools and data sources. It defines how an AI model invokes tools, passes inputs, and receives results - without the user writing code.

Aspect Relevance for this server
Role The DokuWiki MCP server provides 48 tools via MCP
Version Negotiated at handshake (LATEST: 2025-11-25)
Specification modelcontextprotocol.io

The AI assistant (e.g. in TypingMind) connects to the MCP server, receives the list of available tools, and can invoke them via natural language prompts.

JSON-RPC (Remote Procedure Call) is the protocol used for communication between the AI assistant and the MCP server. The assistant sends a JSON request with a tool name and parameters; the server responds with a JSON result.

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "dokuwiki_get_page",
"arguments": { "page": "start" }
}
}

On the server side, the same JSON-RPC interface is used to communicate with the DokuWiki instance (lib/exe/jsonrpc.php).

stdio (Standard Input/Output) is the transport mode of the MCP server. The server reads JSON-RPC requests from stdin and writes responses to stdout.

Stream Usage
stdout MCP JSON-RPC protocol (never logs)
stderr Structured JSON logs (logger.js)

JWT is the authentication mechanism for the DokuWiki API. The token is sent as a Bearer token in the Authorization header:

Authorization: Bearer <jwt-token>

DokuWiki 2024-02-06b “Kaos” has built-in JWT support. The token is generated inside the DokuWiki container and stored in the TypingMind userSettings as DOKUWIKI_TOKEN.

A namespace is DokuWiki’s concept for organizing pages. It acts like a directory, but uses colons (:) as separators instead of slashes (/).

Example Meaning
project:alpha Page “alpha” in namespace “project”
project:client:beta Nested: “beta” in “project:client”
start Page in the root namespace

All 48 tools follow the same factory pattern:

export function toolName(dokuwikiClient, config) {
return {
name: 'dokuwiki_tool_name',
description: '...',
inputSchema: { type: 'object', properties: {...} },
handler: async (args) => { ... }
};
}

Each factory receives the DokuWikiClient and server configuration. Tools are registered in src/tools/index.js.

11 of the 48 tools are marked as destructive (destructiveHint: true). The MCP protocol flags these tools so the AI assistant can request confirmation before execution.

Examples: delete_media, delete_user, save_page (mode=replace), rename_page, rename_media.