关于 30book
30book 是一个非官方、只读的 MCP 服务,让 AI Agent 搜索伊朗 30book 书店的纸质书。它支持版本和价格比较、目录浏览与评论查询,不提供登录或购买功能。
主要功能
- 01按书名搜索并筛选作者和出版社
- 02比较不同版本、价格与折扣
- 03查看图书详情和库存状态
- 04浏览分类、作者与出版社
- 05阅读评论并查找相似图书
- 06查看畅销书、新书和优惠
适用场景
- 01寻找某本书价格最低的版本
- 02查询图书库存、ISBN 或出版社
- 03浏览译者或出版社的图书目录
- 04比较畅销书价格和折扣
MCP 相关
它在本地以 stdio MCP 服务运行,向 MCP 客户端提供 14 个只读工具。服务直接读取 30book.com 的目录信息,不支持下单。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx 30book-mcpSIBOOK_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+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
14收录的工具列表 · 更新于 6 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| page | integer | 否 | 页码,从 1 开始(每页 20 本书)。 |
| sort | any | 否 | 排序方式。不填则使用该页面自身的默认排序(畅销优先;作者页面按最新优先)。'cheapest' / 'expensive' 按标价排序。 |
| query | string | 是 | 标题词语,使用波斯语,例如 'شازده کوچولو'。 |
| extended | boolean | 否 | 逐词匹配,而非精确匹配标题短语(结果更多)。 |
| author_id | any | 否 | 仅限此作者(从 sb_find_person 或图书的 authors[].id 获取的 id)。 |
| publisher_id | any | 否 | 仅限此出版社(从 sb_find_publisher 或图书的 publisher.id 获取的 id)。 |
| translator_id | any | 否 | 仅限此译者(人员 id)。 |
| available_only | boolean | 否 | 仅限有库存的图书。 |
详细介绍
30book-mcp:面向 AI Agent 的 30book MCP 服务
让你的 AI Agent 搜索伊朗的 30book 书店(۳۰بوک)。
这是一个非官方、只读的 MCP 服务,适用于 30book——一家伊朗在线书店,藏有约 200,000 本纸质书:
可按书名搜索、比较不同版本和出版社,查看标价和折扣价(单位为托曼)、库存、ISBN、作者、译者、评论、畅销书和折扣信息,均可通过 Claude、Cursor 或 Copilot 获取。
面向 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。
相关服务
- Taaghche MCP 服务,提供伊朗电子书和有声书
- Fidibo MCP 服务,提供波斯语电子书和有声书
- Shopino MCP 服务,另一个伊朗网上商店
- Digikala MCP 服务,伊朗最大的网上商店
- iran-mcp:伊朗各类服务的 MCP 服务目录
免责声明
这是非官方项目,与 30book 无关联,也未获其认可。它读取网站的公开页面,这些页面可能随时更改。该服务为只读,不会登录,也不会更改网站上的任何内容。请合理控制请求频率。
作者
由 Sepehr Radmard(سپهر رادمرد)开发并维护。可通过 LinkedIn 联系,或在 GitHub 上关注 @sepehr071,了解更多面向伊朗网站的 MCP 服务;所有服务均列于 iran-mcp。如果这个项目为您节省了时间,欢迎给仓库点个星,帮助其他人发现它。
许可证
如果这个项目为您省去了几次点击,欢迎点个星,帮助其他人发现它。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
