返回市场
MCP开放库

MCP开放库

作者:8enSmith43 星标更新:2025-11-21

项目介绍

MCP Open Library

信任评分 smithery 徽章

这是一个用于Open Library API的模型上下文协议(MCP)服务器,使AI助手能够搜索书籍和作者信息。

<a href="https://glama.ai/mcp/servers/@8enSmith/mcp-open-library"> <img width="380" height="200" src="https://gips3.baidu.com/it/u=875448955,2609331169&fm=3081&app=3081&f=PNG?w=760&h=400" alt="mcp-open-library MCP服务器" /> </a>

概述

该项目实现了一个MCP服务器,提供了工具供AI助手与Open Library进行交互。它允许通过书名搜索书籍信息,通过姓名搜索作者,使用Open Library键检索详细的作者信息,并使用Open Library ID (OLID)获取作者照片的URL。服务器返回结构化的书籍和作者信息数据。

特性

  • 按书名搜索书籍:通过书名搜索书籍(get_book_by_title)。
  • 按姓名搜索作者:通过姓名搜索作者(get_authors_by_name)。
  • 获取作者详情:使用Open Library键检索特定作者的详细信息(get_author_info)。
  • 获取作者照片:使用Open Library ID (OLID)获取作者照片的URL(get_author_photo)。
  • 获取书籍封面:使用各种标识符(ISBN, OCLC, LCCN, OLID, ID)获取书籍封面图像的URL(get_book_cover)。
  • 按ID获取书籍:使用各种标识符(ISBN, LCCN, OCLC, OLID)检索详细的书籍信息(get_book_by_id)。

安装

通过Smithery安装

要通过Smithery自动安装MCP Open Library for Claude Desktop:

npx -y @smithery/cli install @8enSmith/mcp-open-library --client claude

手动安装

# 克隆仓库
git clone https://github.com/8enSmith/mcp-open-library.git
cd mcp-open-library

# 安装依赖
npm install

# 构建项目
npm run build

使用

运行服务器

  1. 确保您正在运行node v22.21.1(在较新版本的node上可能也能工作,但这是测试中使用的版本)。如果您已安装nvm,请运行nvm use
  2. mcp-open-library根目录下运行npm run build
  3. 接下来运行npm run inspector。构建完成后,点击带有MCP_PROXY_AUTH_TOKEN查询字符串参数的URL以打开Inspector。
  4. 在Inspector中选择'STDIO'传输方式。
  5. 确保命令设置为'build/index.js'。
  6. 在Inspector中点击'Connect'按钮——现在您将连接到服务器。
  7. 点击右上角菜单栏中的'Tools'。
  8. 尝试运行一个工具,例如点击get_book_by_title。
  9. 搜索一本书,例如,在标题框中输入'The Hobbit',然后点击'Run Tool'。服务器将返回书籍详情。

与MCP客户端一起使用

此服务器实现了模型上下文协议,这意味着它可以被任何兼容MCP的AI助手或客户端使用,例如Claude Desktop。服务器公开了以下工具:

  • get_book_by_title:通过书名搜索书籍信息
  • get_authors_by_name:通过姓名搜索作者信息
  • get_author_info:使用Open Library作者键获取特定作者的详细信息
  • get_author_photo:使用Open Library作者ID (OLID)获取作者照片的URL
  • get_book_cover:使用特定标识符(ISBN, OCLC, LCCN, OLID, 或 ID)获取书籍封面图像的URL
  • get_book_by_id:使用特定标识符(ISBN, LCCN, OCLC, 或 OLID)获取详细的书籍信息

示例 get_book_by_title 输入:

{
  "title": "The Hobbit"
}

示例 get_book_by_title 输出:

[
  {
    "title": "The Hobbit",
    "authors": [
      "J. R. R. Tolkien"
    ],
    "first_publish_year": 1937,
    "open_library_work_key": "/works/OL45883W",
    "edition_count": 120,
    "cover_url": "https://covers.openlibrary.org/b/id/10581294-M.jpg"
  }
]

示例 get_authors_by_name 输入:

