bookstack-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | Listen address host, default 127.0.0.1 (0.0.0.0 in Docker) | 127.0.0.1 |
| MCP_PORT | No | Listen address port, default 3000 | 3000 |
| BOOKSTACK_URL | No | Your BookStack address, e.g. https://wiki.example.com | |
| MCP_PUBLIC_URL | No | This server's public address including the sub-path, e.g. https://tools.example.com/bookstack-mcp. The MCP endpoint is this + /mcp | |
| MCP_AUTH_SECRET | No | Encrypts the tokens given to Claude: openssl rand -base64 32. Keep it secret; changing it signs everyone out | |
| BOOKSTACK_TOKEN_ID | No | Token ID for BookStack API access (used in stdio mode) | |
| BOOKSTACK_READ_ONLY | No | Set to 'true' to enable read-only mode: write tools aren't registered at all | false |
| BOOKSTACK_TOKEN_SECRET | No | Token Secret for BookStack API access (used in stdio mode) | |
| MCP_ALLOWED_REDIRECT_HOSTS | No | Where sign-in may redirect back to. Default claude.ai,claude.com,localhost,127.0.0.1,[::1] — enough for Claude; add hosts for other MCP clients, * allows any | claude.ai,claude.com,localhost,127.0.0.1,[::1] |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| searchA | Full-text search across shelves, books, chapters and pages. Returns matches with [type:id] refs, their location and a text snippet. BookStack search syntax works in |
| listA | List shelves, books, chapters or pages. Use it to see what exists (e.g. all books) or to find recently updated pages (sort=updated). To see what's inside a book, use get on the book instead. |
| getA | Open one item by id. page → full content as Markdown plus its location. book → table of contents (chapters and pages). chapter → its pages. shelf → its books. |
| create_pageA | Create a page from Markdown, inside a chapter (chapter_id) or directly in a book (book_id). Check first that a page on this topic doesn't already exist — updating beats duplicating. |
| update_pageA | Replace a page's content, add to its end/start (mode), rename it, retag it or move it. For a small change inside an existing page prefer edit_page. WYSIWYG pages stay WYSIWYG (the Markdown is converted to HTML). |
| edit_pageA | Exact find-and-replace in a page's Markdown source — the cheap way to fix or extend part of a page without resending all of it. old_text must match the source exactly (read the page with get first). Only for Markdown-editor pages; for WYSIWYG pages use update_page. |
| create_bookC | Create a book, optionally placing it on a shelf. |
| create_chapterC | Create a chapter in a book. Chapters group pages and can't be nested. |
| create_shelfC | Create a shelf (a group of books), optionally with books on it. |
| updateA | Rename a shelf/book/chapter or change its description or tags; move a chapter (with its pages) to another book; add or remove books on a shelf. For pages use update_page / edit_page. |
| deleteA | Move a page, chapter, book or shelf to the BookStack recycle bin (restorable by an admin). Deleting a book or chapter deletes everything inside it; deleting a shelf keeps its books. Only delete when the user explicitly asked for it. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| document | Write up what we discussed or did in this conversation as BookStack documentation |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Most tools have clearly distinct purposes: search, list, and get cover different retrieval modes, and create_* are resource-specific. The main ambiguity is between edit_page and update_page, plus the generic 'update' versus 'update_page', though the descriptions explicitly clarify when to use each.
Page and creation tools follow a clean verb_noun pattern (create_page, update_page, edit_page, create_book, create_chapter, create_shelf), but read/update/delete tools are bare verbs (search, list, get, update, delete). This mixes conventions within the same set.
11 tools is well-scoped for a BookStack integration, covering the four entity types (shelf, book, chapter, page) without bloat. Each tool earns its place in the workflow.
Full lifecycle coverage exists: create for all four entity types, read via get/list/search, update via update_page/edit_page/update, and delete across types. Minor gaps like attachments or user/role management are outside the core wiki scope and unlikely to block agents.