关于 TinyFish
TinyFish 为 AI Agent 提供网页搜索、页面提取、浏览器自动化和监控;此项目是连接其托管服务的本地代理,将工具和响应转发给 MCP 客户端。
主要功能
- 01网页搜索与页面抓取
- 02提取页面内容
- 03浏览器自动化工作流
- 04远程 Chrome 会话
- 05浏览器配置与监控
适用场景
- 01搜索网页信息
- 02提取网页结构化数据
- 03自动执行多步骤浏览器任务
- 04持续监控页面或主题
MCP 相关
通过本地 Streamable HTTP 端点转发 TinyFish 托管 MCP 服务的工具调用、资源、错误和流式进度。托管服务提供搜索、抓取、浏览器自动化、会话、配置和监控工具。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://agent.tinyfish.ai/mcpclaude mcp add --transport http tinyfish-db1a5b https://agent.tinyfish.ai/mcp{"mcpServers":{"tinyfish-db1a5b":{"type":"http","url":"https://agent.tinyfish.ai/mcp"}}}在 Cursor 中打开{"servers":{"tinyfish-db1a5b":{"type":"http","url":"https://agent.tinyfish.ai/mcp"}}}在 VS Code 中打开{"mcpServers":{"tinyfish-db1a5b":{"type":"http","url":"https://agent.tinyfish.ai/mcp"}}}{"mcpServers":{"tinyfish-db1a5b":{"serverUrl":"https://agent.tinyfish.ai/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
32| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | 搜索查询 |
| purpose | string | 否 | 执行此搜索的原因——结果将用于实现的目标或任务。用于根据你的意图更好地排列结果。 |
| location | string | 否 | 用于地理定向结果的国家/地区代码 |
| language | string | 否 | 结果语言的语言代码 |
| include_domains | string | 否 | 用于限定结果范围的域名逗号分隔列表 |
| exclude_domains | string | 否 | 要从结果中排除的域名逗号分隔列表 |
| domain_type | enum | 否 | 要执行的搜索类型:"web" 表示标准结果,"news" 表示新闻文章,"research_paper" 表示学术论文。默认为 "web"。web | news | research_paper |
| after_date | string | 否 | 返回此日期之后的结果(YYYY-MM-DD) |
| before_date | string | 否 | 返回此日期之前的结果(YYYY-MM-DD) |
| recency_minutes | integer | 否 | 返回过去 N 分钟内的结果(1 至 5,256,000)。 |
| pub_year_min | integer | 否 | 返回在此年份或之后发表的研究论文(0-9999,含边界)。仅支持 domain_type=research_paper。 |
| pub_year_max | integer | 否 | 返回在此年份或之前发表的研究论文(0-9999,含边界)。仅支持 domain_type=research_paper。 |
| page | integer | 否 | 分页页码,从 0 开始(最大 10) |
| include_thumbnail | enum | 否 | 为 "true" 时,每个结果都会在可用时包含 thumbnail_url。默认为 false。true | false |
| fetch | string | 否 | JSON 编码的抓取配置对象。 |
详细介绍
@tiny-fish/mcp
TinyFish MCP 服务:为 Claude、Cursor、VS Code 和任何 MCP 客户端提供网页搜索、页面抓取与提取、浏览器自动化和页面监控。Search 和 Fetch 免费。
在浏览器或桌面应用中使用 Claude 或 ChatGPT? 无需进行设置,只需一键添加适用于 Claude 或 ChatGPT 的官方 TinyFish 插件。它集成了这些工具,以及现成的技能和安全规则。
此软件包是一个透明的反向代理,会在本地公开一个 Streamable-HTTP MCP 端点 http://127.0.0.1:3711/mcp,并将每个请求转发到托管的 TinyFish MCP 服务 https://agent.tinyfish.ai/mcp。
此代理不定义任何自己的工具或架构。tools/list、tools/call、resources/*、错误,以及 run_web_automation SSE 进度流都来自托管服务:流式(SSE)响应会逐字节转发,非流式 JSON 响应则会以内容相同的方式转发(解析并重新序列化,与上游内容深度相等)。托管服务返回的内容,就是客户端看到的内容。
工具
托管服务提供 28 种工具。你可以使用它们搜索网页、抓取并提取页面内容、自动化操作浏览器、运行远程 Chrome 会话(CDP)、保留已登录状态的 Browser Context Profiles,以及安排页面和主题监控。
| 类别 | 工具 |
|---|---|
| 搜索与抓取 | search、fetch_content |
| 网页自动化 | run_web_automation、run_web_automation_async、get_run、list_runs、cancel_run、batch_status、batch_cancel |
| 浏览器会话 | create_browser_session、list_browser_sessions、close_browser_session |
| Browser Context Profiles | create_profile、list_profiles、start_profile_setup_session、save_profile_setup_session、cancel_profile_setup_session |
| 监控 | create_monitor、get_monitor、list_monitors、run_monitor、pause_monitor、resume_monitor、cancel_monitor |
| 账户与用量 | get_wallet、get_search_usage、list_fetch_usage、guide_next_step |
- 工具参考:逐字列出每种工具及其参数
- 示例:常见工作流和提示词
- MCP 集成指南:客户端设置、身份验证、频率限制和故障排查
- 完整文档:docs.tinyfish.ai
优先使用托管服务
如果你的 MCP 客户端支持远程 Streamable-HTTP 服务(Claude Code、 Claude Desktop connectors、Cursor、VS Code 和大多数现代客户端都支持), 请直接连接到托管服务——无需安装,也无需本地进程:
https://agent.tinyfish.ai/mcp
在以下情况下使用此软件包:
- 你的客户端只能连接到本地 MCP 服务,或
- 你希望使用环境中的 TinyFish API 密钥进行身份验证,而不是使用托管服务的 OAuth 流程(适用于 CI、无头机器和脚本)。
安装
npm install -g @tiny-fish/mcp
或者无需安装即可运行:
npx @tiny-fish/mcp
需要 Node.js >= 22。(这是有意区别于 TinyFish CLI 的 >=24 要求——这里没有任何内容需要 Node 24。)
API 密钥
服务启动时会从环境中读取 TINYFISH_API_KEY,并在每次调用时将其作为 X-API-Key 发送到上游。请前往
https://agent.tinyfish.ai 获取密钥。
export TINYFISH_API_KEY=tf_...
tinyfish-mcp
成功后,它会向 stderr 输出一行内容:
tinyfish-mcp [info] listening on http://127.0.0.1:3711 — upstream https://agent.tinyfish.ai/mcp — v0.1.0
密钥绝不会被记录,也绝不会回传给客户端。
客户端配置
启动 tinyfish-mcp(例如在终端中,或使用你选择的进程管理器),然后将客户端指向 http://127.0.0.1:3711/mcp。
Claude Code
claude mcp add --transport http tinyfish http://127.0.0.1:3711/mcp
Claude Desktop
前往 Settings → Connectors → Add custom connector,并使用 URL
http://127.0.0.1:3711/mcp。对于支持基于 URL 的服务的
claude_desktop_config.json 版本:
{
"mcpServers": {
"tinyfish": {
"url": "http://127.0.0.1:3711/mcp"
}
}
}
注意:Claude Desktop 也可以直接将托管的 https://agent.tinyfish.ai/mcp
用作自定义连接器;除非需要使用 API 密钥进行身份验证,否则建议优先使用此方式。
Cursor
~/.cursor/mcp.json(或项目中的 .cursor/mcp.json):
{
"mcpServers": {
"tinyfish": {
"url": "http://127.0.0.1:3711/mcp"
}
}
}
VS Code
.vscode/mcp.json:
{
"servers": {
"tinyfish": {
"type": "http",
"url": "http://127.0.0.1:3711/mcp"
}
}
}
其他客户端
配置一个 Streamable-HTTP(远程/URL)MCP 服务:
{ "url": "http://127.0.0.1:3711/mcp" }
端点仅接受 POST /mcp(与托管服务一致;该服务没有 GET SSE 通道,也不支持 DELETE 会话拆除)。GET /healthz 会返回
200 ok,供调试使用。
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
TINYFISH_API_KEY | (必填) | TinyFish API 密钥,会作为 X-API-Key 发送给上游。未设置此密钥时,服务会拒绝启动。 |
PORT | 3711 | 本地监听端口(整数,范围为 1-65535)。不会自动递增:如果端口已被占用,服务会报错并退出。 |
TINYFISH_UPSTREAM_URL | https://agent.tinyfish.ai/mcp | 上游 MCP URL。必须使用 https:;仅在 127.0.0.1/localhost 上允许使用 http:(用于本地测试)。 |
代理还会在每次上游调用时发送归属标头:
X-TF-Request-Origin: tinyfish-mcp、X-TF-Client-Name: tinyfish-mcp 和
X-TF-Client-Version: <package version>。
安全与信任模型
这是一个仅限环回连接的服务,并设有明确记录的信任边界:
- 始终绑定环回地址。 服务绑定到
127.0.0.1字面地址,且不可配置——它绝不会监听0.0.0.0或局域网接口。 - 来源验证。 对于带有
Origin标头的请求,除非来源为http(s)://127.0.0.1或http(s)://localhost(任意端口),否则会以403拒绝。这可阻止 MCP 规范针对本地 HTTP 服务所指出的 DNS 重绑定攻击。不带Origin标头的请求(curl、MCP SDK、检查器)则允许通过。 - 密钥由服务持有。 进程会从其环境中读取
TINYFISH_API_KEY; 客户端在本地链路上无需发送凭据。这是最简单的模式,但这意味着任何能够访问127.0.0.1:<port>的本地进程都可以使用你的密钥并驱动自动化操作(这可能会消耗 TinyFish 额度)。环回绑定和 Origin 检查是缓解措施;请将该端口视为可信机器上的本地信任边界。
故障排除
“端口 3711 已被占用”——另一个进程正在占用该端口。请停止该进程,或将 PORT 设为可用端口,并相应更新客户端配置。
HTTP 502,JSON-RPC 错误 -32001(“上游拒绝了请求……
请检查 TINYFISH_API_KEY 是否设置为有效的 TinyFish API 密钥”)——托管服务拒绝了你的密钥。请确认 TINYFISH_API_KEY 已设置在 tinyfish-mcp 进程的环境中(而不仅仅是你的 shell),并确认该密钥在 https://agent.tinyfish.ai 上有效。错误的 data
字段包含上游状态和(截断后的)响应正文,可用于诊断。
HTTP 502,JSON-RPC 错误 -32000(“无法连接……”)——无法访问上游服务:请检查网络、代理和 VPN;托管服务也可能暂时不可用。如果你覆盖了 TINYFISH_UPSTREAM_URL,请检查该值。如果流式 run_web_automation 调用在流传输过程中失败,你会在最终 SSE 帧中收到相同的 -32000,并附带“运行可能仍在执行”的警告,以及已知时的 runId——请检查运行状态,而不要盲目重试。
批量请求无法使用——MCP 不允许 JSON-RPC 批处理,托管服务也不支持批量数组。代理会原样转发批量请求,上游会返回自身的错误;请每个请求发送一条 JSON-RPC 消息。
Claude/其他客户端无法连接——请确保 tinyfish-mcp 确实正在运行(它是独立服务;客户端不会启动它),并确认
GET http://127.0.0.1:3711/healthz 返回 ok。
开发
npm ci
npm run build # tsc → dist/, marks dist/index.js executable
npm test # unit tests (offline, mock upstream)
npm run test:watch # unit tests in watch mode
npm run lint # eslint over src/ tests/
npm run format # prettier
npm run type-check # tsc --noEmit over the whole tree
布局:src/core/ 是与传输方式无关的代理核心(上游客户端、会话桥接、SSE 中继、错误整形);src/http/ 是轻量级 HTTP 适配器(路由、Origin 检查);tests/ 包含单元测试套件,以及 tests/helpers/mock-upstream.ts,这是托管端点的模拟实现,单元测试完全离线运行。
集成测试会调用真实的托管上游服务,并且受条件限制:如果没有 TINYFISH_API_KEY,测试会跳过并打印提示。
TINYFISH_API_KEY=... npm run test:integration
设置 TINYFISH_UPSTREAM_URL,即可让测试指向沙盒部署,而非生产环境。请注意,run_web_automation 集成测试会执行真实自动化任务并消耗额度。
维护
由 @Zechereh 维护。错误报告和功能请求:GitHub issues。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。