Skip to main content
Glama
muhyousri

hardcover-mcp

by muhyousri

hardcover-mcp

โš ๏ธ Beta v0.1.0 โ€” This is an early release. The API surface, tool names, and query structure may change. Please report issues and feedback via GitHub Issues.

A Model Context Protocol (MCP) server for the Hardcover API โ€” the book-tracking platform that uses the same GraphQL API for its website, iOS, and Android apps.

Connect any MCP-compatible AI assistant (Claude Desktop, Cursor, Kiro, or any MCP client) directly to your Hardcover library, reading history, goals, and the full Hardcover book catalogue.


Contents


Related MCP server: hardcover-mcp

Features

  • ๐Ÿ” Search books, authors, series, users, lists, characters, publishers, and prompts

  • ๐Ÿ“š Browse your library โ€” all statuses, filtered views, and paginated results

  • ๐Ÿ“– Reading progress โ€” currently-reading books with page-level progress

  • ๐Ÿ“Š Reading statistics โ€” books read this month, this year, all time, with average ratings

  • ๐ŸŽฏ Reading goals โ€” progress, state, and target for all your goals

  • ๐Ÿ—“๏ธ Books by date range โ€” list every book you finished between two dates

  • ๐Ÿ““ Reading journal โ€” per-book session history

  • ๐Ÿ‘ค User profiles โ€” your profile and public profiles by username

  • ๐Ÿ“‹ Lists โ€” retrieve any Hardcover list with its books

  • ๐Ÿƒ Activity feed โ€” your recent activity and activity on specific books

  • ๐Ÿ”– Editions โ€” look up by title, ID, or ISBN-10/13

  • โœ๏ธ Authors โ€” profiles and bibliography

  • ๐Ÿ“– Series โ€” ordered, deduplicated book lists


Tools Reference

Identity

Tool

Description

get_me

Authenticated user's profile: id, username, name, bio, location, books count, followers, flair, pro status

Tool

Arguments

Description

search

query, query_type?, per_page?, page?

Search books, authors, series, users, lists, characters, publishers, or prompts

Books

Tool

Arguments

Description

get_book_by_id

id

Full book details by Hardcover ID

get_book_by_slug

slug

Full book details by URL slug (e.g. the-name-of-the-wind)

get_editions_by_title

title

All editions matching an exact title

get_edition_by_id

id

Single edition details

get_editions_by_isbn

isbn

Look up edition by ISBN-10 or ISBN-13 (digits only)

Authors

Tool

Arguments

Description

get_author_by_id

id

Author profile by ID

get_author_by_slug

slug

Author profile by slug (e.g. brandon-sanderson)

get_author_books

author_id, limit?, offset?

Books by an author, ordered by popularity

Series

Tool

Arguments

Description

get_series_by_id

id

Series metadata: name, description, book count

get_books_in_series

series_id

Ordered, deduplicated book list โ€” excludes partial books and compilations

My Library

Tool

Arguments

Description

get_my_library

limit?, offset?

Full library, all statuses, paginated

get_library_by_status

status_id, limit?, offset?

Library filtered by reading status

get_reading_progress

โ€”

Currently-reading books with page progress

get_user_book

book_id

Your relationship with a book: status, rating, review, read sessions

get_my_reading_journal

book_id

Reading journal and session history for a book

Status IDs: 1 Want to Read ยท 2 Currently Reading ยท 3 Read ยท 4 Paused ยท 5 Did Not Finish ยท 6 Ignored

Reading Statistics

Tool

Arguments

Description

get_reading_stats

user_id, since?

All-time count + avg rating, and filtered count since a date (YYYY-MM-DD). Use since=2026-01-01 for this year, since=2026-08-01 for this month

get_books_read_between

user_id, since, until, limit?, offset?

Books finished between two dates, ordered newest first

Goals

Tool

Arguments

Description

get_my_goals

โ€”

All reading goals with progress, target, state, and dates

Activities

Tool

Arguments

Description

get_my_activities

user_id, limit?, offset?

Your activity feed (books added, rated, reviewed, goals, lists)

get_book_activities

book_id, limit?, offset?

Community activity for a specific book

Other Users

Tool

Arguments

Description

get_user_by_username

username

Look up a public user profile

get_user_library

user_id, status_id, limit?, offset?

Another user's library filtered by reading status

Lists

Tool

Arguments

Description

get_list_by_id

id

List details and its books (up to 50)


Requirements


Installation

git clone https://github.com/YOUR_USERNAME/hardcover-mcp
cd hardcover-mcp
uv sync

With pip

git clone https://github.com/YOUR_USERNAME/hardcover-mcp
cd hardcover-mcp
pip install -e .

From PyPI (once published)

uv pip install hardcover-mcp
# or
pip install hardcover-mcp

Configuration

Copy .env.example to .env and add your API key:

cp .env.example .env
HARDCOVER_API_KEY=your_api_key_here

Keep your token private. Your Personal Access Token has access to your Hardcover account. Never commit it to version control, share it publicly, or embed it in client-side code.


Usage

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "hardcover": {
      "command": "uv",
      "args": [
        "run",
        "--with-editable",
        "/path/to/hardcover-mcp",
        "hardcover-mcp"
      ],
      "env": {
        "HARDCOVER_API_KEY": "your_api_key_here"
      }
    }
  }
}