{
  "name": "J.R.R. Tolkien"
}

示例 get_authors_by_name 输出:

[
  {
    "key": "OL26320A",
    "name": "J. R. R. Tolkien",
    "alternate_names": [
      "John Ronald Reuel Tolkien"
    ],
    "birth_date": "3 January 1892",
    "top_work": "The Hobbit",
    "work_count": 648
  }
]

示例 get_author_info 输入:

{
  "author_key": "OL26320A"
}

示例 get_author_info 输出:

{
  "name": "J. R. R. Tolkien",
  "personal_name": "John Ronald Reuel Tolkien",
  "birth_date": "3 January 1892",
  "death_date": "2 September 1973",
  "bio": "John Ronald Reuel Tolkien (1892-1973) 是一位重要的英语语言学者,专攻古英语和中古英语。他曾担任牛津大学盎格鲁-撒克逊语和后来的英语语言文学梅顿教授。",
  "alternate_names": ["John Ronald Reuel Tolkien"],
  "photos": [6791763],
  "key": "/authors/OL26320A",
  "remote_ids": {
    "viaf": "95218067",
    "wikidata": "Q892"
  },
  "revision": 43,
  "last_modified": {
    "type": "/type/datetime",
    "value": "2023-02-12T05:50:22.881"
  }
}

示例 get_author_photo 输入:

{
  "olid": "OL26320A"
}

示例 get_author_photo 输出:

https://covers.openlibrary.org/a/olid/OL26320A-L.jpg

示例 get_book_cover 输入:

{
  "key": "ISBN",
  "value": "9780547928227",
  "size": "L"
}

示例 get_book_cover 输出:

https://covers.openlibrary.org/b/isbn/9780547928227-L.jpg

get_book_cover 工具接受以下参数:

  • key:标识符类型(其中之一:ISBN, OCLC, LCCN, OLID, 或 ID
  • value:标识符值
  • size:可选封面大小(S表示小,M表示中,L表示大,默认为L

示例 get_book_by_id 输入:

{
  "idType": "isbn",
  "idValue": "9780547928227"
}

示例 get_book_by_id 输出:

{
  "title": "The Hobbit",
  "authors": [
    "J. R. R. Tolkien"
  ],
  "publishers": [
    "Houghton Mifflin Harcourt"
  ],
  "publish_date": "October 21, 2012",
  "number_of_pages": 300,
  "isbn_13": [
    "9780547928227"
  ],
  "isbn_10": [
    "054792822X"
  ],
  "oclc": [
    "794607877"
  ],
  "olid": [
    "OL25380781M"
  ],
  "open_library_edition_key": "/books/OL25380781M",
  "open_library_work_key": "/works/OL45883W",
  "cover_url": "https://covers.openlibrary.org/b/id/8231496-M.jpg",
  "info_url": "https://openlibrary.org/books/OL25380781M/The_Hobbit",
  "preview_url": "https://archive.org/details/hobbit00tolkien"
}

get_book_by_id 工具接受以下参数:

  • idType:标识符类型(其中之一:isbn, lccn, oclc, olid
  • idValue:标识符值

在Claude Desktop中使用此工具的一个示例可以在这里看到:

<img width="1132" alt="image" src="https://gips2.baidu.com/it/u=2923591700,1277230475&fm=3081&app=3081&f=PNG?w=2264&h=1994" />

Docker

您可以使用Docker测试这个MCP服务器。首先运行:

docker build -t mcp-open-library .
docker run -p 8080:8080 mcp-open-library

然后可以通过Inspector测试运行在Docker中的服务器,例如:

npm run inspector http://localhost:8080

开发

项目结构

  • src/index.ts - 主服务器实现
  • src/types.ts - TypeScript类型定义
  • src/index.test.ts - 测试套件

可用脚本

  • npm run build - 构建TypeScript代码
  • npm run watch - 监视更改并重新构建
  • npm test - 运行测试套件
  • npm run format - 使用Prettier格式化代码
  • npm run inspector - 对服务器运行MCP Inspector

运行测试

npm test

贡献

欢迎贡献!请随时提交拉取请求。

致谢