使用说明
MCP Scraper (Yuanbao)
轻量级 MCP 服务,封装了两类与“腾讯元宝”相关的爬取/抽取工具:
- extract_yuanbao_dialogues:输入分享页 URL,提取单页问答对(含 JSON/JSONL/TXT 输出)
- crawl_full_data:基于浏览器 “Copy as fetch (Node.js)” 文本或 fetch.txt,按分页全量抓取并输出标准问答结构
本项目使用 FastMCP 2.0,默认使用 streamable-http 协议对外提供工具调用。
运行服务
python main.py # 使用默认 0.0.0.0:8000
# 或
python main.py --host 0.0.0.0 --port 8000
环境变量也可配置:MCP_HOST、MCP_PORT。
可用工具与入参
- extract_yuanbao_dialogues(分享页单页提取)
- 入参:
url:分享页链接(例如 https://yb.tencent.com/s/xxxx)force_url:是否强制 URL 抓取(忽略本地文件)extract_from_file:从本地extracted_dialogues.json或next_data.json解析
- 说明:适用于单页问答抽取;不处理 fetch 文本。若需批量抓取,请使用
crawl_full_data。
- crawl_full_data(基于 fetch 的全量爬取)
- 四种输入方式(按优先级覆盖):
- 直接传入完整的 fetch 字符串作为工具参数(最简单)
- 显式提供
url、headers、body - 直接粘贴
fetch_text(浏览器 “Copy as fetch (Node.js)” 完整文本) - 提供
fetch_file(如fetch.txt路径,文件中包含上述 fetch 文本)
- 可选控制:
delay(分页间隔秒),max_retries,timeout - 输出:标准
question/think/answer列表,同时提供json_output与txt_output
获取模板:
# 通过 MCP 客户端调用 get_full_crawl_template 获取示例结构
简单用法示例(伪代码)
# 获取全量爬取模板
tpl = await get_full_crawl_template()
# 粘贴浏览器复制的 fetch 文本
tpl["fetch_text"] = "fetch(\"https://yuanbao.tencent.com/api/user/agent/conversation/v1/detail\", { ... })"
# 执行全量抓取
res = await crawl_full_data(tpl)
if res.success:
print(res.total_conversations, res.total_messages)
print(res.json_output)
else:
print("失败:", res.message)
注意
- 全量抓取需要有效的认证信息(例如 cookie),否则会返回认证失败的错误信息
- 请遵守平台使用协议及当地法律法规,谨慎使用