mcpField
3
30book

30book

本地服务
github.com游戏娱乐0今天更新

关于 30book

30book 是一个非官方、只读的 MCP 服务,让 AI Agent 搜索伊朗 30book 书店的纸质书。它支持版本和价格比较、目录浏览与评论查询,不提供登录或购买功能。

主要功能

  1. 01按书名搜索并筛选作者和出版社
  2. 02比较不同版本、价格与折扣
  3. 03查看图书详情和库存状态
  4. 04浏览分类、作者与出版社
  5. 05阅读评论并查找相似图书
  6. 06查看畅销书、新书和优惠

适用场景

  1. 01寻找某本书价格最低的版本
  2. 02查询图书库存、ISBN 或出版社
  3. 03浏览译者或出版社的图书目录
  4. 04比较畅销书价格和折扣

MCP 相关

它在本地以 stdio MCP 服务运行,向 MCP 客户端提供 14 个只读工具。服务直接读取 30book.com 的目录信息,不支持下单。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"sepehr071-30book": {
"command": "uvx",
"args": [
"30book-mcp"
],
"env": {
"SIBOOK_MCP_PROXY": "<SIBOOK_MCP_PROXY>"
}
}
}
}
启动命令uvx 30book-mcp
需要配置的环境变量
SIBOOK_MCP_PROXYOptional HTTP proxy URL for requests to 30book.com, or a comma-separated list used one at a time (next one after a block or connect error); system proxy settings are ignored.

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

安装包
pypi30book-mcp0.3.2

工具

14

收录的工具列表 · 更新于 6 天前

参数类型必填说明
pageinteger否页码,从 1 开始(每页 20 本书)。
sortany否排序方式。不填则使用该页面自身的默认排序(畅销优先;作者页面按最新优先)。'cheapest' / 'expensive' 按标价排序。
querystring是标题词语,使用波斯语,例如 'شازده کوچولو'。
extendedboolean否逐词匹配,而非精确匹配标题短语(结果更多)。
author_idany否仅限此作者(从 sb_find_person 或图书的 authors[].id 获取的 id)。
publisher_idany否仅限此出版社(从 sb_find_publisher 或图书的 publisher.id 获取的 id)。
translator_idany否仅限此译者(人员 id)。
available_onlyboolean否仅限有库存的图书。

详细介绍

30book-mcp:面向 AI Agent 的 30book MCP 服务

让你的 AI Agent 搜索伊朗的 30book 书店(۳۰بوک)。
这是一个非官方、只读的 MCP 服务,适用于 30book——一家伊朗在线书店,藏有约 200,000 本纸质书: 可按书名搜索、比较不同版本和出版社,查看标价和折扣价(单位为托曼)、库存、ISBN、作者、译者、评论、畅销书和折扣信息,均可通过 Claude、Cursor 或 Copilot 获取。

PyPI Python CI MCP Registry License: MIT 在 VS Code 中安装

面向 AI Agent · 原因 · 功能 · 快速开始 · 工具 · 工作原理 · 须知 · 常见问题 · 配置 · فارسی · 开发 · 相关服务 · 免责声明 · 许可证


面向 AI Agent

  • **简介:**适用于 30book(30book.com)的非官方 MCP 服务,这是一家伊朗在线书店。搜索词使用波斯语(书名、人名)效果最佳;价格单位为托曼。
  • 安装:uvx 30book-mcp 或 claude mcp add 30book -- uvx 30book-mcp。传输方式:stdio。需要 uv(Python 3.10+),也可运行 pip install 30book-mcp。
  • **身份验证:**无需身份验证、API 密钥或账户。可选设置 SIBOOK_MCP_PROXY(用于访问 30book.com 的 HTTP 代理 URL,或以逗号分隔的 URL 列表)。
  • **访问权限:**只读。它不会登录,也没有购物车、结账、愿望清单或撰写评论的工具,因此调用任何工具前都无需确认。
  • **工具:**共 14 个,名称均以 sb_ 开头。可从 sb_search、sb_book、sb_bestsellers、sb_deals、sb_browse 开始。 典型调用顺序:sb_search -> sb_book -> sb_similar 或 sb_reviews;查询某位人士或出版社时,使用 sb_find_person / sb_find_publisher -> sb_author / sb_publisher。
  • **单位:**价格单位为托曼(price 为标价,final_price 为应付价格,discount_pct 为整数)。库存仅显示有或无,不显示数量。每页约有 20 本书(奖项页面约有 22 本)。
  • **适用场景:**比较 30book 上伊朗及外国纸质书的版本、出版社、价格、库存或评分。
  • **不适用场景:**用户想购买或下单(无购物车或结账功能)、需要运费(结账时才会报价)、想要电子书或有声书,或要查询其他书店时。
  • 机器可读信息:server.json 和 iran-mcp 目录(TOOLS.md、servers.json、llms.txt)。

