书籍元数据搜索工具

一个通过查询Google Books和Open Library来获取书籍元数据、封面和出版信息的MCP服务器,适用于Claude Code、Claude Desktop及任何MCP兼容客户端。

  • by vetnet183
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 vetnet183/book-metadata-mcp

使用说明

图书元数据mcp

搜索的MCP服务器 谷歌图书 和 开放图书馆 查找图书元数据、封面艺术和出版信息。专为与Claude Code、Claude Desktop和任何兼容MCP的客户端一起使用而构建。

特性

  • 多源搜索 --同时查询谷歌图书和开放图书馆,根据匹配质量对结果进行评分
  • 一次通话查询 — find_book 在一次调用中返回标题、作者、年份、描述、ISBN、主题和封面
  • 高分辨率封面 --谷歌图书封面宽约1280px(6种尺寸),开放图书馆L尺寸封面
  • 智能评分 --标题/作者匹配与研究指南检测(CliffsNotes、SparkNotes自动降低优先级)
  • 准确的出版年份 --交叉引用两个来源,选择最早的可信年份(避免现代重印日期)
  • 批处理模式 --一次最多搜索20本书
  • 工具注释 --MCP行为提示使客户端能够自动批准安全的只读工具
  • 教学错误 --错误响应包括帮助代理自我纠正的建议
  • 不需要API密钥 --开箱即用,提供免费等级

工具

工具 说明
find_book 推荐。 完整的单书查找--在一次调用中返回标题、作者、年份、描述、ISBN、主题和封面。
search_book 按标题、作者或ISBN搜索。从两个来源返回多个得分的候选人。
get_cover 查找最佳可用封面图片URL(优先考虑最大尺寸)。支持尺寸验证。
get_metadata 获取合并元数据:作者、年份、描述、ISBN、主题、页数。
download_cover 下载封面图片并另存为JPEG格式。需要 Pillow.
bulk_search 一次搜索多本书(每批最多20本)。

安装

克劳德代码

claude mcp add book-metadata -- uvx book-metadata-mcp

克劳德桌面版

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "book-metadata": {
      "command": "uvx",
      "args": ["book-metadata-mcp"]
    }
  }
}

来源

git clone https://github.com/colonylibrary/book-metadata-mcp.git
cd book-metadata-mcp
pip install -e ".[covers]"

然后用Claude Code注册:

claude mcp add book-metadata -- book-metadata-mcp

用法示例

安装后,您的AI助手可以使用这些工具:

F.斯科特·菲茨杰拉德《寻找了不起的盖茨比》

{
  "query": {"title": "The Great Gatsby", "author": "F. Scott Fitzgerald"},
  "result_count": 5,
  "results": [
    {
      "source": "open_library",
      "title": "The Great Gatsby",
      "authors": ["F. Scott Fitzgerald"],
      "published_date": "1920",
      "cover_url": "https://covers.openlibrary.org/b/id/10590366-L.jpg",
      "match_score": 95.0
    }
  ]
}

弗兰克·赫伯特的《沙丘》封面

返回Google Books中可用的最大封面的URL(最大可达extraLarge ~ 1280px),并回退到Open Library。

“查找这些书的元数据:1984,勇敢的新世界,华氏451度”

批处理模式搜索所有三个,返回标题、作者、年份、ISBN和封面URL。

配置

所有配置都可以通过环境变量进行选择:

变量 默认值 描述
GOOGLE_BOOKS_API_KEY (无) 用于更高配额的可选Google API密钥(1000/天,不含)
GOOGLE_DELAY 0.5 Google API调用之间的秒数
OPENLIBRARY_DELAY 0.35 开放库API调用之间的秒数
GOOGLE_CB_THRESHOLD 3 断路器跳闸前连续429次故障
GOOGLE_CB_COOLDOWN 60 断路器跳闸后跳过谷歌的几秒钟
BOOK_MCP_USER_AGENT BookMetadataMCP/0.2.0 API请求的用户代理

批量使用/速率限制

在没有API密钥的情况下,谷歌图书每天允许约1000个请求。对于超过500册的图书馆,您将达到收费上限。服务器会自动处理此问题:

  1. 断路器 --在连续3次429响应后,谷歌将被跳过60秒
  2. 优雅的回退 --Open Library在Google冷却期间继续提供结果
  3. 自动恢复 --谷歌将在冷却期结束后重试
  4. 零错误 --限速永远不会导致故障,只是暂时丢失谷歌特定的数据

为了获得最佳的批量体验,请设置 GOOGLE_BOOKS_API_KEY 到一个 Google Cloud API密钥 启用图书API(免费等级:1000/天;付费等级:更高)。

评分工作原理

每个结果都以0-100+的评分标准进行评分:

因素 点 描述
标题匹配 0-50 完全匹配=50,部分匹配=比例匹配
作者匹配 0-30 精确=30,部分/子字符串=20
有封面 10 封面图片URL可用
有描述 5 书籍描述可用
是否有ISBN 5 ISBN-10或ISBN-13可用
谷歌来源 2 对封面质量有轻微偏好
学习指南 -60 CliffsNotes、SparkNotes等。
虚标题 -15 结果标题比查询长得多

数据源

谷歌图书API

  • 发布者验证的元数据
  • 6种封面图像尺寸(小缩略图到超大)
  • 出版商的丰富描述
  • 免费:每天1000次请求,无API密钥

开放式库API

  • 社区策划的元数据
  • 原始出版年份(first_publish_year)
  • 广泛的主题分类
  • 免费:每秒3个请求,带有User-Agent标头

压力测试结果

针对1920本有声读物进行测试(v0.1.3,全新安装,无API密钥):

度量 结果
匹配率 92.2% (1752/1901已处理)
错误 0
高置信度匹配(>=70) 80% (1,523)
有封面URL 85% (1,629)
有ISBN 75% (1,444)
有出版年份 99.9% 比赛
速度 0.5-0.7本书/秒
谷歌429处理 断路器跳闸,优雅的OL回退

所有5个工具都通过: search_book, get_cover, get_metadata, download_cover, bulk_search. 边缘案例测试: 26/26通过 (Unicode、短标题、空输入、特殊字符、ISBN查找、批量限制)。

许可证

麻省理工学院