Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CACHE_DIRNoWhere extracted text is cached (default ~/.cache/bookorbit-mcp)
BOOKORBIT_URLYesBase URL, e.g. https://bookorbit.example.com (trailing slash ok)
BOOKORBIT_TOKENNoStatic Bearer token; dev/testing only (expires ~15 min)
BOOKORBIT_PASSWORDNoPassword for automatic token refresh
BOOKORBIT_USERNAMENoUsername for automatic token refresh

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_booksA

Search the BookOrbit library by title, author, or series. Returns matching books with their bookId and available formats. Use this first to find the book (and confirm it has an EPUB) before reading its text.

get_bookA

Get full metadata for one book by bookId, including its files and formats. Use to confirm an EPUB is available and to read the description/series info.

list_chaptersA

List a book's chapters/sections with their sizes (character and word counts) but NO text. Parses and caches the EPUB on first call. Use this to see the book's structure and pick which chapter to read with get_chapter. EPUB only.

get_chapterA

Return the plain text of one chapter/section by its index (from list_chapters). Output is capped (default ~24000 chars); if the chapter is longer, use offset with the returned nextOffset to page through it. Read only what you need.

search_in_bookA

Keyword search inside one book's text. Returns short snippets with the chapter index, character offset, and approximate position (percent through the book). Use the returned chapter + offset with get_chapter to read the surrounding text.

list_annotationsA

List ALL of the user's annotations (their highlights and notes) across the whole library, newest-page first. Each item includes the highlighted text, any note, the book title/author, and the book's own chapter title/index. Paginated: use page with the returned total/pageSize to browse, or pass bookId to filter to one book. Returns a stats summary (book count, how many have notes, and where they came from).

list_annotated_booksA

List the books the user has annotated (highlighted / added notes to), each with an annotation count. Use this to discover which books have annotations before pulling them with get_annotations — like search_books precedes reading.

get_annotationsA

Return the user's own annotations (highlights and notes) for one book by bookId, ordered by the book's chapters. Each includes the highlighted text, any note, and the book's own chapterTitle/chapterIndex. NOTE: chapterIndex is BookOrbit's own chapter numbering, NOT the index used by list_chapters/get_chapter — match on chapterTitle if you want to read the surrounding text.

get_related_booksA

Find books related to one book by bookId: 'similar' recommendations, other books in the 'same_series' (with series index), or other books by the 'same_author'. Use to suggest what to read next or to explore a series/author.

suggest_metadataA

Typeahead lookup over the library's metadata facets — use it to resolve the exact spelling of a name before browsing/filtering (e.g. find the real author or series name to feed elsewhere). Pick a 'kind': authors, series, publishers, languages, narrators, or the user's own collections (each returns { name }), or genres / tags (which also return a filterable { id, name }). Matching is a case- and accent-insensitive 'contains' match on 'q', capped at ~15 results (20 for collections). 'q' is required — an empty/whitespace 'q' returns [].

list_seriesA

List the library's series (paginated), each with book/read counts and its authors. Use the returned series id with get_series_books to read the books in a series.

get_series_booksA

List the books in one series by seriesId (from list_series), in series order, paginated. Each item includes its series index and whether it has an EPUB.

list_authorsA

List the library's authors (paginated) with their book counts. Use the returned author id with get_author for a bio or get_author_books for their books.

get_authorA

Get one author by authorId (from list_authors), including their biography (description) and book count. Use get_author_books for their books.

get_author_booksA

List the books by one author by authorId (from list_authors), paginated. Each item includes series info and whether it has an EPUB.

list_collectionsA

List the user's collections (curated shelves). Use a returned collection id with get_collection_books to read the books it contains.

get_collection_booksA

List the books in one collection by collectionId (from list_collections), paginated. Optionally filter with q or collapse series into a single entry.

list_smart_scopesA

List the user's smart scopes (saved dynamic filters). Use a returned scope id with get_smart_scope_books to read the books it currently matches.

get_smart_scope_booksA

List the books matched by one smart scope by scopeId (from list_smart_scopes), paginated. Optionally filter with q.

