grimoire-beholder-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LIBRARY_DIR | Yes | Absolute path to the directory containing config.toml and book.db | |
| PROJECT_DIR | Yes | Absolute path to the grimoire-beholder-mcp project directory (where uv sync was run) |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_booksA | List every book in the library, with its id, slug, name, author, type, and page count. |
| get_book_outlineA | Return one book's chapter/section outline -- the map for get_section. Lists every chapter (chapter_index, title, page_start) and, nested under each, its sections (section_index, title, page_start, approx_tokens). Auto-split sections have no native title; one is synthesized from a text snippet so it's still identifiable. Returns no section text -- that's get_section's job; this is just the map. Typical flow: list_books -> get_book_outline(book_id) -> get_section( book_id, chapter_index, section_index) for targeted reading. Use search_book instead when you don't already know which section to read. |
| search_bookA | Search the library and return cited, scored excerpts. Combines semantic and keyword search by default. Optionally scope to one book (book_id), or filter by exact author or source_type (one of "pdf", "epub", "markdown", "text"). |
| get_sectionB | Fetch one section's full text and summary. The parent of a search_book hit, or a section located via get_book_outline's chapter_index/section_index map. |
| book_statusA | Report ingest status (chapter/section counts, chunk counts per stage) for every book. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: list_books for listing, book_status for ingest status, get_book_outline for structure, get_section for content, and search_book for queries. No overlap or ambiguity.
Most tools follow a verb_noun pattern (list_books, get_book_outline, get_section, search_book), but book_status uses a noun_noun format, creating a slight inconsistency. Overall still readable.
Five tools is an ideal number for a library reading server, covering all essential read and search operations without unnecessary complexity.
The tool surface covers listing, status, navigation, content retrieval, and search. No obvious gaps for the stated purpose of browsing and reading books.