主要收获:

  • Pi Agent 是一个故意简化的基于终端的编码代理。 它配备了四个工具(readwriteeditbash),其他功能通过可选扩展添加,从而保持上下文窗口小,但这意味着不内置网络访问。
  • pi-mcp-adapter 通过一个约 200 个令牌的代理工具将 Pi 连接到任何 MCP 服务器。 服务器默认是懒惰的——只有在代理调用其工具时它们才启动——因此连接多个 MCP 服务器不会超过上下文预算。
  • Scrapeless MCP 服务器通过标准输入输出和可流式传输的 HTTP 端点 https://api.scrapeless.com/mcp 提供 21 个工具。 覆盖范围包括 google_searchgoogle_trends、完整的 16 个工具 browser_*(一个拥有超过 195 个国家的住宅代理的云托管反检测浏览器)和三个无状态抓取工具(scrape_htmlscrape_markdownscrape_screenshot)。
  • 一个 .mcp.json 文件将 Pi 连接到 Scrapeless。 适配器读取 Claude Desktop、Cursor 和其他 MCP 客户端已经使用的标准 MCP 配置格式,因此相同的 JSON 代码片段可以放入它们中的任何一个。
  • 端到端模式:提示 → Pi → pi-mcp-adapter → scrapeless-mcp-server → 云浏览器 → 排名结果或提取的 Markdown → 针对实时数据生成的代码。 Pi 不再仅从训练知识生成,而是开始以刚抓取的页面为基础生成输出。
  • 免费开始。 新的 Scrapeless 账户包括免费的抓取浏览器运行时——请在 app.scrapeless.com 注册。

介绍:一个带有实时网络工具的简约编码代理

大多数终端编码代理配备了您可能从未使用过的数十个功能。Pi Agent 采取相反的态度:四个工具,完全透明,其他功能按需添加。这样可以使代理速度快、上下文窗口成本低,但这也意味着 Pi 无法自行获取库的最新文档、阅读上周发布的发布页面或从公共网页提取实时数据。

解决方案是将 Pi 连接到一个暴露网络工具的模型上下文协议 (MCP) 服务器。scrapeless-mcp-server 包正是这样做的——由 Scrapeless 抓取浏览器 支持,这是一个通过超过 195 个国家的住宅代理传出的云托管反检测浏览器。

这篇文章将通过 pi-mcp-adapter(Pi 的社区 MCP 扩展)和一个 .mcp.json 文件指导如何将它们连接在一起。Pi 连接到的端点与 Claude Desktop、Cursor 和其他 MCP 客户端使用的相同;相同的 JSON 代码片段可以在它们之间共享。


您可以用它做什么

  • 在实时文档中生成代码。 让 Pi 在生成示例之前抓取库当前的 README——不再使用训练时模型知识的过时 API。
  • 一次性搜索和抓取。 Pi 调用 google_search 对候选页面进行排名,然后使用 scrape_markdown 抓取最相关的页面作为干净的 Markdown。
  • 通过终端提示驱动反检测云浏览器。 工具如 browser_gotobrowser_clickbrowser_type 和 browser_get_html 使 Pi 完全控制一个真实的云 Chromium 浏览器,并保持会话持久性。
  • 通过住宅代理提取区域特定数据。 直接通过代理的工具调用将搜索范围限制为 gl=us 或 gl=de
  • 保持在一个终端会话中。 无需切换浏览器标签、无需复制粘贴 curl 输出、无需单独的抓取命令行工具来监管。

在 Scrapeless,我们只访问公开可用的数据,并严格遵守适用法律、法规和网站隐私政策。本文内容仅用于演示目的。


什么是 Pi Agent?

Pi Agent 是由 Mario Zechner(libGDX 游戏框架的创建者)构建的一个基于终端的编码代理。开箱即用,模型提供四个工具:

  • read — 读取文件和目录
  • write — 创建和编辑文件
  • edit — 对现有文件进行有针对性的编辑
  • bash — 执行 Shell 命令

