# DokuWiki MCP Server — 30 tools via DADL

The DokuWiki DADL turns DokuWiki's API into an MCP server that Claude, GPT or any MCP-compatible agent can consume directly. One YAML file declares all 30 tools — page, media, acl, wiki, user, recent, and more — and ToolMesh serves them at runtime. No Python boilerplate, no per-endpoint code, no separate MCP server process.

Below: the endpoint coverage matrix, a two-block ToolMesh setup, the full tool reference grouped by DokuWiki feature area, required credential scopes.

**Source:** [DokuWiki Remote API](https://www.dokuwiki.org/devel:jsonrpc)

**Updated:** 2026-03-29

**Tags:** wiki, crud, search, file-management, user-management, authentication, auth:basic

## Which DokuWiki endpoints are covered?

**94%** (31 of ~33 endpoints).

**Focus:** pages, media, search, ACL, user management, wiki metadata

**Missing:** plugin-specific methods beyond acl and usermanager

*Last reviewed: 2026-03-29*

## How do you configure the DokuWiki DADL?

1. Ensure the Remote API is enabled in DokuWiki: Admin → Configuration → Authentication → enable 'remote' option
2. Optionally restrict remote access: set 'remoteuser' to limit which users/groups can use the API
3. Use an existing DokuWiki user account with appropriate permissions
4. The API uses HTTP Basic Authentication with your DokuWiki username and password

**Environment variable:** `CREDENTIAL_DOKUWIKI_USERNAME and CREDENTIAL_DOKUWIKI_PASSWORD`

[Authentication docs](https://www.dokuwiki.org/devel:jsonrpc)

*DokuWiki is self-hosted. Replace the URL with your instance address. The JSON-RPC endpoint is at /lib/exe/jsonrpc.php. All API methods use POST. Page IDs use colon-separated namespaces (e.g. 'wiki:syntax', 'namespace:page').
*

## How do you install the DokuWiki MCP server with ToolMesh?

Add to your `backends.yaml`:

```yaml
- name: dokuwiki
  transport: rest
  dadl: /app/dadl/dokuwiki.dadl
  url: "https://your-wiki.example.com/lib/exe/jsonrpc.php"
  credentials:
    dokuwiki_username: "${CREDENTIAL_DOKUWIKI_USERNAME}"
    dokuwiki_password: "${CREDENTIAL_DOKUWIKI_PASSWORD}"

```

Set the credential:

```
CREDENTIAL_DOKUWIKI_USERNAME and CREDENTIAL_DOKUWIKI_PASSWORD=your-token-here
```

## What 30 tools does the DokuWiki DADL expose?

- **POST** `get_api_version` — Get the DokuWiki JSON-RPC API version number
- **POST** `get_wiki_version` — Get the DokuWiki software version string
- **POST** `get_wiki_title` — Get the wiki title
- **POST** `get_wiki_time` — Get the current server Unix timestamp
- **POST** `who_am_i` — Get details about the currently authenticated user (login, name, email, groups, admin/manager status)
- **POST** `acl_check` — Check ACL permissions for a page or media file. Returns permission level (0=none, 1=read, 2=edit, 4=create, 8=upload, 16=delete, 255=admin)
- **POST** `list_pages` — List all pages in a namespace. Returns page ID, revision, modification time, and size for each page.
- **POST** `search_pages` — Full-text search across all wiki pages. Returns matching pages with snippets.
- **POST** `get_recent_page_changes` — Get recently changed pages. Returns page ID, revision timestamp, author, and summary for each change.
- **POST** `get_page` — Get the raw wiki syntax content of a page. Use getPageHTML for rendered HTML instead.
- **POST** `get_page_html` — Get the rendered HTML of a page
- **POST** `get_page_info` — Get metadata about a page (last modified, author, locked status)
- **POST** `get_page_history` — Get the revision history of a page. Returns list of revisions with timestamp, author, summary, and size.
- **POST** `get_page_links` — Get all links contained in a page (internal and external)
- **POST** `get_page_backlinks` — Get all pages that link to the specified page
- **POST** `save_page` — Create or update a page. Replaces the entire page content with the provided text.
- **POST** `append_page` — Append text to an existing page without replacing existing content
- **POST** `lock_pages` — Lock pages to prevent concurrent editing
- **POST** `unlock_pages` — Unlock previously locked pages
- **POST** `list_media` — List media files in a namespace. Returns file ID, size, modification time, and permissions.
- **POST** `get_recent_media_changes` — Get recently changed media files
- **POST** `get_media` — Download a media file as base64-encoded content
- **POST** `get_media_info` — Get metadata about a media file (size, modification time, permissions)
- **POST** `save_media` — Upload a media file (base64-encoded)
- **POST** `delete_media` — Permanently delete a media file
- **POST** `list_acls` — List all ACL rules. Requires admin permissions.
- **POST** `add_acl` — Add an ACL rule. Permission levels: 0=none, 1=read, 2=edit, 4=create, 8=upload, 16=delete, 255=admin
- **POST** `delete_acl` — Remove an ACL rule
- **POST** `create_user` — Create a new DokuWiki user account. Requires admin permissions.
- **POST** `delete_user` — Permanently delete user accounts. Requires admin permissions.

## What composite workflows does the DokuWiki DADL provide?

- **FN** `page_search_and_replace` — Replace all occurrences of a literal substring in a wiki page and save it. Internally: get_page → string replace → save_page. The full page content never leaves the ToolMesh server; only { success, replacements } is returned. The search is a literal match (no regex).

- **FN** `page_append_section` — Insert content at the end of an existing section, before the next heading of equal or higher level. Useful for adding material between e.g. section 6.2 and 7 — which append_page cannot do because it only appends to EOF. Internally: get_page → parse headings → splice → save_page. The full page content never leaves the ToolMesh server.

- **FN** `chunked_save_page` — Stateful chunked save: buffers text chunks server-side in a hidden draft page and writes the assembled content to the target page in a single revision when finalized.
Workflow:
  1. First chunk: chunk_index=0  (resets the buffer for this session_id).
  2. Middle chunks: chunk_index=1..N-2  (each appended to the buffer).
  3. Final chunk: chunk_index=N-1, finalize=true
     — assembles buffer, writes target page in ONE revision, deletes draft.

Use this when the per-call payload of execute_code is too small to fit the full page text in a single save_page call (e.g. when the calling transport limits the size of tool-call arguments). Each call carries only one chunk so the per-call payload stays small, while the target page receives one clean revision.
All intermediate buffer operations (draft create, chunk appends, draft delete) are flagged as DokuWiki minor edits, so they are hidden from the default Recent Changes view. Only the final write to the target page surfaces — the noise stays out of the wiki's change history.
Caveats:
  - session_id must be unique per upload — collisions corrupt the buffer.
  - Abandoned sessions leave a draft at _chunked_uploads:<session_id>;
    re-using the same session_id with chunk_index=0 cleans it up.
  - Chunks must arrive in order; the composite does not reorder them.


## Which DADLs are related to DokuWiki?

- [BookStack](https://www.dadl.ai/d/bookstack/) — BookStack wiki and documentation platform REST API -- shelves, books, chapters, pages (HTML/Markdown content), attachments, image gallery, comments, cross-entity search, exports (HTML/Markdown/PDF/ZIP), ZIP imports, users, roles, content permissions, recycle bin, audit log and tags. Hierarchy: shelves > books > chapters > pages.
- [GitLab](https://www.dadl.ai/d/gitlab/) — GitLab REST API v4 — projects, issues, merge requests, pipelines, CI/CD, and code search
- [Mikrotik](https://www.dadl.ai/d/mikrotik/) — MikroTik RouterOS REST API -- manage interfaces, IP addresses, routing, firewall, DHCP, DNS, PPP, queues, wireless, system configuration, users, certificates, files, logs, and diagnostics on RouterOS v7.1+ devices
- [Vikunja](https://www.dadl.ai/d/vikunja/) — Vikunja open-source task management — project planning, kanban boards, and task tracking
- [Algolia HN Search](https://www.dadl.ai/d/algolia-hn-search/) — Algolia Hacker News Search API — full-text search, filtering, and retrieval for stories, comments, and users on Hacker News
- [Cloudflare](https://www.dadl.ai/d/cloudflare/) — Cloudflare API -- DNS, Pages, Workers, KV, R2, D1, Zones, SSL/TLS, Cache, Load Balancers, Firewall/WAF, Page Rules, Access (Zero Trust), and account management

---

**Canonical URL:** https://www.dadl.ai/d/dokuwiki/
**Raw DADL:** https://github.com/DunkelCloud/dadl-registry/blob/main/dokuwiki.dadl
