Skip to main content
Glama

Book Recommendations — "What Should I Read Next?" MCP 📚🎲

CI License: MIT PyPI

Book recommendations for AI agents: "what should I read next?" answered from millions of works — topic recommendations, blind-date serendipity spins hooked by the book's actual first sentence, and free public-domain classics you can start reading right now. Zero API keys.

Ask any agent "what should I read next?", "books like Dune", or "surprise me with a book" — book-recommendations is the tool that answers.

Why this exists

  • LLMs recommend the same 50 canon books for every ask. This fishes OpenLibrary's millions of works — including a blind-date spin that picks a random subject shelf at random depth, deliberately off the bestseller lists, and hooks you with the book's actual first sentence before the reveal.

  • Read-now intelligence on every card: read_now says when a book is freely readable at archive.org (public) or borrowable (free loan) — instant reading beats a shopping link.

  • Free classics via Project Gutenberg (fail-soft: when the Gutenberg index is down, the error itself points at archive.org alternatives).

  • Honest attribution: every card says why_picked — how the book was actually chosen. Discovery you can trust.

Related MCP server: hardcover-mcp

Tools

Tool

What it does

recommend

Book recommendations by topic/mood/"books like X", with ratings, subjects, first sentences, read-now flags

blind_date

Serendipity spin: random shelf, random depth, first-sentence hook, two-beat reveal

free_classics

Public-domain books with read-now URLs (Gutenberg, fail-soft)

skills_list / skill_read

Updatable playbooks (presentation, error recovery)

Plus the prompt: what-should-i-read-next.

Quickstart

# 1-Line Universal Installer (auto-configures Claude Desktop, Cursor, Claude Code, VS Code, ...)
curl -fsSL "https://book-recommendations.builditwithai.xyz/install" | bash

# Or run directly via your preferred runtime:
uvx book-recommendations
npx -y book-recommendations

Example

User:  surprise me with a book

blind_date()
→ picks: [{
     first_sentence: "The lighthouse kept its own counsel…",
     subjects: ["lighthouses", "islands", "solitude"], first_published: 1962,
     why_picked: "blind date: fished the “lighthouses” shelf at depth 3 — picked
                  for serendipity, not sales rank",
     title: "…", author: "…", read_now: "borrowable at archive.org",
     openlibrary_url: "https://openlibrary.org/works/…" }]

Present the hook first, then the reveal — the two-beat structure is the product.

Telemetry & privacy

Anonymous usage telemetry (no PII, no queries, no paths) via the fleet standard (schema v2, dual-endpoint fallback). Opt out any time: BOOK_RECOMMENDATIONS_TELEMETRY=false or DO_NOT_TRACK=1.

Development

uv venv && uv pip install -e ".[dev]"
DO_NOT_TRACK=1 .venv/bin/python -m pytest tests/ -q   # unit + live + e2e

Live tests hit the real OpenLibrary API and self-skip offline.

License

MIT

Available Tools

5 tools
blind_dateBlind date with a bookC
Read-only

Serendipity spin: a random shelf at random depth — present the first sentence first, then the reveal

Inputs: seed, count, intent, exclude.

free_classicsFree classicsC
Read-onlyIdempotent

Public-domain classics from Project Gutenberg, readable in full right now

Inputs: count, topic, intent.

recommendRecommend booksB
Read-onlyIdempotent

Book recommendations by topic, mood, or 'books like X' — millions of works, free-read flags included

Inputs: topic (required), count, intent, exclude.

skill_readRead a skillA
Read-onlyIdempotent

Fetch the full content of one skill by name (from skills_list)

Inputs: name (required).

skills_listList skillsA
Read-onlyIdempotent

List available skills (guidance playbooks) for using this server well — read one with skill_read

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 5 tools

    Disambiguation5/5

    Each tool serves a clearly distinct purpose: recommend provides targeted recommendations, blind_date offers random serendipity, free_classics surfaces public-domain works, and skills_list/skill_read manage usage guidance. No overlap or ambiguity exists between the tools.

    Naming Consistency2/5

    Tool names follow no consistent pattern: 'recommend' is a bare verb, 'blind_date' and 'free_classics' are noun phrases, while 'skills_list' is a noun-noun compound and 'skill_read' reverses the typical verb-object order. This mixed convention could cause confusion about expected behavior.

    Tool Count5/5

    With just 5 tools, the server is tightly scoped for its domain. Each tool adds distinct value without redundancy, and the count is well within the ideal range for a focused MCP server.

    Completeness4/5

    The core recommendation workflows are covered: tailored recommendations, serendipitous discovery, and access to classics. However, missing operations like fetching book details or saving favorites create minor gaps, though agents can likely work around them for most use cases.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to help users manage their reading experience by searching books, tracking reading progress, managing bookmarks, and generating personalized recommendations and summaries.
      -
    • A
      license
      A
      quality
      B
      maintenance
      Connects AI assistants to the Hardcover book library, enabling natural language book searches, reading status updates, list management, and library exploration.
      28
      143 PyPI
      10
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables natural language interaction with e-books, supporting EPUB and PDF formats. Provides APIs for metadata extraction, table of contents, and content retrieval for AI-powered reading and learning.
      Apache 2.0