其他一切都是可选的。您可以通过 TypeScript 扩展、技能和作为包打包的提示模板来扩展 Pi,并通过 npm 或 git 安装。代理运行四种模式——交互式(对话)、打印/JSON(脚本化)、RPC(标准输入/输出集成)和 SDK(嵌入式)。提供者支持广泛:Anthropic、OpenAI、Google、Mistral、Groq 等。

通过 npm 全局安装:

bashCopy

npm install -g @mariozechner/pi-coding-agent

权衡是明显的:一个小的起始表面,可以根据您的工作流程进行扩展,而不是一个适合所有人的工具箱。


为什么 Pi 需要网络访问

Pi 的推理受限于底层模型的训练数据。这意味着它无法:

  • 在训练截止后查找库的最新 API 变更
  • 获取当前文档页面、变更日志或发布说明
  • 阅读公共页面以提取配置表、价格或架构
  • 验证训练数据中的示例是否仍能与今天的包版本编译

对于快速发展的生态系统——任何网络、前端、人工智能工具、基础设施——这都很重要。将Pi连接到一个支持网络的MCP服务器,你就可以获得一个编码代理,它会搜索当前信息并抓取生成代码之前所需的确切页面。输出不再是过时记忆中的最佳猜测,而是基于刚刚呈现的页面。


什么是无废弃物的MCP服务器?

无废弃物的MCP服务器是一个模型上下文协议服务器,它将无废弃物云浏览器、搜索和抓取API作为MCP工具暴露出来。任何兼容MCP的客户端——Pi、Claude Desktop、Cursor、Codex CLI、Gemini CLI、Windsurf、VS Code Copilot Chat——都可以直接在对话中调用它们。

在发布时,该服务器在三个类别中暴露了21个工具:

  • 搜索和趋势 — google_searchgoogle_trends
  • 浏览器自动化(16个工具) — browser_createbrowser_closebrowser_gotobrowser_go_backbrowser_go_forwardbrowser_clickbrowser_typebrowser_press_keybrowser_waitbrowser_wait_forbrowser_screenshotbrowser_snapshotbrowser_get_htmlbrowser_get_textbrowser_scrollbrowser_scroll_to
  • 无状态抓取 — scrape_htmlscrape_markdownscrape_screenshot

支持两种传输模式:

  • Stdio — npx -y scrapeless-mcp-server将服务器作为MCP客户端的子进程运行。这是桌面和终端代理(如Pi)的合适默认设置。
  • 可流式传输HTTP — 将客户端指向https://api.scrapeless.com/mcp。这是云托管代理无法执行npx的合适默认设置。

这两种模式都由相同的无废弃物API密钥支持。服务器源代码位于github.com/scrapeless-ai/scrapeless-mcp-server;完整工具参考见docs.scrapeless.com。在app.scrapeless.com的免费计划中获取您的API密钥。


MCP桥接器:pi-mcp-adapter

Pi没有直接支持MCP。这是一个有意的选择:Mario 争论MCP工具定义对一个最小代理来说过于耗费令牌。流行的MCP服务器如Playwright MCP暴露21个工具并消耗约13.7k个令牌;Chrome DevTools MCP暴露26个工具并消耗约18k个令牌。连接几个服务器可能会在对话开始之前耗尽上下文窗口的相当一部分。

社区对此的回应是pi-mcp-adapter:一个Pi扩展,它只暴露一个单一的代理工具(约200个令牌),而不是提前加载每个MCP工具定义。代理按需搜索和调用单个工具:

Copy

mcp({ search: "screenshot" })
mcp({ tool: "scrapeless_scrape_markdown", args: '{"url": "https://example.com"}' })

服务器默认是懒惰的——只有在代理首次调用它们的工具时,服务器才会启动,并在10分钟闲置后断开连接(可配置)。工具元数据缓存到磁盘,因此搜索和描述在没有实时连接的情况下仍然可以工作。

