hardcover-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HARDCOVER_API_KEY | Yes | Your Hardcover API key. Get yours at 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 |
|---|---|
| get_meA | Get the currently authenticated Hardcover user's profile (id, username, name, book counts). |
| searchA | Search Hardcover for books, authors, series, users, lists, characters, publishers, or prompts. Returns rich result objects from Typesense. query_type defaults to 'book'. |
| get_book_by_idB | Get full book details by Hardcover book ID. |
| get_book_by_slugA | Get full book details by Hardcover URL slug (e.g. 'the-name-of-the-wind'). |
| get_editions_by_titleA | Get all known editions of a book by exact title match. |
| get_edition_by_idA | Get detailed information about a specific edition by its ID. |
| get_editions_by_isbnB | Look up an edition by ISBN-10 or ISBN-13. |
| get_author_by_idA | Get an author's profile by Hardcover author ID. |
| get_author_by_slugA | Get an author's profile by URL slug (e.g. 'brandon-sanderson'). |
| get_author_booksA | Get books written by a specific author, ordered by popularity. |
| get_series_by_idA | Get series metadata (name, description, book count) by series ID. |
| get_books_in_seriesA | Get the ordered, deduplicated list of books in a series. Merges duplicates, excludes partial books and compilations. |
| get_my_libraryA | Get the authenticated user's full library (all statuses), paginated. |
| get_library_by_statusA | Get the authenticated user's books filtered by reading status. Status IDs: 1=Want to Read, 2=Currently Reading, 3=Read, 4=Did Not Finish, 5=Owned. |
| get_reading_progressB | Get all books currently being read with their page-level progress. |
| get_user_bookA | Get the authenticated user's relationship with a specific book (status, rating, review, read sessions). |
| get_my_reading_journalB | Get reading journal entries and session history for a specific book. |
| get_user_by_usernameB | Look up a public Hardcover user profile by username. |
| get_user_libraryA | Get another user's library filtered by reading status. Status IDs: 1=Want to Read, 2=Currently Reading, 3=Read, 4=Did Not Finish, 5=Owned. |
| get_list_by_idA | Get a Hardcover list's details and its books (up to 50 books). |
| get_reading_statsA | Get reading statistics: total books read all-time AND since an optional date (e.g. '2026-01-01' for this year, '2026-08-01' for this month), plus average rating for each window. Requires the user's numeric ID (use get_me to find it). |
| get_books_read_betweenA | List books marked as Read with a finish date between two dates, ordered most-recent first. |
| get_my_goalsA | Get the authenticated user's reading goals (progress, target, state, dates). |
| get_my_activitiesA | Get a user's recent activity feed (books added, rated, reviewed, goals, lists). Requires the user's numeric ID. |
| get_book_activitiesA | Get recent user activity for a specific book (ratings, reviews, status changes). |
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 25 tools
Most tools map cleanly to distinct resources: books, editions, authors, series, users, libraries, progress, stats, and activities. The main minor ambiguities are the parallel id/slug lookups for books/authors and the broad `search` tool, but these are clearly separated by input type.
The overwhelming majority of tools follow a predictable `get_<resource>` or `get_<resource>_by_<key>` snake_case pattern. The single standalone `search` tool is a minor but logical exception, and it does not disrupt the overall consistency.
25 tools is at the boundary where a server starts to feel heavy, though each tool is a distinct read-only lookup in a rich book/reading domain. Some consolidation, especially around edition lookups and library/status variants, could reduce redundancy without losing functionality.
The read-only surface is strong: it covers books, editions, authors, series, users, libraries, reading progress, stats, lists, and activities. However, it offers no create/update/delete capabilities for library status, ratings, reviews, or lists, so users expecting a full reading-app workflow will hit dead ends.