Goodreads MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOODREADS_JWT | No | Manual auth: your Goodreads JWT token | |
| GOODREADS_COOKIE | No | Manual auth: your Goodreads browser session cookie, e.g. '_session_id2=...; other_cookie=...' | |
| GOODREADS_BROWSER | No | Force a browser for automatic macOS browser auth ('brave' or 'chrome'). Automatic auth tries Brave first, then Chrome. | |
| GOODREADS_NO_BROWSER_AUTH | No | Set to 1 to disable automatic browser auth |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| author_getB | Fetch a public Goodreads author page. Required: author_id. |
| book_getB | Fetch a public Goodreads book page. Required: book_id. |
| contextA | Get API domain context: resource taxonomy, auth requirements, query tips, and unique capabilities. Call this first. |
| enrichC | Resolve a title or Goodreads book ID to metadata suitable for syncing into Notion. |
| goodreads-search_booksC | Search public Goodreads book pages. Required: q. |
| importB | Import data from a JSONL file by issuing POST requests for each record. Each line must be a valid JSON object. Failed records are logged to stderr but do not stop the import. |
| review_get-shelfB | Fetch a public Goodreads user shelf page. Required: user_id. Optional: shelf. |
| shelf_auth_checkC | Validate Goodreads write authentication. |
| shelf_rateC | Set a Goodreads rating for a book. |
| shelf_setC | Mark a book as to-read, currently-reading, or read. |
| shelf_unrateB | Remove your Goodreads rating for a book. |
| shelf_unshelveC | Remove a book from your Goodreads shelves. |
| sqlA | Run read-only SQL against local database. Use for ad-hoc analysis, aggregations, and joins across synced resources. Requires sync first. |
| syncA | Sync data from the API into a local SQLite database. Supports resumable incremental sync (only fetches new data since last sync) and full resync. Once synced, use the 'search' command for instant full-text search. Exit codes & warnings: Resources the API denies access to (HTTP 403, or HTTP 400 with an access-policy body) are reported as warnings rather than failing the run. In --json mode each is emitted as a {"event":"sync_warning",...} line carrying status, reason, and message fields, and a final {"event":"sync_summary",...} aggregates the run. Exit 0 when at least one resource synced and no resource flagged in the spec as critical (x-critical: true) failed; non-critical failures emit {"event":"sync_warning","reason":"exit_policy_default_changed", ...} so callers can detect that a partial failure was tolerated. Pass --strict to exit non-zero on any per-resource failure. Exit is always non-zero when every selected resource failed, regardless of --strict. |
| workflow_archiveA | Archive fetches all syncable resources from the API and stores them in a local SQLite database. Supports incremental sync (only new data since last run) and full resync. After archiving, use 'search' for instant full-text search. |
| workflow_statusB | Show local archive status and sync state for all resources |
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 16 tools
Most tools target distinct Goodreads resources or actions, but sync and workflow_archive are near-duplicates: both fetch API resources into a local SQLite database with incremental/full resync. enrich also overlaps somewhat with book_get, so an agent cannot reliably distinguish the intended choice from descriptions alone.
Tool names mix noun_verb (author_get, book_get, shelf_rate), verb_noun (workflow_archive), single-word commands (context, sync, sql), a hyphenated namespace (goodreads-search_books), and an internal hyphen (review_get-shelf). They are readable but do not follow a predictable convention.
At 16 tools, the set is just above the ideal 3–15 range and feels slightly heavy, especially with the duplicate sync/workflow_archive pair and a separate workflow_status tool. The count is not extreme, but the redundancy inflates the surface.
Core read, search, shelf-write, and local sync/SQL operations are present, but there are notable gaps: no standalone review retrieval/write, no author search, and no current-user/profile tool. The sync and workflow_archive descriptions also reference a 'search' command that is not exposed as a tool, leaving a dead end.