Or if installed via pip/uv into a virtualenv:

{
  "mcpServers": {
    "hardcover": {
      "command": "/path/to/venv/bin/hardcover-mcp",
      "env": {
        "HARDCOVER_API_KEY": "your_api_key_here"
      }
    }
  }
}

Kiro CLI

Add to ~/.kiro/settings/mcp.json:

{
  "mcpServers": {
    "hardcover": {
      "command": "/path/to/uv",
      "args": [
        "run",
        "--with-editable",
        "/path/to/hardcover-mcp",
        "hardcover-mcp"
      ],
      "env": {
        "HARDCOVER_API_KEY": "your_api_key_here"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

Other MCP Clients

Point your client at the hardcover-mcp entrypoint (or python -m hardcover.server) with HARDCOVER_API_KEY set in the environment. The server communicates over stdio and is compatible with any MCP 1.0+ client.


Rate Limits & API Policy

Please read before building with this server. Hardcover's API is free to use but has firm limits. Hitting them unexpectedly can disrupt your workflow.

Rate Limits

Plan

Daily

Burst

Per Minute

Free

5,000 req/day

10 req

60 req/min

Supporter

50,000 req/day

15 req

60 req/min

  • Daily limit: hard cap. Once reached, all requests return 429 until midnight UTC.

  • Burst limit: how many requests you can fire back-to-back before throttling. Refills continuously at the per-minute rate.

  • Per-minute limit: 60 req/min for all plans (token bucket).

  • Per-request limit: a single GraphQL request may contain at most 5 top-level queries. Exceeding this returns 403, not 429.

  • Personal Access Tokens get double the burst capacity vs. legacy JWT auth on the same plan.

This MCP server surfaces retry_after hints when a 429 is returned, so your AI assistant can back off gracefully.

Commercial Use

Per Hardcover's API policy:

  • User-owned data (libraries, ratings, reviews, journal entries, lists, goals) may not be used in commercial products unless you are acting on behalf of a user who has explicitly granted access.

  • Aggregate, anonymised data (e.g. number of Hardcover readers, average Hardcover rating) may be used commercially if credited to Hardcover.

  • Images served from Hardcover are user-uploaded. If you display them publicly, you must have a DMCA takedown policy.

Prohibited Query Patterns

The following GraphQL operators are disabled by the API:

_like, _nlike, _ilike, _niregex, _nregex, _iregex, _regex, _nsimilar, _similar

Queries must run server-side

The Hardcover API may not be called from a browser. Your API key must be kept in a secure server environment.

For more details see the official Getting Started guide.


Disclaimer

This is a beta release (v0.1.0). It is independent, community-built software and is not affiliated with, endorsed by, or supported by Hardcover.

  • The Hardcover API is itself in beta and subject to breaking changes.

  • Tool names, query structure, and response shapes in this MCP server may change between versions.

  • Use in production or commercial contexts is entirely at your own risk.

  • By using the Hardcover API via this server, you agree to Hardcover's policies.


Development

git clone https://github.com/YOUR_USERNAME/hardcover-mcp
cd hardcover-mcp

# Create virtualenv and install with dev deps
uv sync --extra dev
# or: pip install -e ".[dev]"

# Run tests
uv run pytest
# or: python -m pytest

# Run the server locally (needs HARDCOVER_API_KEY in environment)
HARDCOVER_API_KEY=your_key hardcover-mcp

Project structure

hardcover-mcp/
โ”œโ”€โ”€ hardcover/
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ client.py      # GraphQL HTTP client, rate-limit handling, error mapping
โ”‚   โ”œโ”€โ”€ queries.py     # All GraphQL query strings
โ”‚   โ””โ”€โ”€ server.py      # MCP server, tool definitions, dispatch
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ conftest.py    # Shared fixtures
โ”‚   โ”œโ”€โ”€ test_client.py # 30 client tests (HTTP errors, rate limits, response parsing)
โ”‚   โ””โ”€โ”€ test_server.py # 51 server tests (tool dispatch, error formatting)
โ”œโ”€โ”€ .env.example
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ pyproject.toml
โ””โ”€โ”€ README.md

Running tests

pytest                  # all tests
pytest tests/test_client.py   # client only
pytest tests/test_server.py   # server only
pytest -v               # verbose

Contributing

Contributions are welcome. Please:

  1. Open an issue first to discuss significant changes

  2. Follow the existing code style

  3. Add or update tests for any changed behaviour

  4. Keep PRs focused โ€” one feature or fix per PR


License

MIT โ€” see LICENSE for details.

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

โ€“Maintainers
โ€“Response time
โ€“Release cycle
โ€“Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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
    A
    maintenance
    Connects AI assistants to the Hardcover book library, enabling natural language book searches, reading status updates, list management, and library exploration.
    31
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides AI assistants with direct access to your ebook library, enabling listing books, reading chapters, and searching across books via the Model Context Protocol.
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to interact with BookLore self-hosted libraries, allowing natural language queries to search books, manage reading status, ratings, series, authors, and highlights.
    7
    1

View all related MCP servers

Related MCP Connectors

  • Read and update your Everway trips and itineraries from any MCP-compatible AI assistant.

  • Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.

  • Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/muhyousri/hardcover-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server