多源书籍搜索服务

聚合Google Books、Open Library和Project Gutenberg的多源书籍搜索服务,提供统一、去重的搜索结果,适用于AI代理和开发者。

  • by projectahi
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 projectahi/books-mcp

使用说明

书籍mcp

多源图书发现MCP服务器。将谷歌图书、开放图书馆和古腾堡项目聚合为统一的、重复数据消除的结果。

问你的人工智能代理“给我找一本关于密码学的书,我可以免费阅读”,然后通过古腾堡下载链接、开放图书馆封面和谷歌图书元数据(按ISBN合并)得到一个干净的答案。

快速设置(克劳德桌面)

添加到您的Claude Desktop MCP配置(~/.claude.json 或克劳德桌面设置):

{
  "mcpServers": {
    "books": {
      "command": "npx",
      "args": ["mcp-remote", "https://books-mcp.YOUR-SUBDOMAIN.workers.dev/mcp"]
    }
  }
}

就是这样。重新启动克劳德,问问书的事。

它的作用

3个MCP工具:

工具 说明
search_books 搜索3个来源。返回具有完整性得分的统一结果。
get_book 通过ISBN、Open Library密钥或Gutenberg ID获取完整详细信息。包括原始API响应。
book_filters 从开放图书馆发现可用的主题和类别。

3数据来源:

来源 它提供了什么 利率限制
谷歌图书 商业元数据、评级、预览 每天1K(免费),10K+(带密钥)
开放图书馆 2000多万条记录、ISBN、封面、主题 无硬性限制
古腾堡项目 公共领域书籍的全文下载 无限制

多源聚合: 书籍按ISBN进行去重和合并。Open Library提供了最丰富的元数据,Google Books添加了评级和商业数据,Gutenberg添加了免费下载链接。你在一个结果中得到了三个中最好的。

建筑

┌──────────────────────────────────────────────────────┐
│              Cloudflare Worker (Hono)                  │
│                                                      │
│  ┌────────────┐  ┌──────────┐  ┌────────────┐       │
│  │search_books│  │ get_book │  │book_filters│ MCP    │
│  └─────┬──────┘  └────┬─────┘  └─────┬──────┘       │
│        │              │              │                │
│        ▼              ▼              ▼                │
│  ┌──────────────────────────────────────┐            │
│  │         D1 Cache Layer              │            │
│  │   Check first, 7-day freshness TTL  │            │
│  └──────┬───────────────────┬──────────┘            │
│         │ MISS/STALE        │ HIT                    │
│         ▼                   │                        │
│  ┌──────────────────┐       │                        │
│  │  Merge / Dedup   │       │                        │
│  └──┬─────┬─────┬───┘       │                        │
│     │     │     │           │                        │
│  ┌──▼─┐┌──▼──┐┌─▼────┐     │                        │
│  │ GB ││ OL  ││ Gut. │     │  API Adapters           │
│  └────┘└─────┘└──────┘     │                        │
│         │                   │                        │
│         ▼                   │                        │
│  ┌──────────────────┐       │                        │
│  │  D1: Persist     │◀──────┘                        │
│  │  merged + raw    │                                │
│  └──────────────────┘                                │
└──────────────────────────────────────────────────────┘

系统使用得越多,就越智能。每次搜索都会保存合并结果和对D1的原始API响应。后续对相同书籍的搜索会立即从缓存中返回。过期数据(>7天)会触发背景刷新。

60秒内自动主持

git clone https://github.com/YOUR-USERNAME/books-mcp.git
cd books-mcp
npm install
wrangler d1 create books-mcp-db    # Note the database_id
# Update wrangler.toml with your database_id
npm run db:migrate:local
npm run dev

可选:为更高的费率限制设置Google Books API密钥:

wrangler secret put GOOGLE_BOOKS_API_KEY

部署:

npm run deploy

查询示例

连接后,在Claude中尝试以下操作:

  • “给我找一本关于密码学历史的书”
  • 我可以免费阅读Ursula K.Le Guin的哪些著作
  • “搜索关于太空探索的儿童书籍”
  • “获取ISBN 9780385495325的完整详细信息”

添加新媒体类型

适配器模式是为扩展而设计的。要添加电影、音乐、电视或播客:

  1. 创建 src/types/{media}.ts 延伸 MediaResult
  2. 创建 src/adapters/{media}/{source}.ts 实现适配器接口
  3. 在中添加MCP工具 src/mcp.ts
  4. 为新表创建D1迁移

看 TODOS.md 了解每种媒体类型的详细扩展计划。

公共演示实例

托管版本是一个公开演示,没有身份验证或速率限制。对于生产用途,请使用自己的Cloudflare帐户自行托管。免费版涵盖了大多数用例。

许可证

麻省理工学院