原因

30book 没有公开 API,其列表页面通过实时 Blazor Server 会话生成,因此普通爬虫只能获取空页面。此服务使用该协议(SignalR 长轮询,无需浏览器)并解析图书页面,让 Agent 只需几次调用即可回答“精装版《小王子》最便宜的是哪个版本”“这位译者的所有作品中,价格低于 300,000 托曼的有哪些”或“历史类畅销书有哪些”等问题。

功能

  • 按书名搜索(精确短语或逐词匹配),并可按排序、库存、出版社、作者和译者筛选
  • 比较版本和出版社:比较多家出版社出版的同名书籍,以及标价与实付价格
  • 图书详情:价格、折扣、库存、作者、译者、出版社、页数、封面、开本、ISBN、语言、版次(印次)、年份(波斯历)、重量、分类、评分、标签、简介
  • 浏览分类、小说题材、各国文学、文学奖项列表和标签
  • 出版社和人物:查看某家出版社的图书目录、某位作者或译者的全部作品,以及按姓名查询 ID
  • 读者评价:查看带星级的书评和评分摘要,以及相似图书
  • 热门和低价图书:全站畅销书、最新图书、折扣力度最大的畅销书
  • 专为只读设计:无需登录,无购物车,不下订单

示例提示词:

  • “30book 上硬皮封面的《小王子》(شازده کوچولو)哪个版本最便宜?”
  • “列出这位译者价格低于 300,000 Toman 的图书,并显示评分。”
  • “现在最畅销的历史类图书有哪些?哪本折扣最大?”
  • ارزان‌ترین چاپ رمان «صد سال تنهایی» در ۳۰بوک کدام است؟
  • پرفروش‌ترین کتاب‌های روانشناسی را با قیمت و تخفیف نشان بده.
  • کتاب‌های این ناشر را از ارزان به گران مرتب کن.

快速开始

你需要安装 uv。无需 API 密钥或账号。

Claude Code
claude mcp add 30book -- uvx 30book-mcp
Claude Desktop

设置 → 开发者 → 编辑配置,然后添加:

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

将上方的 Claude Desktop 配置块添加到 ~/.cursor/mcp.json(或项目中的 .cursor/mcp.json)。

VS Code (Copilot agent mode)

点击上方的 Install in VS Code,或添加到 .vscode/mcp.json:

{
  "servers": {
    "30book": { "type": "stdio", "command": "uvx", "args": ["30book-mcp"] }
  }
}
Codex CLI
codex mcp add 30book -- uvx 30book-mcp

或者添加到 ~/.codex/config.toml:

[mcp_servers.30book]
command = "uvx"
args = ["30book-mcp"]
Gemini CLI

添加到 ~/.gemini/settings.json:

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

将 Claude Desktop 配置块添加到 ~/.codeium/windsurf/mcp_config.json。

其他客户端

这是一个标准的 stdio MCP 服务:运行 uvx 30book-mcp,或执行 pip install 30book-mcp 后运行 30book-mcp。

使用代理时,设置 SIBOOK_MCP_PROXY=http://host:port(有意忽略系统代理变量)。

工具

全部 14 个工具均为只读,名称前缀为 sb_。价格单位为 Toman。请在工具之间传递书籍、出版社和人物的 ID。

查找书籍(8)
工具功能
sb_search按书名搜索(精确短语或逐词匹配),支持排序、是否有库存、出版社、作者和译者筛选;每页 20 本
sb_browse按类别(分区、主题、话题)、小说类型、国家文学、文学奖或标签浏览书籍
sb_publisher查看某家出版社的书目及简短介绍
sb_author查看某位作者或译者的全部作品
sb_find_publisher将出版社名称转换为 ID
sb_find_person将作者/译者姓名转换为 ID
sb_categories类别分区及其主题(供 sb_browse 使用的代码)
sb_collections类型、国家文学、奖项列表和当前标签
单本书籍(3)
工具功能
sb_book价格、最终价格、折扣百分比、库存、作者、译者、出版社、页数、封面、尺寸、ISBN、语言、版次(印刷次数)、年份(Shamsi)、重量、类别、评分、标签、简介
sb_similar相似书籍、该作者的其他作品、该译者的其他作品
sb_reviews读者评论和星级评分,以及评分摘要
热门和低价书籍(3)
工具功能
sb_bestsellers全站畅销书
sb_new_releases最新书籍
sb_deals畅销书,可按折扣从高到低排序

