calibreweb-mcp
calibreweb-mcp
一个只读的 Model Context Protocol 服务器,用于 Calibre-Web(以及 Calibre-Web Automated),即自托管的电子书库 Web 界面。
Calibre-Web 没有 REST API——其唯一稳定的机器可读接口是它为电子书阅读器应用提供的 OPDS 目录订阅源。此服务器使用该订阅源:通过 HTTP Basic 认证接收 Atom XML,输出结构化的图书数据。可搜索书库、浏览精选视图和书架、获取每种格式的下载链接,并将封面图片直接拉入对话中。它从不写入任何内容:每个工具都是针对 OPDS 路由的 GET 请求。

📖 完整文档:calibreweb-mcp.ni-c.de
要求
Node.js 22 或更新版本
一个 Calibre-Web 实例(针对当前
linuxserver/calibre-web镜像开发;Calibre-Web Automated 同样适用)为服务器创建一个 Calibre-Web 用户。OPDS 订阅源使用常规 Web 登录进行认证——请使用仅具有查看和下载角色的专用账户,不要使用管理员账户。如果实例允许匿名浏览,服务器也可以在没有凭据的情况下运行。
Related MCP server: access-calibre
配置
变量 | 必需 | 描述 |
| 是 | 实例的根 URL,例如 |
| 是¹ | Calibre-Web 账户的用户名。 |
| 是¹ | 该账户的密码(Web 登录密码)。 |
| 否 | 设置为 |
¹ 如果实例允许匿名浏览,请将两者都留空;仅设置其中一个属于配置错误。
Claude Code
claude mcp add calibreweb \
-e CALIBRE_WEB_URL=https://books.example.com \
-e CALIBRE_WEB_USERNAME=reader \
-e CALIBRE_WEB_PASSWORD=... \
-- npx calibreweb-mcpClaude Desktop
{
"mcpServers": {
"calibreweb": {
"command": "npx",
"args": ["calibreweb-mcp"],
"env": {
"CALIBRE_WEB_URL": "https://books.example.com",
"CALIBRE_WEB_USERNAME": "reader",
"CALIBRE_WEB_PASSWORD": "..."
}
}
}
}Codex
[mcp_servers.calibreweb]
command = "npx"
args = ["calibreweb-mcp"]
env = { CALIBRE_WEB_URL = "https://books.example.com", CALIBRE_WEB_USERNAME = "reader", CALIBRE_WEB_PASSWORD = "..." }工具
所有工具均为只读(readOnlyHint: true)。
工具 | 描述 |
| 按标题、作者、丛书、出版社和标签搜索。Calibre-Web 一次性返回所有匹配结果;结果在客户端进行截断( |
| 按视图列出图书: |
| 公共书架以及已配置用户自己的书架。 |
| 书架上的图书,按书架顺序排列。 |
| 图书封面,以客户端可显示的图片形式返回。 |
| 图书总数、作者数、分类数和丛书数。 |
图书条目包括作者、标签、丛书(含索引)、评分、摘要(有长度限制)、封面 URL 以及每种格式的下载 URL——这些是用户可以打开的现成链接,因为模型本身没有理由下载 EPUB。
分页
订阅源按实例的每页图书数设置(默认 60)进行分页;页面大小不受客户端控制。每个列表在存在更多页面时都会返回 pagination.nextOffset——在下次调用中将其作为 offset 传入。discover 视图是随机选择,不支持分页。
明确排除的范围
无写入操作。 OPDS 订阅源没有写入操作,此服务器也不会添加任何写入操作。
无文件下载。 工具返回下载 URL,而非电子书文件本身。
无分类浏览(作者/丛书/标签/出版社/语言/格式作为独立的索引订阅源)。
search_books涵盖了这些查找;相关路由已存在,如果有实际用例,可以为其添加工具。
安全性
服务器在设计上是只读的——仅发送 GET 请求,不保存任何状态。
图书元数据是来自第三方的不可信数据;每个结果都会说明这一点,控制字符会被剥离,并且 XML 实体处理已被禁用(声明了 DOCTYPE 或实体的文档会被直接拒绝)。
响应在解析前有大小限制(订阅源 8 MB,封面 1 MB),在到达模型前再次限制(每本书和每次响应的预算)。
订阅源中的 href 仅在解析为配置的源站且使用 http(s) 协议时才会被传递——恶意订阅源无法将
javascript:、file:或跨域 URL 植入结果中。重定向被拒绝,以确保 Basic 凭据永远不会被重放到其他主机;封面仅在内容类型为真实图片时才被传递。
密码在启动时从进程环境中清除,URL 中的凭据会在出现在任何日志或结果中之前被删除。
容器
docker run -i --rm \
-e CALIBRE_WEB_URL=https://books.example.com \
-e CALIBRE_WEB_USERNAME=reader \
-e CALIBRE_WEB_PASSWORD=... \
ghcr.io/ni-c/calibreweb-mcp开发
npm install
npm test # unit tests against a stubbed OPDS feed, no instance needed
npm run lint
npm run build参见 CONTRIBUTING.md。
发布
更新
CHANGELOG.md并提升package.json(+ 锁文件)中的版本号。npm run lint && npm run test:coverage && npm run build标记发布版本:
git tag -s vX.Y.Z -m "vX.Y.Z" && git push origin vX.Y.Z
许可证
Maintenance
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server to manage and organize a Calibre ebook library, enabling metadata editing, search, conversion, and more through AI assistants.174MIT
- Alicense-qualityDmaintenanceMCP server enabling LLMs to query a local Calibre Content Server for ebook metadata, chapters, and content in HTML or Markdown.15MIT
- AlicenseAqualityCmaintenanceA local stdio MCP server that enables AI tools to search a self-hosted Calibre library over SSH, supporting metadata queries, full-text search, and book details.7MIT
- AlicenseAqualityBmaintenanceAn MCP server that lets an LLM browse, search, and download books from OPDS catalogs (e.g., Project Gutenberg, Standard Ebooks) using tools for feed navigation, full-text search, and acquisition link downloads.41AGPL 3.0
Related MCP Connectors
MCP server for Project Gutenberg — 75,000+ public-domain ebooks with full plain-text retrieval.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ni-c/calibreweb-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server