适配器按以下优先顺序读取标准MCP配置文件:

  1. ~/.config/mcp/mcp.json(用户全局共享)
  2. <Pi代理目录>/mcp.json(Pi全局覆盖,通常为~/.pi/agent/mcp.json
  3. .mcp.json(项目本地共享)
  4. .pi/mcp.json(Pi项目覆盖)

通过一个命令安装它(在Pi内部或通过Pi CLI运行):

bashCopy

pi install npm:pi-mcp-adapter

发布时的适配器版本为2.6.1


如何将Pi代理连接到无废弃物的MCP服务器

前提条件

  • Node.js 18或更高版本。 Pi代理和pi-mcp-adapter都需要它;Pi的Gemini CLI变体需要Node 20或更高版本。
  • 一个无废弃物的账户和API密钥。 在app.scrapeless.com注册。新账户包括免费的抓取浏览器运行时。
  • 一个Pi支持的模型提供商的API密钥——Anthropic、OpenAI、Google Gemini、Mistral、DeepSeek、Groq或Pi在/login处列出的任何其他提供商。

第1步 — 安装Pi代理

打开终端并运行:

bashCopy

npm install -g @mariozechner/pi-coding-agent

验证安装:

bashCopy

pi --version

发布时的Pi二进制文件为@mariozechner/pi-coding-agent版本0.73.1

第2步 — 安装pi-mcp-adapter

安装完Pi后,添加MCP适配器扩展:

bashCopy

pi install npm:pi-mcp-adapter

重启 Pi 以完成安装。适配器调用了一个单一的 mcp 代理工具,费用约为 200 个令牌,以及用于交互式服务器管理的 /mcp 斜杠命令。

第 3 步 — 获取 Scrapeless API 密钥

登录 app.scrapeless.com,打开 设置 → API 密钥,并复制你的密钥。将其保留在剪贴板上以便于下一步。

第 4 步 — 配置 .mcp.json

在你的项目文件夹中,创建一个名为 .mcp.json 的文件。这是 pi-mcp-adapter 在启动时读取的标准 MCP 配置文件格式(不需要特定于 Pi 的语法):

jsonCopy

{
  "mcpServers": {
    "scrapeless": {
      "command": "npx",
      "args": ["-y", "scrapeless-mcp-server"],
      "env": {
        "SCRAPELESS_KEY": "YOUR_SCRAPELESS_KEY"
      }
    }
  }
}

将 YOUR_SCRAPELESS_KEY 替换为第 3 步中的密钥。MCP 服务器从 SCRAPELESS_KEY 环境变量中读取 API 密钥——这个名称是事实的来源;不要将其更改为 SCRAPELESS_API_KEY

首次运行时,npx -y scrapeless-mcp-server 将下载该软件包并通过标准输入启动服务器。无需单独的安装命令。

如果你更喜欢跳过标准输入并使用可流式传输的 HTTP 传输,可以将条目更改为:

jsonCopy

{
  "mcpServers": {
    "scrapeless": {
      "url": "https://api.scrapeless.com/mcp",
      "headers": {
        "x-api-token": "YOUR_SCRAPELESS_KEY"
      }
    }
  }
}

这两种形式都使用相同的 Scrapeless API 密钥,并且提供相同的 21 个工具。标准输入是工作站的正确默认选择;如果 Pi 在无法调用 npx 的云主机上运行,则 HTTP 是正确的默认选择。

第 5 步 — 连接到模型提供者

启动 Pi:

bashCopy

pi

你应该看到 pi-mcp-adapter 列在 扩展 下。输入 /login 并选择你的身份验证方式(订阅或 API 密钥)。选择你想要使用的提供者,粘贴 API 密钥,Pi 会保存该凭证以供未来会话使用。输入 /model 打开模型选择面板并选择模型。

在免费计划上获取你的 Scrapeless API 密钥:app.scrapeless.com

第 6 步 — 验证连接

输入 /mcp 打开 MCP 面板。scrapeless 服务器列出但处于懒惰状态——开始时可能显示 0/21,因为连接尚未打开。用箭头键突出显示该行,按 Ctrl+R 重新连接(或调用任何 Scrapeless 工具,这会触发懒惰连接)。

一旦连接成功,终端底部会显示 MCP: 1/1 servers。现在可以发现这 21 个工具。通过列出它们来确认:

Copy

mcp({ search: "scrapeless" })

你应该在结果中看到 google_searchgoogle_trendsbrowser_* 和 scrape_* 工具。按 Esc 关闭面板。

第 7 步 — 运行实际任务

给 Pi 一个需要实时网络数据的提示。例如:

Copy

在网上搜索官方 axios npm 文档,抓取最相关的页面,并生成一个
有效的 JavaScript 示例,以正确的错误处理方式发出 GET 请求。
将其保存为 axios-example.js。

Pi 首先调用 scrapeless_google_search,返回带有标题、URL 和官方 axios 文档片段的排名结果列表。然后,它选择最相关的 URL,并调用 scrapeless_scrape_markdown 来以干净的 Markdown 提取页面——云浏览器处理 JavaScript 渲染和任何反检测挑战,并且 Pi 接收到提取的内容,而不是原始 HTML。

在上下文中查看文档后,Pi 根据它刚刚读取的 API 版本生成 axios-example.js。如果出现短暂的 os error 10054 或 HTTP 503,请重试调用——云浏览器队列会回收会话,重新发布通常会成功。

第 8 步 — 探索输出

Pi 将 axios-example.js 写入你的项目文件夹。该文件包含一个示例,反映了它刚刚抓取的模式——async/await、状态码分支和与当前 axios 文档推荐一致的错误检查:

javascriptCopy

async function fetchPost() {
  try {
    const response = await axios.get('https://jsonplaceholder.typicode.com/posts/1');
    console.log('状态:', response.status);
    console.log('标题:', response.data.title);
    console.log('正文:', response.data.body);
  } catch (error) {
    if (error.response) {
      console.error('状态:', error.response.status);
      console.error('数据:', error.response.data);
    } else if (error.request) {
      console.error('未从服务器收到响应');
    } else {
      console.error('请求设置错误:', error.message);
    }
  }
}

运行它:

bashCopy

npm install axios
node axios-example.js

你将获得的返回内容

一个来自Scrapeless MCP服务器的代表性 tools/list 响应具有以下格式(架构反映了发布时的实时服务器;字段值为示例性样本):

jsonCopy

{
  "tools": [
    {
      "name": "google_search",
      "description": "通用信息搜索引擎",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q":  { "type": "string", "default": "最新新闻头条" },
          "gl": { "type": "string", "default": "us" },
          "hl": { "type": "string", "default": "en" }
        }
      }
    },
    {
      "name": "scrape_markdown",
      "description": "抓取一个URL并以Markdown格式返回其内容",
      "inputSchema": {
        "type": "object",
        "properties": { "url": { "type": "string", "format": "uri" } },
        "required": ["url"]
      }
    },
    { "name": "browser_create",   "description": "创建一个新的云浏览器会话" },
    { "name": "browser_goto",     "description": "在现有会话中导航到一个URL" },
    { "name": "browser_get_html", "description": "返回当前页面的渲染HTML" }
    // … 还有16个更多
  ]
}