所有工具均标注为 readOnlyHint: true,并返回精简的 JSON。

工作原理

  AI agent  (Claude, Cursor, Copilot, ...)
      │
      │  MCP over stdio
      ▼
  30book-mcp  (runs on your machine)
      │
      │  HTTPS (Chrome TLS/HTTP2 fingerprint) + SignalR long polling
      └──────▶  30book.com   book pages, Blazor-drawn list pages
  • 书籍页面、主页和着陆页均为纯服务端渲染的 HTML,并直接解析。
  • 搜索、类别、出版社、作者、类型和标签页面会在加载后通过 Blazor Server 电路生成。服务端通过 SignalR 长轮询建立连接,将二进制渲染批次应用到小型 DOM 中,然后读取书籍卡片。分页、排序和筛选均通过 URL 查询参数实现,因此不会模拟点击;只有出版社和作者索引页面上的名称输入框会触发事件。
  • 程序运行在你的计算机上,并直接调用 30book;中间没有托管服务。

了解事项

  • 价格单位为 Toman。 HTML 中的价格单位是 Toman;书籍页面上的 JSON-LD 使用 Rial(乘以 10),且仅用于已售罄的书籍。
  • price 是标价,final_price 是实际支付价格,discount_pct 为计算所得。in_stock: false 表示已售罄(显示的价格可能是最后一次记录的价格)。
  • 库存状态只有有/无,绝不显示数量。
  • **速度:**列表页面需要 2 到 5 秒(每个列表都会建立一个 Blazor 会话),书籍页面约需 1 秒。书籍页面会缓存 5 分钟,因此依次查询书籍、相似书籍和评论只需获取一次数据。
  • **搜索依据名称片段进行。**网站存储的部分名称使用阿拉伯语字母 yeh/kaf,因此按人物或出版社查询时可能找不到;请尝试使用更短的词。
  • 类别:bts-N 分区页面仅为着陆页;主题和话题代码才可用于浏览列表(参见 sb_categories)。奖项页面每页约显示 22 本书,且忽略排序设置。
  • 没有价格范围筛选,也不提供结果总数;仅能获知最后一页的页码。
  • 网站上的特价商品大多是文具,因此 sb_deals 使用畅销书或按折扣排序的单个主题。
  • **不支持:**运费(登录后结账时显示)、电子书、有声书和购买。
  • **请求频率:**最多同时发送 2 个请求,且请求间会有短暂随机延迟;超时、429 和 5xx 错误最多重试两次。请控制自身的调用频率;网站的 robots.txt 禁止爬虫访问 */search。
  • 代理:SIBOOK_MCP_PROXY(参见配置)。

常见问题

有没有适用于 AI Agent 的 30book API 或 MCP 服务?

30book 没有公开 API。30book-mcp 是一个非官方 MCP 服务,提供 14 个只读工具,用于读取网站页面,并将内容提供给任何 MCP 客户端,让 Agent 可以搜索书籍并比较价格。

如何在 Claude、Cursor 或 Copilot 中使用 30book?

运行 claude mcp add 30book -- uvx 30book-mcp,或者使用 快速开始 中适用于 Claude Desktop、Cursor、VS Code、Codex CLI、Gemini CLI 或 Windsurf 的对应配置,然后用波斯语或英语直接提问。

它能帮我买书吗?

不能,这是有意为之。它绝不会登录,也不会调用购物车、结账、愿望清单或评论接口。Agent 会帮你找到最合适的版本;你可以在网站上下单。

为什么有时搜索结果为空?

网站有些名称使用阿拉伯语的 yeh / kaf 字母存储。试试更短的词,或使用 sb_search 的 extended=true 选项。

我需要伊朗 IP 吗?它免费吗?

它免费使用,无需密钥。它会直接访问 30book.com;如果你的网络无法连接该主机,请将 SIBOOK_MCP_PROXY 设为 HTTP 代理。系统代理变量会被有意忽略。

如果网站显示机器人验证页面怎么办?

