Luku MCP server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Luku MCP serverWhat am I currently reading and how long has the session been going?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Luku MCP server
Read and write your Luku reading from Claude.ai and Claude Code. Everything the web app and the iOS app can do: the library and its shelves, the reading timer, sessions, progress, goals, bookmarks, statistics, book search and cover lookup, import and export.
How it fits together
Claude.ai ──────────── OAuth 2.1 ───────────┐
v
Claude Code ── luku-mcp (stdio) ──┐ luku.app/mcp
Claude Code ── HTTP + token ──────┴──> luku.app/api/v1 ──> SupabaseLuku serves the MCP itself, so there is no second server to keep online and no connector password to invent: signing in is the Luku login you already have, with email, Google or Apple. luku-mcp is the stdio bridge for Claude Code. It holds no database access and no logic of its own; it asks Luku for the tool list and forwards each call, which is why the two can never drift apart.
Related MCP server: Readbook MCP Server
Connecting
Claude.ai
Settings, Connectors, Add custom connector, and give it:
https://luku.app/mcpLeave the client ID and secret empty. Claude.ai registers itself, sends you to Luku's own sign-in page, and shows you what it is asking for before anything is granted. Doing this once covers web, desktop and mobile, because connectors belong to your account rather than one device.
Claude Code, through the browser
claude mcp add --transport http luku https://luku.app/mcp --scope userThen run /mcp to sign in. Same login, same consent screen.
Claude Code, with a token, no browser
Mint a personal access token in Luku under Settings > API, then:
claude mcp add --transport http luku https://luku.app/mcp \
--header "Authorization: Bearer $LUKU_API_TOKEN" --scope userClaude Code, over stdio
git clone git@github.com:rollecode/luku-mcp.git
cd luku-mcp
npm install && npm run build
claude mcp add luku --env LUKU_API_TOKEN=luku_pat_... -- node /path/to/luku-mcp/dist/index.jsTools
Read tools work with any token. Write tools need a read-write token and are refused otherwise, so a token minted for questions cannot log reading.
Reading
Tool | What you get |
| Who the connection belongs to, their settings, and how many books sit on each shelf |
| A shelf, or the whole library, optionally searched by title or author |
| One book in full, with its sessions and bookmarks |
| The running or paused session, how long it has run, and what is being read |
| Reading sessions, newest first, by book or date range |
| Minutes and pages today, this week, this month and this year, books finished, goals in force |
| One month day by day |
| Yearly book goal and daily minutes goal, per year |
| Saved links, for one book or all of them |
| Search Goodreads, Google Books, BookBeat and Open Library |
| Description, page count, publisher, ISBNs and cover for a book not in the library |
| Cover candidates from every source the app searches |
| Other books by the same author |
| Recommendations already generated in the app |
| The whole library as JSON or markdown |
| Published changelog entries |
| Planned features and their votes |
Writing
Tool | What it does |
| Add a book. Only the title is required; the rest is looked up |
| Edit metadata, rating or notes |
| Move a book to reading, next-up, to-read, finished or abandoned |
| Set the position: page, percent or seconds listened |
| Remove a book and its sessions |
| Start a reading session |
| Pause it, so the break is not counted as reading |
| Resume it |
| End it and carry the end position onto the book |
| Record reading that already happened |
| Correct a session's times or pages |
| Delete a session, giving back the progress it accounted for |
| Set the yearly book goal or the daily minutes goal |
| Save a link to a book |
| Edit a saved link |
| Remove a saved link |
| Theme, default tracking method, recommendations on or off |
| Import a Bookshelf CSV export, or a list of books |
| Vote for a feature, or take the vote back |
Progress, in three units
A book is tracked in pages, in percent, or in seconds for an audiobook, and the unit decides which argument to pass:
{"bookId": "...", "page": 214}
{"bookId": "...", "percent": 62}
{"bookId": "...", "seconds": 18450}The percentage is derived from whichever one is given, a book still on the to-read shelf starts being read, and the start date is stamped the first time progress appears. That matches the app exactly, so a book moved along from Claude looks no different from one moved along by hand.
Stopping the timer carries the end position onto the book in the same step:
{"sessionId": "...", "endPage": 240}Deleting a finished session takes that ground back, rebuilding the position from the sessions that remain, so a mistaken entry does not leave the book claiming progress nothing accounts for.
Settings
Variable | What it is for |
| Where Luku lives. |
| A personal access token from Settings > API |
The token is the whole key to one account's reading, so treat it as a password: keep it out of shell history and out of the repository.
Self-hosting Luku
Luku is self-hostable, and a self-hosted instance serves its own MCP at /mcp with its own OAuth. Point LUKU_API_URL at it, or hand Claude.ai https://your-host/mcp. See the Luku repository for the setup, and api.luku.app for the API reference.
Working on the code
npm install
npm run build
LUKU_API_TOKEN=luku_pat_... node dist/index.jsdist/ is committed, so rebuild only when src/ changes.
This server cannot be deployed
Maintenance
Related MCP Connectors
- LeafOAuthapp.readwithleaf
AI assistant integration for Leaf — track books, log reading sessions, and manage your library.
The media memory layer for AI agents and their humans. Your AI client gets 29 tools to search your collection, add items, update ratings, preview music, and find patterns across everything you've read, watched, and listened to.
Academic literature search, retrieval, and private library management on top of OpenAlex.
Talk to your own gym log. Reps is a free workout tracker for iPhone and Android; connect it to Claude, ChatGPT or any MCP client and ask about your workout history, personal records, exercise progression, weekly summaries, routines and training plan. The assistant can also save a new routine, edit one, save a whole plan, add custom exercises and exercise notes, always after you confirm in the chat. It cannot log a workout or delete your history. Requires a free Reps account created in the app; you sign in with a one-time email code.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables management of Micro.blog book collections through natural language, allowing users to organize bookshelves, add/move books, and track reading goals. Built with FastMCP for reliable integration with Claude Desktop.11MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to help users manage their reading experience by searching books, tracking reading progress, managing bookmarks, and generating personalized recommendations and summaries.-
- AlicenseBqualityAmaintenanceConnects AI assistants to the Hardcover book library, enabling natural language book searches, reading status updates, list management, and library exploration.3949 PyPI6MIT
- FlicenseAqualityCmaintenanceEnables AI assistants to interact with BookLore self-hosted libraries, allowing natural language queries to search books, manage reading status, ratings, series, authors, and highlights.71-