Skip to main content
Glama
vgnshiyer

apple-books-mcp

by vgnshiyer

Apple Books MCP

Apple Books 的模型上下文协议 (MCP) 服务器。

Website PyPI License: Apache 2.0 Buy Me A Coffee

一览

  • 从上次中断的地方继续 — Claude 可以看到您当前阅读的章节及其文本,以及书中最近的高亮内容。

  • 扩展任何高亮内容 — 获取上下文中的段落解释,并以 «...» 标记出您所选的确切锚点。

  • 重温书籍 — 提取您的高亮内容,按主题进行聚类,并向您复述您的观点。

  • 反思您的阅读 — 跨书籍的模式、高亮中反复出现的想法,以及您真正被吸引的内容。

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

还有更多功能!

Related MCP server: Co-Reading MCP

可用工具

收藏 (Collections)

工具

描述

参数

list_all_collections

列出所有收藏

limit?: int

get_collection_books

获取收藏中的所有书籍

collection_id: str

describe_collection

获取收藏详情

collection_id: str

search_collections_by_title

按标题搜索收藏

title: str

书籍 (Books)

工具

描述

参数

list_all_books

列出所有书籍

limit?: int

describe_book

获取特定书籍的详情(元数据、进度、标注计数、描述)

book_id: str

list_annotations

获取书籍的所有标注(每行包含 id + 文本 + 章节,按章节排序)

book_id: int, limit?: int

search_books_by_title

按标题搜索书籍

title: str

get_books_by_genre

按流派获取书籍(子字符串匹配)

genre: str, limit?: int

阅读状态 (Reading Status)

工具

描述

参数

get_books_in_progress

获取当前正在阅读的书籍

limit?: int

get_finished_books

获取已读完的书籍

limit?: int

get_unstarted_books

获取尚未开始阅读的书籍

limit?: int

get_recently_read_books

获取最近打开的书籍

limit?: int (默认: 10)

标注 (Annotations)

工具

描述

参数

list_all_annotations

浏览按书籍分组的所有标注,最新优先

limit?: int

recent_annotations

获取最近的标注(平铺,每行包含日期 + 书籍)

limit?: int (默认: 10)

describe_annotation

获取单个标注的完整详情

annotation_id: str

get_annotation_context

高亮周围的文本窗口(所在段落),高亮部分标记为 «...»

annotation_id: int, chars_before?: int (默认: 500), chars_after?: int (默认: 500)

get_highlights_by_color

按书籍分组的特定颜色高亮

color: str, limit?: int

search_notes

搜索用户笔记(内联显示高亮 + 笔记)

note: str, limit?: int

search_annotations

搜索高亮 + 笔记 + 周围文本

text: str, limit?: int

get_annotations_by_date_range

日期范围内的标注(平铺,每行包含日期 + 书籍)

after?: YYYY-MM-DD, before?: YYYY-MM-DD, limit?: int

图书馆统计 (Library Stats)

工具

描述

参数

get_library_stats

获取包含阅读统计的图书馆摘要

书籍内容 (Book Content)

仅适用于非 DRM 的 EPUB 文件(导入的书籍、古腾堡计划、Standard Ebooks 等)。Apple Books 商店购买的书籍受 FairPlay 保护,会返回明确的错误。仅 iCloud 的书籍会返回“未下载”提示。

工具

描述

参数

list_book_chapters

书籍目录(章节标题、顺序、嵌套)

book_id: int

get_chapter_content

章节的纯文本内容,支持可选的 offset + max_chars 切片

book_id: int, chapter_id: str, offset?: int, max_chars?: int

get_current_reading_position

用户上次阅读的章节(通过 Apple Books 的自动书签 CFI)

book_id: int

可用资源

可从 Claude Desktop 的资源选择器中访问的可附加数据对象。

资源

URI

描述

Currently Reading

apple-books://currently-reading

您当前正在阅读的书籍 — 最近打开的进行中书籍,包含元数据、您上次阅读的章节及文本预览(针对非 DRM EPUB),以及最近的标注。将其附加到任何对话中,让 Claude 专注于您当前的阅读。

可用提示词 (Prompts)

一键式工作流,可从 Claude Desktop 的提示词选择器中访问。

提示词

描述

参数

weekly_digest

总结我过去一周阅读和高亮的内容

days?: int (默认: 7)

library_snapshot

对我整个阅读生活的反思

revisit_book

重温特定书籍的笔记和高亮

book_title: str

安装

使用 uv (推荐)

uvx 可用于直接运行 apple-books-mcp(无需安装)。

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

使用 pip

pip install apple-books-mcp

安装后,您可以使用以下命令运行服务器:

python -m apple_books_mcp

使用 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

首次运行权限提示 (macOS)

首次使用时,macOS 会询问 uvx(或 python / docker,取决于您的启动方式)是否可以“访问其他应用的数据”。请点击 允许 (Allow) — MCP 会读取位于 ~/Library/Containers/com.apple.iBooksX/ 的 Apple Books 私有容器,macOS 将其视为其他应用的沙盒数据。访问权限为只读且仅限于该容器;无论如何服务器都能启动,但如果没有权限,所有工具都将返回空结果。

macOS 权限提示:uvx 想要访问其他应用的数据。不允许 / 允许。

配置

Claude Desktop 设置

使用 uvx (推荐)

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

使用 python

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

使用 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"
            ]
        }
    }
}

即将推出的功能

  • [ ] PDF 内容访问(目前仅支持 EPUB)

  • [ ] 通过 CFI → 段落解析实现更完整的标注上下文

贡献

感谢您考虑为本项目做出贡献!

开发

如果您克隆了此仓库,可以使用以下配置在 Claude Desktop 中进行测试:

使用 uv venv 创建虚拟环境并安装依赖项。

uv venv
uv sync

调试

使用 Claude Desktop

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

使用 inspector

npx @modelcontextprotocol/inspector uvx apple-books-mcp

提交 Issue

如果您遇到 Bug、有功能请求或想讨论与项目相关的内容,请在 GitHub 仓库中提交 Issue。提交 Issue 时,请提供:

Bug 报告:详细描述问题。如果可能,请包含重现 Bug 的步骤,以及任何错误消息或截图。

功能请求:清晰地解释您希望添加到项目中的新功能。提供关于该功能为何有益的背景信息。

一般讨论:欢迎就与项目相关的更广泛主题发起讨论。

贡献流程

1️⃣ Fork GitHub 仓库 https://github.com/vgnshiyer/apple-books-mcp
2️⃣ 为您的更改创建一个新分支 (git checkout -b feature/my-new-feature)。
3️⃣ 进行更改并彻底测试。
4️⃣ 推送您的更改并向 main 分支提交 Pull Request。

请为您的更改提供清晰的标题和描述。

许可证

Apple Books MCP 采用 Apache 2.0 许可证授权。详情请参阅 LICENSE 文件。

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
2dResponse time
6dRelease cycle
15Releases (12mo)
Commit activity
Issues opened vs closed

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

View all related MCP servers

Related MCP Connectors

  • Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.

  • An MCP memory server. One memory your agents share — across models, devices and apps.

  • Apple Developer Documentation with Semantic Search, RAG, and AI reranking for MCP clients

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/vgnshiyer/apple-books-mcp'

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