在将其连接在一起后的真实观察:

  • 代理工具主导了令牌成本,而不是21个底层工具。适配器将元数据保存在磁盘缓存中;在调用服务器上的 directTools 之前,没有任何内容会加载到系统提示中。
  • 冷会话的延迟启动获胜。 Scrapeless MCP服务器仅在第一次调用其工具时生成,因此打开一个配置了服务器的Pi会话不会增加额外的成本。
  • google_search + scrape_markdown 是常见组合。 先搜索找到页面,然后抓取以阅读。browser_* 工具保留用于需要登录、点击或分页的流程。
  • 短暂的 os error 10054 / HTTP 503 会发生。 在Scrapeless指南中有记录,并出现在云浏览器会话更替中。请从Pi重试工具调用,而不是重新启动会话。
  • SCRAPELESS_KEY 是规范的环境变量。 其他Scrapeless表面(独立CLI,代理技能)使用 SCRAPELESS_API_KEY。MCP服务器是个例外。

结论:一个读取实时网络的最小化编码代理

Pi代理默认保持最小;Scrapeless MCP服务器添加21个网络工具而不改变这一点。连接的内容是pi-mcp-adapter — 一个代理工具,约200个令牌,延迟服务器启动 — 以及一个广泛MCP生态系统已经理解的 .mcp.json 文件。同样的JSON片段可以无变化地嵌入Claude Desktop,Cursor,Codex CLI,Gemini CLI,Windsurf或VS Code Copilot Chat。

