hardcover-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| UV_LINK_MODE | No | Set to 'copy' on Windows if you encounter access denied errors | |
| HARDCOVER_API_TOKEN | Yes | Your Hardcover API token from https://hardcover.app/account/api |
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 | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| meA | Get authenticated user info (id, username, name, books count). |
| get_userA | Look up another Hardcover user's public profile by id, username, or name. Returns bio, book/follower counts, and privacy. Set include_library=true to also fetch their recent library entries (subject to their privacy setting). |
| get_activity_feedA | Get recent reading activity (status changes, ratings, reviews, list updates), newest first. Defaults to the feed of users you follow. Pass user_id or username to fetch a single user's activity instead. |
| get_reading_statsA | Get library reading statistics: total books, books per status, average rating, and books read in a given year. |
| search_booksC | Search Hardcover by title, author, or ISBN. Supports multiple entity types: books (default), authors, series, lists, users, publishers, characters, and prompts. |
| get_bookA | Get detailed info about a specific book by its Hardcover ID or slug. |
| get_charactersB | Get characters associated with a book by its Hardcover ID. Returns character names and descriptions. |
| get_user_libraryA | Get books from your library. Filter by reading status or finished-date range (start_date + end_date). Sort by rating, title, or updated date. Use sort='rating', order='desc' to get top-rated books. Use start_date + end_date to answer 'what did I read in May last year?' |
| get_user_bookB | Get your library entry for a book: status, rating, reads. |
| get_user_reviewsB | List your reviews, newest first. Includes review text, rating, and book info. |
| get_owned_booksA | List all books you have marked as owned. Returns title, authors, and edition details. |
| get_reading_goalA | Get your active reading goals with target, metric, progress, and date range. |
| get_my_listsA | Get your Hardcover lists. Returns id, name, books count, privacy. |
| get_listA | Get a specific Hardcover list with its books by list ID. |
| get_seriesA | Get a book series by id, slug, or name with books in reading order. |
| get_authorA | Get an author's details and books by Hardcover ID, slug, or name. |
| get_trending_booksA | Get currently trending books, most popular first. Choose a time window with 'duration'. |
| get_vibesB | List Hardcover 'vibes' — curated, themed book recommendation collections (e.g. 'Hidden Gem Fantasy'). Each vibe includes its books. |
| get_publisherA | Look up a publisher by Hardcover ID, slug, or name. Returns publisher info and a paginated list of editions. |
| get_editionC | Get edition details by Hardcover ID, ISBN-13, or ASIN. |
| set_user_bookA | Set a book's status, rating, review, privacy, and private notes. Preserves unspecified fields. |
| set_reading_goalB | Create or update a reading goal with target, metric, dates, and optional description/privacy. |
| set_edition_ownedA | Mark an edition as owned or not owned. Use get_edition to find the edition ID first. |
| add_user_book_readA | Add a reading date or progress entry. Updates active read if one exists. Supports page progress and audiobook time tracking. |
| update_user_book_readA | Update a reading date or progress entry. Preserves unspecified fields. Supports page progress and audiobook time tracking. |
| delete_user_book_readA | Delete a reading date entry by its ID. This cannot be undone. |
| delete_user_bookA | Remove a book from your library entirely. This cannot be undone. |
| create_listC | Create a new Hardcover list. |
| update_listA | Update an existing Hardcover list's name, description, or privacy. |
| delete_listA | Delete a Hardcover list by ID. This cannot be undone. |
| add_book_to_listC | Add a book to a Hardcover list. |
| remove_book_from_listB | Remove a book from a list. Use id or list_id + book_id. |
| get_reading_journalA | Fetch reading journal entries for the authenticated user. Includes notes, quotes, status changes, ratings, reviews, and progress updates. Supports optional filters: book_id, event type, limit, and offset. |
| add_journal_entryB | Create a reading journal entry (for example a note or quote) for a book. |
| delete_journal_entryB | Delete a reading journal entry by ID. |
| get_promptsA | List community book prompts. Optionally filter to featured prompts only. Returns question, description, answers_count, and books_count. |
| answer_promptA | Submit a book as an answer to a community book prompt. |
| follow_userC | Follow a Hardcover user by user_id or username. |
| unfollow_userB | Unfollow a Hardcover user by user_id or username. |
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 39 tools
Most tools have clearly distinct resource/action purposes, but there is some overlap among read surfaces: get_activity_feed, get_reading_journal, and get_user_reviews all expose review/activity data. Similarly, search_books can return authors, series, lists, and users that also have dedicated getter tools, though descriptions generally clarify the intended use.
The set mostly follows a predictable snake_case verb_noun pattern with clear prefixes like get_, set_, add_, update_, delete_, and create_. Minor deviations exist, such as the standalone 'me', 'get_reading_journal' versus 'add_journal_entry'/'delete_journal_entry', and 'get_my_lists' versus other get_user_* tools.
With 39 tools, the server is heavy relative to typical MCP tool sets and exceeds the 25+ threshold that usually signals over-expansion. While Hardcover is a broad domain, several tools could likely be consolidated or grouped to reduce selection burden.
Coverage is broad: books, editions, authors, publishers, users, lists, journal entries, reading goals, owned books, prompts, and social follow actions are all represented. Minor gaps remain, such as updating journal entries, deleting reading goals, managing followers/following lists, or removing prompt answers.