Book Recommendations — "What Should I Read Next?" MCP 📚🎲
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_nowsays 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.
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
Metadata
Release files for book-recommendations 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| book_recommendations-0.1.1.tar.gz | 26.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| book_recommendations-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 48.8 kB
Release files / book_recommendations-0.1.1.tar.gz
| Download URL | book_recommendations-0.1.1.tar.gz |
|---|---|
| Size | 26.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a547a17f8dba558c3bc27a716d2b75d0bd7fb6bdca520fcd3521df25f8fc736e
|
|
BLAKE2b-256 checksum How to use checksums |
7fbf9b7b6cdba4bbd7037f35f76e686fe77e16cc05eccf45b799691c2f7dd844
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / book_recommendations-0.1.1-py3-none-any.whl
| Download URL | book_recommendations-0.1.1-py3-none-any.whl |
|---|---|
| Size | 22.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
052ca9dae7cd2fb6d9112cbd66fa30a7d3e16812d5dbd456a5ad8d5de90634dd
|
|
BLAKE2b-256 checksum How to use checksums |
044e1c71470b9f3f29391e2f39aaf6ff8379e4d690b25864ee45c7325b10dc68
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|