基于 MeiliSearch 搭建的 Calibre 书籍管理系统,支持搜索、下载、预览和智能交互。
- 使用 Calibre Content Server 作为数据来源
- MeiliSearch 提供快速全文搜索和语义搜索
- 支持书籍元数据的 CRUD 操作
- 在线元数据获取和补全
- 封面图片和文件下载
- MCP (Model Context Protocol) 集成 - 与 AI 助手无缝交互
- 自然语言操作 - 通过对话管理书籍
- 智能推荐 - AI 驱动的书籍推荐
- 双模式部署 - 支持集成模式和独立模式
- 详细参数说明 - 为所有 API 接口提供完整的参数文档
- 两套前端实现:
- Next.js 15 + Shadcn/UI (推荐,现代化设计)
- React 19 + TypeScript 5
- Tailwind CSS 4 + Glassmorphism
- Vercel AI SDK 流式对话
- react-reader EPUB 阅读器
- 10 个完整页面(首页、书籍列表、详情、阅读器、搜索、对话、设置、任务、出版社、元数据管理)
- Vue.js 3 + Element Plus (旧版,稳定维护)
- Next.js 15 + Shadcn/UI (推荐,现代化设计)
- 响应式设计 - 支持桌面端和移动端
- 暗黑模式 - 自动适配系统主题
- RESTful API 接口
- Docker 容器化部署
- 多平台二进制发布
- 完整的 CI/CD 流程
- 静态文件托管(支持 Vue/Next.js)
开发指南:
- AGENTS.md - AI 助手快速参考
- CHANGELOG.md - 版本变更历史
用户文档 (docs/ 目录):
- 快速开始 - 部署和配置指南
- API 文档 - RESTful API 参考
- 系统架构 - 系统架构设计
- 开发指南 - 代码规范和开发流程
- 代码结构 - 项目目录说明
- MCP 指南 - MCP 协议集成和使用
- MCP Inspector - MCP 工具测试指南
前端开发:
- Next.js 前端 - Next.js 15 + Shadcn/UI (推荐)
# 构建和运行
make build
./calibre-api# 使用命令行参数
./calibre-api --mcp
# 使用环境变量
MCP_MODE=true ./calibre-api
# 使用配置文件
# 在 config.yaml 中设置 mcp.enabled: true
./calibre-api配置 Claude Desktop 或其他 MCP 客户端:
{
"mcpServers": {
"calibre-api": {
"command": "/path/to/calibre-api",
"args": ["--mcp"]
}
}
}现在您可以通过自然语言与 AI 助手交互:
- "搜索关于机器学习的书籍"
- "帮我更新书籍 ID 123 的元数据"
- "推荐几本随机书籍"
- "根据 ISBN 获取书籍信息"
GET /api/get/cover/:id --> 获取书籍封面
GET /api/download/book/:id --> 下载书籍文件
GET /api/read/:id/toc --> 获取书籍目录(包含元信息、目录和地址)
GET /api/read/:id/file/*path --> 读取书籍中的文件
GET /api/book/:id --> 获取书籍信息
GET /api/search --> 搜索书籍
POST /api/search --> 搜索书籍
GET /api/recently --> 最近更新的书籍
GET /api/random --> 随机书籍推荐
GET /api/publisher --> 获取出版社列表
GET /api/metadata/isbn/:isbn --> 根据 ISBN 获取元数据
GET /api/metadata/search --> 搜索在线元数据
POST /api/book/:id/update --> 更新书籍元数据
POST /api/book/:id/delete --> 删除书籍
POST /api/index/update --> 更新搜索索引
POST /api/index/switch --> 切换搜索索引
本项目对 gin-mcp 包进行了增强,为所有 API 接口提供了详细的参数说明。这使得 AI 助手能够更好地理解和使用这些接口。
- 参数结构体定义 - 在
internal/calibre/schemas.go中定义了所有接口的参数结构体 - jsonschema 标签 - 为每个参数添加了详细的描述和约束
- 自动注册 - 在启动时自动为所有接口注册参数模式
改进前:
参数:q (string)
参数:limit (number)
参数:offset (number)
改进后:
参数:q (string, required) - 搜索关键词
参数:limit (number, 1-100, default=20) - 每页结果数量
参数:offset (number, >=0, default=0) - 结果偏移量
参数:filter (string, optional) - 过滤条件
参数:sort (string, optional) - 排序字段
- 启动服务器:
./calibre-api - 在 MCP 客户端(如 Cursor)中连接到
http://localhost:8080/mcp - 所有 API 工具都会包含详细的参数说明
详细文档请参考:MCP 指南
# 构建主程序(包含 MCP 功能)
make build
# 构建独立 MCP 服务器
make build-mcp
# 构建所有版本
make build-all
# 直接使用 Go 构建
go build -o calibre-api .
go build -o calibre-mcp-server ./cmd/mcp-server项目提供了完整的 Docker Compose 配置,支持前后端分离部署:
# 1. 基础部署(前端 + 后端)
docker-compose up -d
# 2. 完整部署(包含 Qdrant 向量数据库)
docker-compose --profile qdrant up -d
# 3. 查看服务状态
docker-compose ps
# 4. 查看日志
docker-compose logs -f
# 5. 停止服务
docker-compose down服务访问:
- 前端 (Next.js): http://localhost:3000
- 后端 API (Go): http://localhost:8080
- Qdrant 管理界面: http://localhost:6333/dashboard (使用 --profile qdrant 时)
架构说明:
calibre-api: Go 后端服务,提供 RESTful APIcalibre-web: Next.js 前端服务,提供现代化 UIqdrant: 可选的向量数据库服务(使用 profile 启用)
前端通过 Docker 内部网络访问后端,环境变量 API_BASE_URL=http://calibre-api:8080 配置了服务间通信(代理会自动拼接 /api/:path* 路径)。
详细的部署指南请参考:快速开始
# 构建后端镜像
docker build -t calibre-api:latest -f Dockerfile .
# 构建前端镜像
docker build -t calibre-web:latest -f web-next/Dockerfile ./web-next
# 运行后端容器
docker run -d -p 8080:8080 \
-e CALIBRE_CONTENT_SERVER=https://lib.pve.icu \
-v calibre_data:/data \
calibre-api:latest
# 运行前端容器
docker run -d -p 3000:3000 \
-e API_BASE_URL=http://calibre-api:8080 \
--link calibre-api \
calibre-web:latest从 Releases 页面下载预构建的二进制文件:
calibre-api-*- 主程序(包含 MCP 功能)calibre-mcp-server-*- 独立 MCP 服务器
配置文件会按优先级从下面查找:
/etc/calibre-api/config.yaml$HOME/.calibre-api./config.yaml
配置内容
address: :8080
debug: false
staticDir: "/app/static"
tmpDir: ".files"
# Calibre Content Server 配置
content:
server: https://lib.pve.icu
# Qdrant 搜索引擎配置
qdrant:
url: http://localhost:6333
collection: books
timeout: 30
# 元数据服务配置
metadata:
doubanmode: local # "local"(本地爬虫,推荐)或 "http"(HTTP 服务)
doubanurl: http://your-douban-api:8085 # HTTP 模式时需要,local 模式可省略
# doubanconfig: # local 模式可选配置,以下为默认值,通常不需要修改
# baseurl: https://book.douban.com/
# searchurl: https://www.douban.com/search?cat={searchType}&q={searchText}
# isbnurl: https://book.douban.com/isbn/{isbn}/
# detailurl: https://book.douban.com/subject/{id}/
# MCP 服务器配置
mcp:
enabled: false # 是否默认启用 MCP 模式
server_name: "calibre-mcp-server" # MCP 服务器名称
version: "1.1.0" # MCP 服务器版本
base_url: "http://localhost:8080" # API 基础 URL
timeout: 30 # API 请求超时时间(秒)环境变量优先于配置文件,可以使用环境变量覆盖配置文件中的参数
# 基础配置
CALIBRE_ADDRESS=:8080
CALIBRE_DEBUG=false
CALIBRE_TMPDIR=/tmp
CALIBRE_SEARCH_INDEX=books
# Calibre Content Server(必需)
CALIBRE_CONTENT_SERVER=https://your-calibre-server.com
# Qdrant 配置(可选,启用向量搜索时配置)
CALIBRE_QDRANT_URL=http://qdrant:6333
CALIBRE_QDRANT_API_KEY=your-api-key
# OpenAI 配置(可选,启用 AI 功能时配置)
OPENAI_API_KEY=sk-your-api-key
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4
# 元数据服务
CALIBRE_METADATA_DOUBANMODE=local # 或 "http"
CALIBRE_METADATA_DOUBANURL=http://your-douban-api # HTTP 模式时需要
# MCP 配置
CALIBRE_MCP_ENABLED=false
MCP_MODE=true # 快速启用 MCP 模式# API 配置(必需)
# Docker Compose 环境使用服务名(基础 URL,不包含路径)
API_BASE_URL=http://calibre-api:8080
# 本地开发环境使用 localhost
# API_BASE_URL=http://localhost:8080
# Node.js 配置
NODE_ENV=production
PORT=3000
TZ=Asia/Shanghai重要提示:
- Docker Compose 环境中,前端使用
http://calibre-api:8080访问后端(Docker 服务名) - 本地开发环境中,前端使用
http://localhost:8080访问后端 - 详细配置说明请参考 快速开始
支持添加书源的APP可以使用下面配置,将本服务引入
{
"bookSourceUrl": "http://localhost:8080",
"bookSourceType": 0,
"bookSourceName": "calibre书库",
"bookSourceGroup": "calibre",
"bookSourceComment": "",
"loginUrl": "",
"loginUi": "",
"loginCheckJs": "",
"concurrentRate": "",
"header": "",
"bookUrlPattern": "",
"searchUrl": "search?q={{key}}&sort=id:desc",
"exploreUrl": "",
"enabled": true,
"enabledExplore": false,
"weight": 0,
"customOrder": 0,
"lastUpdateTime": 1661322926750,
"ruleSearch": {
"bookList": "$.hits",
"name": "$.title",
"author": "$.authors",
"intro": "$.comments",
"coverUrl": "/get/cover/{{$.id}}.jpg",
"bookUrl": "/book/{{$.id}}"
},
"ruleExplore": {},
"ruleBookInfo": {
"name": "$.title",
"author": "$.authors",
"intro": "$.comments",
"coverUrl": "/get/cover/{{$.id}}.jpg",
"tocUrl": "/read/{{$.id}}/toc"
},
"ruleToc": {
"chapterList": "$.points",
"chapterName": "$.text",
"chapterUrl": "$.content.src"
},
"ruleContent": {
"content": "//body"
}
}- 通过 Web 界面管理和搜索书籍
- 下载和预览书籍内容
- 元数据编辑和补全
- 自然语言搜索书籍
- AI 驱动的阅读推荐
- 智能元数据处理
- 作为阅读 APP 的书源
- API 接口供第三方应用调用
欢迎提交 Issue 和 Pull Request!
MIT License