反重力 CLI + 无损:添加远程 MCP 服务器
Expert Network Defense Engineer
TL;DR:
- Antigravity CLI 连接到 Scrapeless 作为远程 MCP 服务器。 一个带有
serverUrl和x-api-token标头的条目,通过agy mcp add添加或手动编写,就是整个设置。 - 将密钥本身写入标头。
${SCRAPELESS_API_KEY}引用以文字形式发送,每个工具调用随后都会在仍然报告成功的运行中失败并返回 401。 agy mcp list显示配置,而不是有效连接。 服务器读取enabled无论其密钥是否有效。- 无头运行需要一个允许规则。 MCP 工具以询问模式启动,而
agy -p不能询问,因此拒绝了调用。mcp(scrapeless/scrape_markdown)在permissions.allow中让该工具运行。 - 标头名称是
x-api-token。 Scrapeless 在没有该标头的请求上以401 Unauthorized: Missing x-api-token header响应。 - 在 Scrapeless 免费计划 上获取密钥并在几分钟内连接。
Antigravity CLI,agy 命令,从终端运行谷歌的 Antigravity 代理,它是谷歌现在将使用 Gemini CLI 个人账户的用户发送到的地方。该代理可以读取文件、运行命令和搜索网络。Scrapeless MCP 服务器添加在云浏览器中呈现的页面并作为 Markdown 返回,代理可以逐步驱动的浏览器会话,后台爬虫和谷歌结果数据。
本指南将托管服务器添加到 Antigravity CLI 并从脚本运行一个工具调用。配置很简短。三个细节决定它是否有效:密钥的写入方式、信任的状态行以及无头运行所需的权限规则。
Scrapeless 为 Antigravity CLI 添加的内容
服务器公开 25 个工具,按工作分组:
scrape_markdown、scrape_html和scrape_screenshot在一次调用中返回作为 Markdown、原始 HTML 或图像呈现的页面。- 十六个
browser_*工具,从browser_create和browser_goto到browser_click、browser_type和browser_snapshot,逐步驱动云浏览器会话。 crawl_start、crawl_result和crawl_cancel在后台运行爬虫并稍后收集。google_search和google_trends返回搜索结果和趋势数据,ai_scraper从 AI 助手(如 ChatGPT、Gemini 和 Perplexity)捕获答案。
Antigravity CLI 在 ~/.gemini/antigravity-cli/mcp/scrapeless/ 下保留每个工具的架构副本,每个工具一个 JSON 文件,在测试中代理在调用工具之前读取了 scrape_markdown 架构。
如果您改用 Antigravity 桌面应用程序,我们的 Antigravity IDE 指南 覆盖该设置。
Antigravity CLI 从 MCP 服务器读取的位置
谷歌的 Antigravity MCP 文档 将配置放在 ~/.gemini/config/mcp_config.json,工作区文件在 .agents/mcp_config.json 作为本地替代方案。本指南使用全局文件,以下测试读取。远程服务器具有两个属性:
serverUrl,远程 Streamable HTTP 或 SSE 服务器的 URL。headers,发送到该服务器的自定义 HTTP 标头。
Scrapeless 是一个位于 https://api.scrapeless.com/mcp 的 Streamable HTTP 端点,因此无需传输设置。
前提条件
- Antigravity CLI,已使用 Google 账户登录。本指南在 Linux 上使用了
agy1.2.2,使用的是个人 Google 账户。 - 从 Scrapeless 仪表板获取的 Scrapeless API 密钥。
第一步:添加服务器
agy mcp add 为您编写条目。标志在服务器名称之前,https URL 被检测为 HTTP 服务器:
bash
agy mcp add -H "x-api-token: YOUR_SCRAPELESS_API_KEY" scrapeless https://api.scrapeless.com/mcp
它的响应是:
text
Added MCP server "scrapeless" (http)
并将此条目写入 ~/.gemini/config/mcp_config.json:
json
{
"mcpServers": {
"scrapeless": {
"disabled": false,
"headers": {
"x-api-token": "YOUR_SCRAPELESS_API_KEY"
},
"serverUrl": "https://api.scrapeless.com/mcp"
}
}
}
该命令将密钥放入您的 shell 历史记录。要避免这种情况,请通过编辑器将相同的条目写入文件,然后使用 chmod 600 ~/.gemini/config/mcp_config.json 限制该文件的权限给您的用户。
现在设置这个?Scrapeless 免费计划 覆盖连接和您的第一个工具调用。
第二步:将密钥本身放入标头
多个 MCP 客户端在配置文件中扩展环境变量,并且很容易在这里写 "x-api-token": "${SCRAPELESS_API_KEY}"。Antigravity CLI 不会扩展它。将该值放入文件并导出变量后,询问 scrape_markdown 的运行将返回这个作为其答案:
text
Failed to fetch data. Error: [Scrapeless]: Request POST https://api.scrapeless.com/api/v1/unlocker/request failed with status 401
运行本身仍报告 "status": "SUCCESS"。Scrapeless 收到了字面文本 ${SCRAPELESS_API_KEY},接受了连接,如同处理任何标头值,并拒绝了工具调用。将密钥本身写入标头,并保护文件。
第 3 步:检查服务器列表
列出 CLI 将加载的内容:
bash
agy mcp list
text
NAME TYPE STATUS COMMAND/URL
scrapeless http enabled https://api.scrapeless.com/mcp
enabled 意味着条目存在且没有关闭。命令在几分之一秒内返回,并未验证密钥,因此重要的检查是第 5 步中的工具调用。
第 4 步:在无头运行之前允许工具
反重力在运行没有规则的 MCP 工具之前会询问。Antigravity 的权限参考 将 MCP 工具列为默认询问并与 mcp(server/tool)、mcp(server/*) 或 mcp(*) 匹配。在交互式会话中,这意味着一个批准提示。打印模式运行没有人询问,因此它拒绝了调用并打印:
text
jetski: no output produced — a tool required the "mcp" permission that headless mode cannot prompt for, so it was auto-denied. Add an allow-rule under permissions.allow in settings.json (e.g. mcp(<target>)). Alternatively, re-run with --dangerously-skip-permissions to auto-approve all tools.
其 JSON 输出将调用列在 denied_actions 下,作为 CallMcpTool。为脚本所需的一个工具添加规则至 ~/.gemini/antigravity-cli/settings.json,并放在任何现有规则旁边:
json
{
"permissions": {
"allow": ["mcp(scrapeless/scrape_markdown)"]
}
}
更倾向于这样的规则,而不是 --dangerously-skip-permissions,后者批准每个工具、文件和命令操作。mcp(scrapeless/*) 允许所有 25 个 Scrapeless 工具。CLI 的仓库中有一个公开报告,Antigravity CLI 问题 548,描述了打印模式忽略 permissions.allow。使用 agy 1.2.2 时,上述规则已加载并应用:CLI 日志在启动时列出了它,并且调用成功。
第 5 步:运行一个工具调用
请求一个小的、可检查的打印模式作业:
bash
agy -p "Call the scrapeless MCP server's scrape_markdown tool with url https://example.com and reply with the first Markdown heading, verbatim." --output-format json
JSON 输出在 response 中携带答案:
text
"status": "SUCCESS"
"response": "# Example Domain\n"
反重力的对话记录显示代理如何获得这个:它读取了缓存的 scrape_markdown 架构,然后调用 scrape_markdown 在 https://example.com 上。运行每个耗时略超过两分钟,在有时间的逐步中,工具调用本身大约耗时五秒。
读取 response 文本,而不是 status。错误的密钥、错误的标头名称或未扩展的变量仍然会产生 SUCCESS,并且文本以 Failed to fetch data 开头。
修复常见问题
| 您看到的 | 原因 | 修复 |
|---|---|---|
response 以 Failed to fetch data … 401 开头 |
密钥错误,或标头包含 ${SCRAPELESS_API_KEY} |
将密钥本身写入 headers |
空的 response 和 denied_actions 列表 CallMcpTool |
在无头运行中没有工具的允许规则 | 将 mcp(scrapeless/scrape_markdown) 添加到 permissions.allow |
| 代理在没有调用 Scrapeless 的情况下作出回应 | 它使用了内置的网页工具 | 在提示中指定服务器和工具 |
agy mcp add 拒绝标头标志 |
标志在服务器名称之后 | 将 -H 放在 scrapeless 之前 |
有关服务器本身的更多信息,请阅读 Scrapeless MCP 服务器公告。 浏览器 MCP 文档 包含配置参考,抓取 API 页面涵盖了工具背后的角色,以及 定价 列出了调用的费用。
结论
将 Scrapeless 添加到 Antigravity CLI 只需在 ~/.gemini/config/mcp_config.json 中输入一项:serverUrl 设置为 https://api.scrapeless.com/mcp 以及一个包含密钥本身的 x-api-token 标头。 agy mcp add -H 一行写入它,而脚本运行需要每个工具一个允许规则。
两个结果看起来不错,但实际上并非如此。enabled 在服务器列表中未提及密钥,而使用错误密钥或未扩展变量的运行仍然报告成功。读取工具的答案,设置也得到了验证。
准备好让 Antigravity 的代理实时查看网络了吗? 从 Scrapeless 免费计划开始 并添加服务器。
常见问题解答
问:我如何将带有 API 密钥标头的远程 MCP 服务器添加到 Antigravity CLI?
运行 agy mcp add -H "x-api-token: YOUR_KEY" scrapeless https://api.scrapeless.com/mcp,或使用 serverUrl 和一个 headers 对象添加条目到 ~/.gemini/config/mcp_config.json。标志必须在服务器名称之前到来。
Q: Antigravity CLI 是否在 MCP 头中扩展环境变量?
在此设置中没有。${SCRAPELESS_API_KEY} 的头值作为文字文本发送,而工具调用失败并返回 401,而运行报告成功。将密钥放入文件中并限制该文件的权限。
Q: 为什么 agy 在打印模式下拒绝我的 MCP 工具调用?
MCP 工具默认以询问模式运行,而打印模式无法显示提示,因此调用会自动被拒绝并列在 denied_actions 之下。在 ~/.gemini/antigravity-cli/settings.json 中将 mcp(server/tool) 添加到 permissions.allow。
Q: 在 agy mcp 列表中启用是否意味着连接正常?
不。这意味着条目存在且未被禁用。返回页面内容的工具调用是检查的标准。
Q: 我可以使用 Gemini CLI 替代它吗?
Gemini CLI 不再为个人 Google 帐户服务,Google 现在将其定向到 Antigravity。Antigravity CLI 从 ~/.gemini/config/mcp_config.json 读取 MCP 服务器。
Q: Scrapeless 向 Antigravity CLI 添加了多少个工具?
25:三个 scrape_* 工具,十六个 browser_* 工具,三个 crawl_* 工具,以及 google_search、google_trends 和 ai_scraper。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



