mcpField
P
Project Gutenberg MCP

Project Gutenberg MCP

本地服务
github.com游戏娱乐031 周前更新

关于 Project Gutenberg MCP

Project Gutenberg MCP 是一个连接自建 Project Gutenberg 镜像的 MCP 服务,供需要搜索和阅读书籍的 MCP 客户端使用。它支持按标题或作者搜索、获取书籍元数据,并以文本或分段形式读取内容。

主要功能

  1. 01按标题或作者搜索书籍
  2. 02获取书籍元数据
  3. 03下载纯文本书籍
  4. 04列出固定大小的段落
  5. 05读取指定段落

适用场景

  1. 01查找特定作者的书籍
  2. 02查询书籍标题与格式信息
  3. 03获取书籍完整文本
  4. 04分段阅读较长书籍

MCP 相关

该 MCP 服务向客户端提供书籍搜索、元数据查询、全文下载和分段读取工具。使用时需运行自有 Project Gutenberg 镜像;仓库附带镜像服务器。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"bobbyhouse-project-gutenberg": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GUTENBERG_BASE_URL",
"-e",
"GUTENBERG_TOOLS",
"-e",
"GUTENBERG_BOOK_ID",
"-e",
"GUTENBERG_CHUNK_SIZE",
"-e",
"GUTENBERG_LANGUAGE",
"roberthouse224/project-gutenberg-mcp:1.2.0"
],
"env": {
"GUTENBERG_BASE_URL": "<GUTENBERG_BASE_URL>",
"GUTENBERG_TOOLS": "<GUTENBERG_TOOLS>",
"GUTENBERG_BOOK_ID": "<GUTENBERG_BOOK_ID>",
"GUTENBERG_CHUNK_SIZE": "<GUTENBERG_CHUNK_SIZE>",
"GUTENBERG_LANGUAGE": "<GUTENBERG_LANGUAGE>"
}
}
}
}
启动命令docker run -i --rm -e GUTENBERG_BASE_URL -e GUTENBERG_TOOLS -e GUTENBERG_BOOK_ID -e GUTENBERG_CHUNK_SIZE -e GUTENBERG_LANGUAGE roberthouse224/project-gutenberg-mcp:1.2.0
需要配置的环境变量
GUTENBERG_BASE_URLBase URL of your Gutenberg mirror. Run the mirror from the mirror/ directory and point this at it. See the README for setup instructions.
GUTENBERG_TOOLSComma-separated list of tools to expose. Available: search_books, get_book_metadata, fetch_book_text, list_passages, get_passage
GUTENBERG_BOOK_IDProject Gutenberg book ID to use as the default for all tools. Find IDs via search_books. Example: 2680 for Meditations by Marcus Aurelius.
GUTENBERG_CHUNK_SIZESize in bytes of each passage returned by get_passage.
GUTENBERG_LANGUAGEDefault ISO 639-1 language code filter for search_books. Used when the caller omits the language parameter.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ociroberthouse224/project-gutenberg-mcp:1.2.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

project-gutenberg-mcp

MCP Registry Docker Hub

一个用于阅读 Project Gutenberg 图书的 MCP 服务。

Project Gutenberg 服务条款

Project Gutenberg 的机器人访问政策规定,该网站仅供人类用户使用。自动访问可能导致你的 IP 被封禁。

要使用此 MCP 服务,你必须运行自己的镜像站。Project Gutenberg 明确支持并鼓励建立镜像站——详情请参阅其镜像站指南。

此仓库在 mirror/ 目录中包含一个可直接运行的镜像服务。

镜像站设置

镜像服务会在启动时下载 Project Gutenberg 目录(压缩后约 5 MB),并在首次访问时将图书文件缓存到本地。它提供了此 MCP 服务所需的 URL 结构。

Docker Compose(推荐)

同时运行镜像服务和 MCP 服务。MCP 服务通过 HTTP 暴露在端口 8081。

docker compose up

镜像服务位于 http://localhost:8080,MCP 服务位于 http://localhost:8081/mcp。

仅运行镜像服务(stdio)

构建并启动镜像服务,然后通过 stdio 连接 MCP 客户端。

task build:mirror
task start:mirror

镜像服务运行在 http://localhost:8080。MCP 客户端配置示例(stdio):

{
  "mcpServers": {
    "project-gutenberg-mcp": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "GUTENBERG_BASE_URL=http://host.docker.internal:8080",
        "-e", "GUTENBERG_TOOLS=search_books,get_book_metadata,list_passages,get_passage",
        "roberthouse224/project-gutenberg-mcp"
      ]
    }
  }
}

配置

所有配置均通过环境变量完成。

