Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GOODREADS_USER_IDNoYour numeric Goodreads user ID, used as the default for shelf tools. Overrides the config file ~/.config/goodreads-mcp/config.json.

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_booksA

Search Goodreads for books by title/author/ISBN.

Uses the JSON autocomplete endpoint (no auth, no HTML parsing). Returns book_id, title, author, rating info, and a cover URL.

max_results: how many to return. The autocomplete endpoint itself answers with at most ~5 matches, so a larger value returns what Goodreads sent, not more.

get_bookA

Get full details for a book by its Goodreads id (numeric, or numeric-slug like '11870085-the-fault-in-our-stars' or '2767052.The_Hunger_Games'). An ISBN is not a book id: find the book with search_books first.

Parses the page's embedded NEXT_DATA JSON (Apollo state) rather than scraping the DOM, which survives markup changes. Includes the full ratings histogram, all series memberships, and review-language breakdown — use get_reviews for the actual review text. review_language_limit controls how many languages are returned (default 5, maximum 25).

When you cite details or ratings from this book, link to its 'url'.

get_reviewsA

Get reader reviews for a book — the actual review text, not just a score.

Fetches from Goodreads' GraphQL backend with true pagination, so limit can exceed the ~30 shown on a page. Reviews come in "most relevant" order and aggregate across all editions of the work. Each review has the reviewer name, star rating (1-5), full text, like/comment counts, date, a spoiler flag, a 'url' permalink (use it to cite/link), and the reviewer's profile url.

limit: max reviews to return (capped at 100 to stay polite). min_rating / max_rating: server-side star filters, each 1-5, e.g. min_rating=4 for positive reviews, max_rating=2 for the critical ones. exclude_spoilers: drop reviews flagged as spoilers. Paging is capped, so a book whose reviews are mostly spoilers can return fewer than limit.

'has_more' is true when Goodreads has reviews this call did not read.

similar_booksA

"Readers also enjoyed" — books similar to the given one.

Goodreads' own recommendation graph (hard to reproduce with web search). Each result has book_id/title/author/rating/url so you can chain into get_book or get_reviews. Results paginate in batches and limit is capped at 100.

author_booksA

List an author's works (bibliography), given any of their books.

Resolves the book's primary author, then returns their works ranked by popularity. Each result has book_id/title/author/rating/url. Results paginate in batches and limit is capped at 100.

series_booksA

List the books in a series (with reading-order placement), given any book in that series. When a book belongs to multiple series, pass the zero-based series_index from get_book's series_memberships order.

Each entry has the series 'placement' (e.g. '1', '0.5' for a prequel), 'is_primary' (a main-sequence entry vs companion), and the usual book_id/title/author/rating/url. Results paginate in batches and limit is capped at 100.

get_editionsA

List published editions of a book (formats, ISBNs, publishers, dates).

Useful for "which edition / format / ISBN" questions. Results paginate in batches and limit is capped at 100.

book_listsA

List the Listopia lists a book appears on (e.g. "Best Dystopian Fiction"), ordered by popularity.

Each list has its title, total member votes, how many books it contains, and a 'url'. Good for "what kind of book is this / what's it grouped with" and for discovery. Results paginate in batches and limit is capped at 100.

popular_booksA

Most popular books by release date — Goodreads' "Popular by date" chart.

Ranks the books/works released in a given year (or a specific month of a year) by how many Goodreads members have added them. Mirrors the goodreads.com/book/popular_by_date/[/] page. A year or month Goodreads has no chart for raises an error rather than returning no books.

year: 4-digit release year. month: optional 1-12 for a single month; omit for the whole year. limit: how many to return (capped at 50).

Each entry has rank, count (members who added it), and the usual book_id/title/author/rating/url so you can chain into get_book/get_reviews.

compare_booksA

Compare several books side by side by rating and rating distribution.

Fetches each book and returns them ranked best-to-worst by average rating, with the ratings_histogram plus 'pct_positive' (share of 4-5 star) and 'pct_critical' (share of 1-2 star) so you can judge not just the average but how divisive each book is. Pass 2-10 book ids (from search_books etc.); more than 10 is refused rather than silently trimmed, so split the call.

get_shelfA

List books on a shelf via its RSS feed (public shelves; no auth).

Common shelves: 'read', 'currently-reading', 'to-read', plus any custom shelf name. Names are case-sensitive and must match a shelf the user has (list_shelves gives them); any other name raises ValueError. An empty name lists every shelf. RSS pages hold ~100 items; pass page=2,3,... for more (pages start at 1). Defaults to the configured GOODREADS_USER_ID.

When you cite a book from a shelf, link it to its 'link' field.

list_shelvesA

List a user's shelf names (scraped from their public profile page; best effort). Defaults to the configured user.

Covers the exclusive shelves (read, to-read, ...) and custom shelves; every name works as get_shelf's 'shelf' argument. Raises LoginRequired for a private profile. The profile page may cap a very long shelf list.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.5/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct Goodreads resource or relation (search, book details, editions, lists, popular chart, shelves, reviews, similar/author/series books, compare). The 'related books' tools could superficially overlap, but descriptions clearly specify different data sources and use cases.

Naming Consistency4/5

All names use snake_case, but the set mixes verb_noun (get_book, search_books, compare_books, list_shelves) with noun_books (book_lists, popular_books, similar_books, author_books, series_books). The pattern is readable and largely predictable, with only minor stylistic drift.

Tool Count5/5

Twelve tools is a well-scoped set for a Goodreads MCP: enough to cover search, details, reviews, shelves, lists, editions, and related books without bloat. Each tool clearly earns its place.

Completeness4/5

Core read-only workflows are covered: book search/details, editions, reviews, similar/author/series discovery, shelves, Listopia, popular charts, and comparison. Minor gaps exist, such as direct author search by name or retrieving all books in a Listopia list, but agents can work around them via existing tools.

Maintenance

ActivityActive
ResponsivenessResponsive