使用说明
Calibre MCP服务器和搜索插件
一个实验 模型上下文协议(MCP) 服务器位于本地 卡利伯 图书馆进入。其目的是为 AI 代理(如 ChatGPT、Copilot、Claude Desktop)提供一个研究 API,以便为您的电子书收藏提供全文搜索和结构化摘录。
此外,还有一个Calibre GUI插件。
- den MCP-服务器 WebSocket-Dienst开始了。
ws://127.0.0.1:8765)和 - 一 搜索代理 提供,该
- 使用 MCP 服务器的全文工具,
- 通过LLM衍生的关键词和
- 在 Calibre 对话框中显示包括来源在内的答案(标题 + ISBN)。
特点(现状)
MCP‑服务器
- 实施于
fastmcp - 目前提供两个工具:
calibre_fulltext_search- 输入 :
query: str,limit: int - 发送结果(
book_id,title,isbn,snippet) - 搜索
metadata.db关于books+comments(标题,ISBN,评论)
- 输入 :
calibre_get_excerpt- 输入 :
isbn: str,max_chars: int - 提供短的文本片段加元数据(
book_id,title)
- 输入 :
- 域层
LibraryResearchService作为中央API - 访问 Calibre
metadata.db通过SQLite(只读)- ISBN 查找
identifiers+回退aufbooks.isbn
- ISBN 查找
Calibre插件 mcp_server_recherche
- 通过 WebSocket 启动/停止 MCP 服务器 (
ws://host:port) - 设置一个 检索对话框 准备好了,
- 向已配置的LLM提供商发送问题,
- 自动使用 MCP 工具进行全文搜索和摘录
- 显示搜索结果和摘录
- 生成包含来源(包括ISBN)的结构化响应。
- 支持 后续问题:
- 短询将与上一个问题相结合 (例如,“告诉我更多关于 LIN 的信息(以:有哪些车辆总线系统?”)。
- 代理再次在库中搜索,但使用以前的上下文。
- 对话框中的调试输出(可选),例如:
Suchrunde 1 (Kernbegriffe): ['hacking', 'Sicherheit', ...]Toolcall calibre_fulltext_search: query='hacking', limit=6MCP -> list_tools,MCP <- call_tool美国。
仓库结构(简介)
重要目录/文件:
pyproject.toml项目和依赖定义src/calibre_mcp_server/MCP 服务器和域代码core/models.py简单域模型(FulltextHit,Excerpt, ...)core/service.py–LibraryResearchService,zentrale Research‑APIinfra/metadata_sqlite.py– 访问metadata.db关于SQLitetools/ft_search_tool.py–MCP工具calibre_fulltext_searchtools/excerpt_tool.py–MCP工具calibre_get_excerptwebsocket_server.py– 用于 MCP 调用的小型 WebSocket RPC 服务器mcp_protocol.py简单的 MCP 请求/响应结构main.py服务器的入口点
calibre_plugin/–Calibre-GUI插件__init__.py– Calibre 插件元数据config.py– 插件设置 / UImain.py– 对话框, 搜索代理, 启动/停止 WebSocket 服务器providers.py– 配置LLM提供程序(OpenAI兼容等)recherche_agent.pyLLM + MCP-Tools的编排ui.pyQt Dialog 和 UI 逻辑
tests/inspect_metadata_isbn.py调试脚本,显示ISBN映射metadata.dbmanual_test_websocket_connectivity.py– 使用简单的客户端测试 WS-Server
安装(开发设置)
先决条件:
- Python 3.10+(测试使用 3.12)
- 本地 Calibre 库
metadata.db)
开发环境(Development Environment):
# Repository klonen
git clone https://github.com/Miguel0888/mcp-server.git
cd mcp-server
# Optional: virtuelles Environment anlegen
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # Linux/macOS
# Paket im Editable‑Mode installieren (inkl. Dependencies)
python -m pip install --upgrade pip
python -m pip install -e .
之后,包裹 calibre_mcp_server 在活动的 Python 解释器中可用。
手动启动 MCP 服务器(WebSocket 模式)
Calibre 插件工作流会自动启动服务器。对于手动测试,您也可以直接运行它。
1. 通过环境变量进行配置
服务器读取库配置 src/calibre_mcp_server/config.py默认:当前 Calibre 库或配置的路径。
对于手动测试,您可以 CALIBRE_LIBRARY_PATH 设置:
set CALIBRE_LIBRARY_PATH=X:\E-Books
python -m calibre_mcp_server.main
然后,服务器启动一个 WebSocket 端点,例如: ws://127.0.0.1:8765接受类似 MCP 的请求(list_tools, call_tool).
测试工具(例如通过 WebSocket 客户端或测试脚本)
查看 tests/manual_test_websocket_connectivity.py 一个最小的例子:
- 连接到
ws://127.0.0.1:8765制造, list_tools发送和- 随后
call_tool为calibre_fulltext_search执行 。
Calibre‑Plugin:安装和配置
创建插件-ZIP(如果不是通过 GitHub 发布)
在 Project Root 中:
mkdir dist
cd calibre_plugin
zip -r ..\dist\calibre-mcp-plugin.zip .
ZIP文件 dist/calibre-mcp-plugin.zip 然后按照 Calibre 的预期,将插件文件包含在 root 中。
在 Calibre 中安装插件
- 打开Calibre
- 设置 → 插件 → 从文件加载插件
dist/calibre-mcp-plugin.zip选择- 校准或启动
之后,插件(例如“MCP搜索”)将出现在菜单/工具栏中。
插件的重要设置
Im插件对话框(Einstellungen → Plugins → MCP Server Recherche → Konfigurieren):
- MCP 服务器设置
Server-Host(默认值:127.0.0.1)Server-Port(默认值:8765)Calibre-Bibliothek(可选固定路径;否则使用活动库)- 可选:用于 MCP 服务器的 Python 解释器(如果不使用全局解释器)
- 重新研究-Feintuning
max_query_variants– 每轮搜索查询最多使用多少变体。max_hits_per_query每个查询的命中次数限制。max_hits_total– 在上下文中采用的命中次数的全球限制。target_sources– 代理人至少应该找到多少不同的来源(书籍)。max_excerpts/max_excerpt_chars摘录的数量和长度。min_hits_required– 搜索结束前的最小匹配次数。max_search_rounds– 代理最大化搜索次数(例如2:简单关键字+精简)。context_influence以前的问题对新需求的影响程度(0-100)。
- 提示提示
Hinweis für Query-Planer-Prompt(query_planner_hint)- 您可以提供给 AI 以控制搜索查询类型的额外文本 (例如“优先使用德国汽车工程专业术语”)。
Hinweis für Schlagwort-Prompt(keyword_extraction_hint)- 优化关键字提取,例如“首先使用没有AND的广义术语,而不是长的UND字符串”。
Hinweis für Antwort-Prompt(answer_style_hint)- 补充如何表达答案(例如“解释学士学位”)。
- 搜索模式
LLM für Query-Planung verwenden启用/关闭 LLM 支持的关键字/查询规划。Max. Schlagwörter pro Suche(max_search_keywords)Verknüpfung (AND/OR)(keyword_boolean_operator主要用于经典启发式查询。
搜索代理如何工作(高级)
逻辑的核心在于 calibre_plugin/recherche_agent.py:
-
问题正常化
- 空的输入将被忽略。
- 简短的查询将与上一个问题相结合,以获得上下文。
-
执行搜索
- 第一轮:
_extract_keywords(LLM) 生成单词列表/简单短语。- 如果它只是一个列表(例如“黑客网络攻击安全……”),
单词被分割和 单个 作为查询(
hacking,Sicherheit, ...). → 对单个术语进行有效的OR-搜索。 - 如果返回多个短语,则每个短语将被用作自己的查询。
- 轮2+(可选,最多)
max_search_rounds):_refine_search_queries利用LLM基于以往的结果 创建替代或复杂的搜索查询。- 结果将与之前的结果合并并并重复。
- 第一轮:
-
用摘录丰富结果
- 对于有限数量的ISBN匹配,请调用代理
calibre_get_excerptauf, 加载短文本片段(例如评论)。
- 对于有限数量的ISBN匹配,请调用代理
-
快速构建和获取LLM答案
- 代理构建一个由三个部分组成的Markdown提示符:
- 简要摘要
- 相关书籍,带有简要注释和ISBN
- 详细回答问题
- LLM提供商将通过
ChatProviderClient被提及。
- 代理构建一个由三个部分组成的Markdown提示符:
-
在对话框中显示答案
- 对话框显示响应(Markdown)和可选的工具使用调试日志。
调试与测试
- 直接测试FT搜索
src/calibre_mcp_server/tools/ft_search_tool.py使用LibraryResearchService.fulltext_search.- 您可以使用简单的 WebSocket 客户端或测试脚本进行手动测试。
- 检查 ISBN 映射
tests/inspect_metadata_isbn.py有助于了解Calibre ISBNs如何在books和identifiers放置 。
示例调用:
python tests\inspect_metadata_isbn.py 9783658024192
路线图/Ieden
- 其他 MCP 工具,例如
- 关键字搜索(标签、系列)
- 作者搜索
- 实际书籍内容的全文搜索(如有索引)
- 更好地支持 Calibre 对话框中的流响应
- 可配置的工具跟踪显示(调试面板可打开/隐藏)
- 针对搜索代理的高级多阶段策略(例如,超过 2 轮搜索、加权匹配)
这个项目是实验性的 - 欢迎反馈,问题和拉请求。
ChatGPT:每个隧道的HTTPS加密协议(Cloudflare/ngrok)
ChatGPT kann 没有本地 localhost/127.0.0.1到达服务器。所以你需要一个 公开访问的 HTTPS URL重定向到您的本地 HTTP MCP 端点。
1) mcp-http本地启动器
首先在本地启动 HTTP MCP 服务器(例如端口 8000):
set CALIBRE_LIBRARY_PATH=X:\E-Books
set MCP_HTTP_HOST=127.0.0.1
set MCP_HTTP_PORT=8000
python -m calibre_mcp_server.http_server
之后,终端点应该可以在本地访问:
http://127.0.0.1:8000/mcp
注: 路径 (
/mcp它必须与您的服务器相匹配。
2) Cloudflare隧道(快速隧道)
安装(例子):
- 窗户:
winget install Cloudflare.cloudflared - macOS:
brew install cloudflare/cloudflare/cloudflared
开始隧道 :
cloudflared tunnel --url http://127.0.0.1:8000
你会得到一个像这样的URL。 https://<irgendwas>.trycloudflare.com.
ChatGPT连接器URL:
https://<irgendwas>.trycloudflare.com/mcp
3) 替代品:ngrok
开始隧道 :
ngrok http 8000
你会得到一个像这样的URL。 https://<irgendwas>.ngrok-free.app.
ChatGPT连接器URL:
https://<irgendwas>.ngrok-free.app/mcp
安全说明
在ChatGPT中时 “混合” 或 没有OAuth 如果工作的话,隧道链接是你的“钥匙”。 将URL视为秘密(不发布,不写入公共日志)。对于真正的安全性,OAuth流是更强大的解决方案。