变量必需说明
GUTENBERG_BASE_URL是你的 Gutenberg 镜像站的基础 URL(见上文“镜像站设置”)
GUTENBERG_TOOLS是要公开的工具列表,以逗号分隔(见下文)
GUTENBERG_BOOK_ID否用作默认值的 Project Gutenberg 图书 ID
GUTENBERG_CHUNK_SIZE否段落大小(字节,默认值:4096)
GUTENBERG_LANGUAGE否search_books 的默认 ISO 639-1 语言代码(默认值:en)
工具
工具说明
search_books按书名或作者搜索图书
get_book_metadata获取图书元数据(书名、作者、格式)
fetch_book_text下载图书的完整纯文本
list_passages列出图书的固定大小段落键
get_passage按键获取指定段落

设置 GUTENBERG_BOOK_ID 后,需要图书 ID 的工具会将其用作默认值。如果未设置,请在工具列表中加入 search_books,以便 Agent 先查找 ID。

运行

stdio
GUTENBERG_BASE_URL=http://localhost:8080 \
GUTENBERG_BOOK_ID=2680 \
GUTENBERG_TOOLS=get_book_metadata,list_passages,get_passage \
./project-gutenberg-mcp --transport stdio
HTTP
GUTENBERG_BASE_URL=http://localhost:8080 \
GUTENBERG_BOOK_ID=2680 \
GUTENBERG_TOOLS=get_book_metadata,list_passages,get_passage \
./project-gutenberg-mcp --transport http --addr :8081

Docker

拉取预构建镜像
# MCP server
docker pull roberthouse224/project-gutenberg-mcp:1.2.0

# Mirror
docker pull roberthouse224/gutenberg-mirror:1.2.0
在本地构建

两个 Dockerfile 均使用 Docker Hardened Images (DHI) 来增强安全性。构建需要通过 Docker Hub 身份验证:

docker login

然后进行构建:

# Build MCP server
docker build -t project-gutenberg-mcp .

# Build mirror
docker build -f mirror/Dockerfile -t gutenberg-mirror ./mirror
运行 MCP 服务
# HTTP
docker run -p 8081:8081 \
  -e GUTENBERG_BASE_URL=http://host.docker.internal:8080 \
  -e GUTENBERG_BOOK_ID=2680 \
  -e GUTENBERG_TOOLS=get_book_metadata,list_passages,get_passage \
  roberthouse224/project-gutenberg-mcp --transport http --addr :8081

# stdio
docker run -i --rm \
  -e GUTENBERG_BASE_URL=http://host.docker.internal:8080 \
  -e GUTENBERG_BOOK_ID=2680 \
  -e GUTENBERG_TOOLS=get_book_metadata,list_passages,get_passage \
  roberthouse224/project-gutenberg-mcp
运行镜像服务
# Create a named volume for cache persistence
docker volume create gutenberg-cache

# Run mirror (serves on http://localhost:8080)
docker run -d \
  -p 8080:8080 \
  -v gutenberg-cache:/data \
  --name gutenberg-mirror \
  roberthouse224/gutenberg-mirror:1.2.0

多架构构建

两个镜像均支持 linux/amd64 和 linux/arm64 架构。要构建并推送多架构镜像:

# Create a builder instance
docker buildx create --name multiarch --use

# Build and push MCP server
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t roberthouse224/project-gutenberg-mcp:1.2.0 \
  -t roberthouse224/project-gutenberg-mcp:latest \
  --push \
  .

# Build and push mirror
docker buildx build \
  --platform linux/amd64,linux/arm64 \
  -t roberthouse224/gutenberg-mirror:1.2.0 \
  -t roberthouse224/gutenberg-mirror:latest \
  --push \
  -f mirror/Dockerfile \
  ./mirror

MCP 客户端配置(stdio)

{
  "mcpServers": {
    "project-gutenberg-mcp": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "GUTENBERG_BASE_URL=http://host.docker.internal:8080",
        "-e", "GUTENBERG_BOOK_ID=2680",
        "-e", "GUTENBERG_TOOLS=get_book_metadata,list_passages,get_passage",
        "roberthouse224/project-gutenberg-mcp:1.2.0"
      ]
    }
  }
}

本地构建(非 Docker)

task build         # outputs to build/project-gutenberg-mcp
task build:mirror  # outputs to mirror/build/mirror
task test

图书 ID

一些实用的 ID:

图书ID
沉思录 — 马可·奥勒留2680
理想国 — 柏拉图1497
查拉图斯特拉如是说 — 尼采1998
白鲸 — 梅尔维尔2701
傲慢与偏见 — 奥斯汀1342

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。