定性差异在你第一次要求Pi生成针对尚未固定的库的代码时显现出来:而不是从训练数据记忆中猜测,Pi会搜索,抓取规范文档,并根据实际在线的版本编写示例。将此指南与 Scrapeless MCP服务器概述 结合使用,以获取完整的工具目录,或与 AWS Strands + Scrapeless MCP指南 结合使用,如果相同的MCP服务器被连接到基于框架的代理,而不是终端代理。在普通使用中固定代理仅模式,当你希望模型在其系统提示中看到它们时,将单个工具提升至 directTools,并保持 lifecycle: lazy 以便冷会话保持便宜。


准备好构建您的AI驱动的数据管道了吗?

加入我们的社区,领取一个免费计划,与构建基于MCP的代理管道的开发人员连接:Discord · Telegram

在 app.scrapeless.com 注册以获得免费的抓取浏览器运行时,然后将上述 .mcp.json 片段放入Pi(或任何其他MCP客户端),并开始将代码生成基于实时网络数据。定价详情请访问 scrapeless.com/en/pricing


常见问题

1. 通过Pi使用Scrapeless MCP服务器抓取是否合法?
MCP服务器仅访问公开可用的内容,与未登录用户在浏览器中看到的内容相同。合法性取决于管辖权以及目标网站的服务条款。请仔细审查任何被要求抓取的网站的服务条款,并咨询法律顾问以应对高风险使用案例。

2. 我是否需要在Scrapeless MCP服务器上再加一个代理?
不需要。云浏览器已经通过195多个国家的住宅代理进行出口。在 google_search 上使用 gl 参数(或在代理提示中使用 --proxy-country 样式提示)以固定一个区域。

3. 如果工具调用遇到 ERR_TUNNEL_CONNECTION_FAILEDos error 10054,或HTTP 503,Pi会看到什么?
这些是在云浏览器群集中的临时错误。Pi 将错误反馈给模型,模型通常会自动重试;如果没有,请重新发出提示。它们并不表示 MCP 连接出现了问题。

4. Pi 显示了 Scrapeless 服务器,但工具数为 0/21——有什么问题吗?
没有。pi-mcp-adapter 中的服务器默认是懒惰的。第一次 Pi 调用 Scrapeless 工具时,计数会变为 21/21。要强制连接,请在 /mcp 中高亮显示服务器并按 Ctrl+R,或从提示行运行 /mcp reconnect scrapeless

5. 代理工具很棒,但我可以直接向 Pi 的模型暴露 Scrapeless 工具吗?
可以——在 .mcp.json 中的 scrapeless 条目添加 "directTools": true(或 "directTools": ["google_search", "scrape_markdown"] 来推广子集)。直接工具在系统提示中每个花费约 150–300 个 tokens;选择代理最常用的那些。

6. 相同的 .mcp.json 片段可以在 Pi 之外使用吗?
可以。mcpServers 对象是标准的 MCP 配置封装。Claude Desktop、Cursor、Codex CLI、Gemini CLI、Windsurf 和 VS Code Copilot Chat 都能读取它(某些可能路径或文件名略有不同)。上述 Scrapeless 块在它们中都能工作。

7. Pi 一次可以连接多少个 MCP 服务器?
没有硬限制——pi-mcp-adapter 使每个服务器处于懒惰状态,并在 10 分钟空闲后断开,因此无论列出多少个服务器,token 和进程费用保持平稳。相关的上限是模型提供者的上下文窗口和 Pi 自身的每工具预算。

8. 没有 AI 代理这会工作吗——我可以从脚本调用 Scrapeless MCP 服务器吗?
可以。可流式传输的 HTTP 端点 https://api.scrapeless.com/mcp 可以从任何 HTTP 客户端调用,顺序为 initialize → tools/list → tools/call 的 JSON-RPC;对其进行 curl 验证返回 serverInfo.name: "scrapeless-mcp-server" 和 mcp-session-id 请求头用于后续调用。Pi 是方便层,而非硬性依赖。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