get_reading_progressA

Get the user's reading progress for one book by bookId: per-file percentage and position (and audiobook progress when present). Use to answer 'where am I in this book'.

list_currently_readingA

List the books the user is currently reading, each with progress. Use to answer 'what am I reading right now'.

get_reading_sessionsA

Get the user's reading-session history for one book by bookId, paginated, plus aggregate stats (total sessions, total/average time, first/last session, pace).

get_library_statsA

Get library-wide totals: number of books, authors, series, publishers, genres, languages, total storage, the publication-year range, and books added this year.

get_reading_statsA

Get the user's personal reading totals: tracked, started, in-progress, and completed book counts, plus mean progress percent.

get_library_statisticA

Get one pre-aggregated, library-wide statistics chart (not the user's personal reading — use get_reading_statistic for that; for headline totals use get_library_stats). Pick a 'kind':

  • Distributions: format-distribution, genre-distribution, language-distribution, publication-decade, page-count-distribution, storage-by-format.

  • Top-N & rankings: top-authors, top-series, largest-books.

  • Timelines: books-added-over-time, publication-year-timeline, format-share-over-time.

  • Relationships: genre-cooccurrence, acquisition-lag-scatter.

  • Metadata health: metadata-completeness, library-metadata-completeness, metadata-score-distribution, metadata-freshness-gauge, library-integrity-gauge. Optionally restrict to one or more libraryIds. 'granularity' and 'range' apply only to books-added-over-time.

get_reading_statisticA

Get one pre-aggregated chart of the signed-in user's personal reading activity (derived from reading sessions + progress; for library-wide analytics use get_library_statistic). Pick a 'kind':

  • Activity over time: daily-reading, reading-heatmap, completion-timeline.

  • When they read: peak-hours (by hour), favorite-days (by weekday), session-timeline (one ISO week), session-archetypes.

  • Pace & finishing: reading-pace, completion-latency, completion-race, reading-survival, progress-funnel, goal-trajectory.

  • Breakdowns: genre-reading-time, author-genre-chord, reading-source-distribution. Optionally restrict to libraryIds. 'days' is a trailing look-back window (ignored by session-timeline). Per-kind extras: year/week (session-timeline), comparePrevious (progress-funnel), goalBooks (goal-trajectory).

list_librariesA

List the libraries in the BookOrbit instance with each library's book count, total size, and per-format counts.

get_dashboard_widgetA

Get one pre-computed dashboard 'headline card' — the compact, at-a-glance sibling of the richer get_reading_statistic charts. Pick a 'kind':

  • Goals & momentum: reading-streak, reading-goal, year-projection, monthly-challenge.

  • Reading profile: reading-rhythm (14-day series), reading-dna, diversity-score.

  • Nudges / recommendations: neglected-gems (highly-rated but unread), long-wait (longest-unread), highlight-of-the-day (one of the user's own annotations).

  • Overview: library-overview (aggregate totals across all libraries). (For the 'currently reading' card use list_currently_reading.)

get_book_shelfA

Get a curated shelf of books (full book cards) by 'type': recently-added, continue-reading, continue-listening (audiobooks), want-to-read, up-next-in-series, random, or smart-scope. Use this to surface reading suggestions and lists no other browse tool reaches. 'smart-scope' requires a smartScopeId (from list_smart_scopes).

get_collectionA

Get one collection's detail (name, description, icon, book count) by collectionId. Companion to get_collection_books; use list_collections to find the id.

search_author_metadataA

Search external metadata providers for author-biography candidates by name. This is EXTERNAL enrichment data (bios, images, provider ids) — NOT your library's authors (use search_books / list_authors for those). Useful for 'tell me about this author'.

get_book_coverA

Get a book's cover image bytes (returned as an image, not text). Use size 'thumbnail' for a small image or 'full' for the full-size cover. Errors if the book has no cover.

get_author_imageA

Get an author's photo bytes (returned as an image, not text). Use size 'thumbnail' for a small image or 'full' for the full-size photo. Errors if the author has no image.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/joshstrange/bookorbit-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server