关于 FATSEARCH
FATSEARCH 是面向 AI Agent 的 MCP 服务和命令行工具,可将网页、PDF、文档及 GitHub 搜索结果转为缓存的 Markdown。它先尝试普通 HTTP,并可调用已配置的服务商处理需渲染或受阻的页面,还支持按 ID 浏览页面章节。
主要功能
- 01将网页和文件转为简洁 Markdown
- 02缓存内容并提供章节 ID
- 03调用服务商处理渲染或受阻页面
- 04搜索网页和 GitHub
- 05记录抓取成本、耗时和 Token 数
适用场景
- 01让 Agent 读取 JavaScript 页面或 PDF
- 02只获取相关章节而非整页内容
- 03查看抓取成本和 Token 用量
- 04从 Agent 中搜索网页或 GitHub
MCP 相关
FATSEARCH 通过 stdio MCP 服务暴露 `fats(cmd)` 工具。MCP 客户端可使用与命令行相同的命令来抓取、搜索和查看缓存内容。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
通过你自己的服务商密钥,读取 Agent 内置抓取工具无法读取的页面(JS 页面、PDF),
并将页面以简洁的 Markdown 格式保存在磁盘上,可通过大纲和 ID 导航。
同一个问题 · 同一个答案 · 上下文减少 81×
这正是重点。
Agent 读取每个页面都要付出这样的代价
| Wikipedia · Rust · 模型输入价格为每 M 个 token $2(Claude Sonnet 5.5,2026-10-19) | 上下文中的 token 数 | 抓取 | 模型费用 |
|---|---|---|---|
| Firecrawl | 112,517 | 1 个 credit | $0.23 |
| Bright Data Unlocker | 103,625 | 1 个请求 | $0.21 |
| Oxylabs Web API | 102,609 | 1 个请求 | $0.21 |
| Tavily Extract | 97,504 | 0.2 个 credit | $0.20 |
| Jina Reader | 94,415 | 免费 | $0.19 |
| FATSEARCH | 918 | $0 | $0.002 |
Agent 会获得一份简短的大纲。需要深入了解时,它只读取一个章节,而不是整页。
菜单、Cookie 横幅、导航、页脚链接、跟踪脚本:统统移除。
价格、日期、数字:保留 (损失保护机制会逐一统计)。
提示
“免费”抓取在模型端的成本会高出约 100 倍。而且之后的每一轮对话中,它都会留在上下文里。
你的密钥永远不会进入聊天内容
fats setup <provider> 会在 127.0.0.1 上打开一次性密钥表单,并通过随机令牌保护,有效期为 30 分钟。
你可以在浏览器中粘贴密钥,确保它不会进入聊天内容、模型上下文或 Agent 日志。
表单会拒绝来自其他来源的 POST;密钥会进行实时验证,以 mode 0600 保存,并且只发送给对应的服务商。
$ fats setup decodo
= setup decodo · waiting for the key at http://127.0.0.1:59802/k/e0c8baba7a5b058947f4fdab97dabb05/decodo · 30 min · $0
tell the user (never ask for the key in chat):
1. open https://dashboard.decodo.com/web-data/playground (no account yet: https://dashboard.decodo.com/register)
2. Copy the API key shown on the Web Data playground. Do NOT paste it in this chat.
3. open http://127.0.0.1:59802/k/e0c8baba7a5b058947f4fdab97dabb05/decodo , paste the key, press Save
then: fats setup (when the user says done; end your turn, do not poll · checks it, $0)
link dead (30 min passed)? run fats setup decodo again and give the user the new line 3
fats setup 会显示仍在等待填写的表单(! form_waiting decodo · 23 min left · <its URL>),或已过期的表单(! form_expired decodo · the link the user got is dead → fats setup decodo · new link, same 3 steps)。
通过 SSH 连接时(设置了 SSH_CONNECTION 或 SSH_TTY),还会多显示一行,说明如何在终端中粘贴密钥。
## 应对难访问的页面
fats 会先尝试普通 HTTP 请求(免费)。如果页面是 JS 外壳、验证码或访问墙,
它就会启用你的服务商:优先选择最便宜的,采用对冲策略,并跟踪每次调用的成本。
$ fats https://www.nytimes.com/ dry:true
nytimes.com/ fetch plain → oxy (after a captcha) → bd ∥ oxyjs after 5s → new u1 · up to $0.0040
$ fats stats
u1 rust-lang.org · Rust Programming Language · plain 230ms $0.0000 · 1.2ktok
u2 en.wikipedia.org · Rust (programming language… · plain 558ms $0.0000 · 40.9ktok
fats stats 就是宣传依据:展示真实数据,而非空口声称。
38 个难访问的页面 社交 · 新闻 · 商店 · 旅行 · 分类信息 · 搜索 · 每个页面运行一次
| 在返回文本中找到答案的用时 | 1 s | 10 s | 20 s | 60 s |
|---|---|---|---|---|
| FATSEARCH 0.2.0 2026-10-21 | 12 | 19 | 19 | 35 /38 |
| Firecrawl 2026-10-16 | 0 | 22 | 24 | 24 |
| Tavily 2026-10-16 | 9 | 17 | 18 | 19 |
FATSEARCH 能读取更多难访问的页面;Firecrawl 和 Tavily 在成功读取的页面上速度更快(同一批页面,中位数:23.7 s vs 4.9 s、23.7 s vs 1.0 s)。各读取器在不同日期运行。方法和所有数据行 → · 上表对应:一个页面,六个读取器 →
在 Agent 中测试 FATSEARCH 0.1.3 · Claude Code 2.1.280,每项运行一次,2026-10-19
- 51 项任务,FATSEARCH MCP vs Firecrawl MCP:正确率 50/51 vs 51/51 · 每 1k 项任务费用 $15.06 vs $53.48 · 中位数 5.3 s vs 6.7 s · 用时最慢的 10% 为 43.8 s vs 21.5 s。详情 →
- Claude Code 的 WebFetch 在 npm、Medium 和 G2 上收到 403;FATSEARCH 则成功读取了这三个网站。详情 →
- 同一个 Wikipedia 页面,开源读取器:FATSEARCH 用 1,384 个 token 找到答案;mcp-server-fetch、Crawl4AI、mcp-searxng 和可自托管的 Firecrawl 读取整个页面则用了 75k–117k 个 token。详情 →
- 完整表格(包括失败项):docs/benchmarks.md
开始使用
| 1 · 安装 | 2 · 密钥 (可选) | 3 · 接入 |
|---|---|---|
brew install fatsearch/tap/fatsearch | fats setup | claude mcp add --scope user fats -- fats mcp |
或 curl -fsSL https://fatsearch.com/install.sh | sh · Windows:npm i -g fatsearch · cargo install --locked fatsearch · 所有宿主 →
说明
软件包名是
fatsearch;命令名是fats(类似于ripgrep→rg)。Homebrew、npm 和安装 脚本也会添加fatsearch作为第二个名称;cargo install只会添加fats。 无需账户。 不配置服务商密钥时,fats只能读取普通请求能获取的内容;网页搜索需要 Oxylabs 或 Bright Data 密钥。 配置任意一个密钥(Oxylabs、Bright Data 或 Decodo)后,它就能通过对应服务商渲染页面并解除访问限制。
## 设置
你在终端中: 运行 fats setup。这是一个菜单(↑↓ Enter):免费抓取和各个服务商及其状态,然后是设置(Agent 连接、缓存、统计、遥测)。选择一个服务商,粘贴其密钥(显示为 • 和字符数),fats 会先实时验证密钥,再保存。运行 fats setup oxy 可直接跳到某个服务商(也支持 bd、decodo、gh)。
你的 Agent 操作,或没有终端: Agent 运行 fats setup oxy(或 bd、decodo、gh)。它会显示服务商的控制台链接,以及一个在 127.0.0.1 上开放 30 分钟的一次性表单。Agent 会把 URL 发给你;你在浏览器中将密钥粘贴到表单里,而不是聊天中(查看输出内容)。然后 Agent 运行 fats setup 来验证密钥($0)。
密钥保存在密钥目录中的 auth.json(模式 0600)里,且只会发送给对应的服务商。auth.json 是唯一的密钥来源: fats 绝不会发送环境变量中的密钥,因此你保存的密钥就是每次调用使用的密钥(fats 会显示每个密钥的末 4 个字符:keys oxy …6XBR · bd none · decodo none · gh none · auth.json)。在没有浏览器的计算机上(CI、SSH),可以通过管道传入密钥:printf %s "$KEY" | fats setup oxy 会验证并保存密钥。已导出密钥的情况:运行一次 fats setup import-env,它会验证密钥,在尚未保存密钥时将其复制到密钥目录,且绝不会替换已保存的密钥。替换密钥时,旧文件会保留为 auth.json.bak(0600)。
| 服务商 | 密钥 | 页面,未运行 JS | 页面,已渲染 | 网络搜索 |
|---|---|---|---|---|
| 免费(普通 HTTP,使用你的 IP) | 无 | $0 | — | — |
| Oxylabs Web API | fats setup oxy(导入:OXYLABS_WEB_API_KEY) | $0.0010 | $0.0015 | $0.0010 |
| Bright Data Web Unlocker | fats setup bd(导入:BRIGHTDATA_API_KEY;zone BRIGHTDATA_UNLOCKER_ZONE) | — | $0.0015 | $0.0015 |
| Decodo Web Data API | fats setup decodo(导入:DECODO_AUTH_TOKEN) | $0.0010 | $0.0015 | — |
GitHub(fats gh) | fats setup gh 会复制 gh CLI 的令牌(导入:GH_TOKEN) | $0 | — | — |
每页标价,dry:true 和 fats stats 使用此价格。Oxylabs 和 Bright Data 的支出可通过 fats account 查看;Decodo 无法读取此密钥的用量,因此其 $ 为标价,绝不会与实际支出核对。
关闭某个服务商而不丢失其密钥:fats setup oxy off;恢复使用:fats setup oxy on。
免费抓取使用你自己的连接: 每页通过你的 IP 发起一个请求;每个站点每秒最多开始一次抓取。页面会等待轮到自己,而不是购买服务商调用。服务商使用自己的 IP,且没有速率限制。fats setup free off 会将所有页面都交给服务商,因此每个页面都会产生费用。
MCP
一个工具。一段字符串。同样的命令。
claude mcp add --scope user fats -- fats mcp # Claude Code
codex mcp add fats -- fats mcp # Codex
{"mcpServers": {"fats": {"command": "fats", "args": ["mcp"]}}} # Cursor, Desktop, …
该工具为 fats(cmd),其工具卡约占 60 个令牌。知道 fats u1#3 的 Agent 就知道如何使用整个工具。
MCP Registry:mcp-name: io.github.fatsearch/fats
命令
| 命令 | 作用 |
|---|---|
fats <url> | 抓取 → 清理 → 生成大纲,并缓存为 u1 |
fats u1#3 | 阅读第 3 节 |
fats u1 price | 筛选页面内容 |
fats u1 links · fats l4 | 列出编号链接 · 跟进一个链接 |
fats rust async runtime | 网络搜索 → 结果以 ID 显示 |
fats gh rust markdown | 按星标数搜索 GitHub 仓库 |
fats ./report.pdf | 本地文件,每页一个章节 |
fats stats | 每次抓取的服务商、毫秒数、费用和令牌数 |
… dry:true | 查看将要执行的操作及费用 |
选项 limit:20 country:de js:true wait:30 fresh:true · 一屏查看所有内容:fats help · 了解如何高效使用:fats guide
## 面向 Agent
Agent 技能在此仓库中进行版本管理(skills/fatsearch/SKILL.md):介绍如何读取页面而不占满上下文,以及缺少 fats 时如何安装、连接并验证。
npx skills add fatsearch/fatsearch # Agent Skills standard: Claude Code, Codex, Cursor, Copilot, Gemini CLI, …
gh skill install fatsearch/fatsearch # the same through GitHub CLI ≥ 2.90
没有这两种 CLI 的 Agent 会读取固定到某个版本的文档:
https://raw.githubusercontent.com/fatsearch/fatsearch/v0.2.4/skills/fatsearch/SKILL.md。
这样,Agent 看到的是可供审查的版本化文本,且它运行的所有内容都不会来自网站。
供 Agent 阅读的纯 Markdown 文档:fatsearch.com/llms.txt。
遥测
FATSEARCH 会分享匿名使用统计数据,以便我们修复问题。它绝不会分享你阅读或搜索的内容。
- 绝不发送: URL、搜索内容、页面文本、文件、API 密钥、你的 IP 地址或任何 ID。
- 会发送: fatsearch 版本、操作系统、使用的程序包(npm、Homebrew、cargo……)、执行的命令、错误、 哪些提供商正常工作、我们代码中的崩溃。
使用 fats telemetry show 查看确切的发送内容。你可以在 fats setup → Settings → Telemetry 中关闭遥测,
也可以使用 fats setup telemetry off、FATS_TELEMETRY=0 或 DO_NOT_TRACK=1 关闭。详情:docs/telemetry.md
17–21 MB 二进制文件 4 ms 启动时间 5 ms 缓存读取时间 $0 普通页面 $0.001–0.0065 棘手页面(三个密钥)
17 MB(macOS arm64)至 21 MB(Linux x86_64)· 原生启动耗时 4 ms;npm 垫片会增加 Node 的约 40 ms
无守护进程 · 无浏览器 · 匿名使用统计(关闭方式:fats setup telemetry off · FATS_TELEMETRY=0 · DO_NOT_TRACK=1)· 查看每次运行 →
目前还不能做什么
match:near/match:topic:需要本地模型- 扫描版 PDF 的 OCR →
! no_text - DOCX / XLSX →
! not_in_v1 zip - 操作系统密钥链:密钥保存在
auth.json中(权限模式 0600) - 远程 MCP:仅支持 stdio
- 登录:需要登录才能访问的页面仍然需要登录才能访问
每项都会打印一行 !,说明缺少什么以及该怎么做。绝不静默处理。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