请求使用 Chrome TLS/HTTP2 指纹。如果网站仍然返回机器人验证页面,请安装可选的浏览器附加组件(pip install "30book-mcp[browser]",然后运行 patchright install chromium)以一次性通过验证。

它能找到电子书或有声书吗?

不能,30book 销售纸质书(以及部分文具)。电子书和有声书请查看 taaghche-mcp 和 fidibo-mcp。

Claude Desktop 提示 uvx 未找到

将 uvx 的完整路径(Windows 上使用 where uvx,macOS/Linux 上使用 which uvx)设为 command。

如何调试 Agent 能看到的内容?
npx @modelcontextprotocol/inspector uvx 30book-mcp

配置

变量默认值含义
SIBOOK_MCP_PROXY未设置用于访问 30book.com 的可选 HTTP 代理 URL,或以逗号分隔的代理列表(依次使用;遇到屏蔽或连接错误后尝试下一个)。系统代理设置会被忽略

波斯语:30بوک 图书 MCP 服务

30book-mcp 是一个非官方、只读的 30بوک(30book.com)MCP 服务。30بوک 是伊朗的网上书店,拥有约 20 万种纸质书。它让您的 AI 助手(Claude、Cursor、Copilot 等)可以搜索图书、比较不同版本和出版社,并查看价格和折扣。

功能

  • 按书名搜索图书,并可按出版社、作者、译者和库存筛选。
  • 比较不同版本和出版社的价格(托曼)、折后价和折扣百分比。
  • 图书信息:库存、ISBN、页数、装帧类型、开本、印次、出版年份、作者和译者。
  • 浏览主题:分类、类型、各国文学、文学奖项和标签。
  • 读者评论及评分、相似图书、畅销书、新书和折扣信息。

注意事项

  • 只读:不会登录账号、创建购物车或提交订单。
  • 所有价格均以托曼计。库存仅显示“有货”或“无货”,不显示数量。
  • 网站不会公开配送费用,费用会在提交订单时计算。
  • 无需 API 密钥或用户账号。使用波斯语关键词搜索效果更好。

安装(请先安装 uv)。在 Claude Code 中:

claude mcp add 30book -- uvx 30book-mcp

在 Claude Desktop、Cursor 和其他应用中,使用 Quick start 部分中的相同配置。

示例问题

  • “《小王子》最便宜的精装版是哪一种?”
  • “30بوک 最畅销的图书有哪些?其中哪些折扣最大?”
  • “列出这位译者翻译的、价格低于 30 万托曼的图书。”

**搜索词:**购买图书、图书价格、图书价格比较、网上书店、30بوک、سی‌بوک、图书折扣、最畅销图书、出版社、译者、ISBN、波斯语 MCP 服务。

开发

git clone https://github.com/sepehr071/30book-mcp && cd 30book-mcp
uv sync
uv run ruff check . && uv run ruff format --check .
uv run python -m pytest -q            # offline, recorded pages
uv run python -m pytest -m live -q    # real site, one test per tool

工具位于 src/sibook_mcp/catalog.py 和 product.py 中(Python 包名为 sibook_mcp,因为模块名不能以数字开头);每个工具都是带类型标注的异步函数,并附有说明何时使用该工具的文档字符串。测试会检查本 README 中的工具表是否与服务一致。欢迎提交问题和 PR。

发布:更新 pyproject.toml 和 server.json 中的版本,然后推送一个 v* 标签。GitHub Actions 会运行测试、发布到 PyPI 和 MCP Registry,并创建 GitHub Release。

相关服务

免责声明

这是非官方项目,与 30book 无关联,也未获其认可。它读取网站的公开页面,这些页面可能随时更改。该服务为只读,不会登录,也不会更改网站上的任何内容。请合理控制请求频率。

作者

Sepehr Radmard:为伊朗互联网打造的开源 MCP 服务。LinkedIn:linkedin.com/in/sepehr-radmard

由 Sepehr Radmard(سپهر رادمرد)开发并维护。可通过 LinkedIn 联系,或在 GitHub 上关注 @sepehr071,了解更多面向伊朗网站的 MCP 服务;所有服务均列于 iran-mcp。如果这个项目为您节省了时间,欢迎给仓库点个星,帮助其他人发现它。

许可证

MIT

如果这个项目为您省去了几次点击,欢迎点个星,帮助其他人发现它。

评论

支持 Markdown

第一次接触 MCP?

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

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