Apple Books

Access and manage your library on Apple Books.

Apple Books MCP

Model Context Protocol (MCP) server for Apple Books.

Website PyPI License: Apache 2.0 Buy Me A Coffee

At a glance

  • Ask Claude to summarize your recent highlights
  • Ask Claude what books you're currently reading and your progress
  • Ask Claude to find a book by title
  • Ask Claude to organize books in your library by genre
  • Ask Claude to recommend similar books based on your reading history
  • Ask Claude to compare notes from different books read on the same subject

https://github.com/user-attachments/assets/77a5a29b-bfd7-4275-a4af-8d6c51a4527e

And much more!

Available Tools

Collections

ToolDescriptionParameters
list_all_collectionsList all collectionslimit?: int
get_collection_booksGet all books in a collectioncollection_id: str
describe_collectionGet details of a collectioncollection_id: str
search_collections_by_titleSearch for collections by titletitle: str

Books

ToolDescriptionParameters
list_all_booksList all bookslimit?: int
describe_bookGet details of a particular bookbook_id: str
get_book_annotationsGet all annotations for a bookbook_id: str
search_books_by_titleSearch for books by titletitle: str
get_books_by_genreGet books by genre (substring match)genre: str, limit?: int

Reading Status

ToolDescriptionParameters
get_books_in_progressGet books currently being readlimit?: int
get_finished_booksGet books that have been finishedlimit?: int
get_unstarted_booksGet books not yet startedlimit?: int
get_recently_read_booksGet most recently opened bookslimit?: int (default: 10)

Annotations

ToolDescriptionParameters
list_all_annotationsList all annotationslimit?: int
recent_annotationsGet most recent annotationslimit?: int (default: 10)
describe_annotationGet details of an annotationannotation_id: str
get_highlights_by_colorGet all highlights by colorcolor: str, limit?: int
search_highlighted_textSearch highlights by texttext: str, limit?: int
search_notesSearch annotations by notenote: str, limit?: int
full_text_searchSearch annotations by any texttext: str, limit?: int
get_annotations_by_date_rangeGet annotations within a date rangeafter?: YYYY-MM-DD, before?: YYYY-MM-DD, limit?: int

Library Stats

ToolDescriptionParameters
get_library_statsGet library summary with reading statsNone

Available Resources

Attachable data objects accessible from Claude Desktop's resource picker.

ResourceURIDescription
Currently Readingapple-books://currently-readingThe book you're reading right now — most recently opened in-progress book, with its metadata and recent annotations. Attach to any conversation to focus Claude on your current read.

Available Prompts

One-click workflows, accessible from Claude Desktop's prompt picker.

PromptDescriptionArguments
weekly_digestSummarize what I've read and highlighted in the past weekdays?: int (default: 7)
explain_recent_highlightTake my most recent highlight and explain what it meansNone
what_am_i_readingQuick snapshot of books I'm currently in the middle ofNone
library_snapshotA reflection on my whole reading lifeNone
revisit_bookRevisit your notes and highlights from a specific bookbook_title: str

Installation

Using uv (recommended)

uvx can be used to directly run apple-books-mcp (without installing it).

brew install uv  # for macos
uvx apple-books-mcp

Using pip

pip install apple-books-mcp

After installing, you can run the server using:

python -m apple_books_mcp

Using Docker

docker run -v ~/Library/Containers/com.apple.iBooksX/Data/Documents:/root/Library/Containers/com.apple.iBooksX/Data/Documents:ro ghcr.io/vgnshiyer/apple-books-mcp:latest

Configuration

Claude Desktop Setup

Using uvx (recommended)

{
    "mcpServers": {
        "apple-books-mcp": {
            "command": "uvx",
            "args": [ "apple-books-mcp@latest" ]
        }
    }
}

Using python

{
    "mcpServers": {
        "apple-books-mcp": {
            "command": "python",
            "args": ["-m", "apple_books_mcp"]
        }
    }
}

Using Docker

{
    "mcpServers": {
        "apple-books-mcp": {
            "command": "docker",
            "args": [
                "run", "-i", "--rm",
                "-v", "~/Library/Containers/com.apple.iBooksX/Data/Documents:/root/Library/Containers/com.apple.iBooksX/Data/Documents:ro",
                "ghcr.io/vgnshiyer/apple-books-mcp:latest"
            ]
        }
    }
}

Upcoming Features

  • book content access for non-DRM EPUBs

Contribution

Thank you for considering contributing to this project!

Development

If you cloned this repository, you can test it using Claude Desktop with below configuration:

Use uv venv to create a virtual environment and install the dependencies.

uv venv
uv sync

Debugging

With Claude Desktop

{
    "mcpServers": {
        "apple-books-mcp": {
            "command": "uv",
            "args": [
                "--directory",
                "/path/to/apple-books-mcp/",
                "run",
                "apple_books_mcp",
                "-v"
            ]
        }
    }
}

With inspector

npx @modelcontextprotocol/inspector uvx apple-books-mcp

Opening Issues

If you encounter a bug, have a feature request, or want to discuss something related to the project, please open an issue on the GitHub repository. When opening an issue, please provide:

Bug Reports: Describe the issue in detail. Include steps to reproduce the bug if possible, along with any error messages or screenshots.

Feature Requests: Clearly explain the new feature you'd like to see added to the project. Provide context on why this feature would be beneficial.

General Discussions: Feel free to start discussions on broader topics related to the project.

Contributing

1️⃣ Fork the GitHub repository https://github.com/vgnshiyer/apple-books-mcp
2️⃣ Create a new branch for your changes (git checkout -b feature/my-new-feature).
3️⃣ Make your changes and test them thoroughly.
4️⃣ Push your changes and open a Pull Request to main.

Please provide a clear title and description of your changes.

License

Apple Books MCP is licensed under the Apache 2.0 license. See the LICENSE file for details.

Related Servers

NotebookLM Web Importer

Import web pages and YouTube videos to NotebookLM with one click. Trusted by 200,000+ users.

Install Chrome Extension