Model Context Protocol server for BookStack content management system. Provides tools to list, search, and manage BookStack shelves, books, chapters, and pages. Includes semantic search capabilities powered by embeddings and support for multiple database backends (SQLite, PostgreSQL).
BookStack MCP demonstrates solid definition quality with consistent verb-noun naming, complete parameter schemas, and proper input validation structure. All 12 tools have descriptions and typed parameters. However, there are systematic gaps in parameter descriptions (many lack usage context), output schemas are not documented, and error handling guidance is minimal. The server shows production competence but lacks the polish and LLM-optimization of A-grade servers.
Create a new page in BookStack
Delete a page from BookStack
Get a scoped, depth-limited directory tree of BookStack content. Assembles shelf/book/chapter/page hierarchy without requiring multiple separate list calls.
Trigger embedding of page content for semantic search (internal tool for the embedder service)
Get the full content of a page from BookStack
List all books in BookStack, optionally filtered by shelf_id
List all chapters in a book
Output schemas are not documented. Tools like list_shelves, list_books, get_page_content return structured data but callers cannot see what fields to expect. This forces LLMs to guess field names and invites chaining errors.
Parameter descriptions are minimal and lack usage context. E.g., 'shelf_id' is described only as 'Optional shelf ID to filter books', no explanation of how to obtain a shelf_id or what happens when omitted. Many params lack format/range information.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 78 | <=2025-11-25 | v2 |
List pages in BookStack, optionally filtered by book_id or chapter_id
List all shelves in BookStack
Search pages in BookStack by text content
Search pages using semantic/vector similarity search across embeddings
Update an existing page in BookStack
Error handling is not visible in the schema. No guidance on what errors might occur, how to recover, or what to do if a page_id does not exist. create_page, update_page, and delete_page lack confirmation or dry-run capabilities despite being state-modifying.
Tool responses do not include pagination metadata. list_shelves, list_books, list_chapters, list_pages, search_pages, and semantic_search accept no limit/offset/cursor parameters and provide no indication of result truncation. Large result sets risk context window exhaustion.
embed_content appears to be an internal/administrative tool ('internal tool for the embedder service') exposed in the public interface. Its purpose and safety profile are unclear. This may be a design error or poor documentation.
delete_page lacks confirmation/dry-run capability. Destructive operations should support a pre-execution safety step. Currently, an LLM can delete a page in one call with no recovery option.
create_page and update_page accept 'content' as HTML or markdown but do not specify which format is expected or how to detect format from the input. This ambiguity may cause LLMs to pass malformed content.
search_pages and semantic_search both search for content but use different mechanisms (text vs vector). Descriptions do not explain when to use each or how they differ. LLMs may conflate them.