工厂机器人 + 无废料:添加远程MCP服务器
Senior Web Scraping Engineer
TL;DR:
droid mcp add一条命令连接 Scrapeless。 使用--type http、x-api-token头文件和--no-oauth;条目将落在~/.factory/mcp.json。- 将关键字写成
${SCRAPELESS_API_KEY},带上大括号。 Droid 扩展该形式并在未设置时命名变量,但它发送裸的$SCRAPELESS_API_KEY作为字面文本。 - 项目
.factory/mcp.json可以安全地携带引用。 关键字保留在每个开发者的环境中,服务器列出为connected [project]。 droid mcp list分隔四个不同的问题。connected、needs authentication、failed: Failed to connect to MCP server和一个未设置变量失败每个指向不同的修复。connected证明头文件已到达,并不证明关键字有效。 一个虚构的关键字也列为已连接,因此请通过一次工具调用进行确认。- 无头工具调用需要
--auto high,因此需要作用域。droid exec --auto high --only-tools 'MCP:scrapeless/scrape_markdown'让运行调用那个工具而不做其他事情。 - 在 Scrapeless 免费计划 上获取一个密钥,并在几分钟内添加服务器。
Factory Droid 计划并编辑来自您的终端的代码,droid exec 在脚本和 CI 中以无头模式运行同一代理。任何模式都不能独立查看网页。MCP 服务器给 Droid 提供它在任务期间调用的工具,而托管的 Scrapeless MCP 服务器提供页面获取、云浏览器和搜索。
设置是一个命令。决定它是否有效的是关键字如何到达头文件、条目生活在哪个配置文件中,以及 droid mcp list 实际报告的内容。
What Droid Can Call Once Scrapeless Is Added
Scrapeless 服务器暴露了 25 种工具。scrape_markdown、scrape_html 和 scrape_screenshot 在一次调用中返回一个页面。十六个 browser_* 工具,从 browser_create 到 browser_close,逐步运行云浏览器会话。crawl_start、crawl_result 和 crawl_cancel 管理爬取。google_search 和 google_trends 返回搜索和趋势数据,而 ai_scraper 捕获来自 AI 助手的答案,例如 ChatGPT 和 Perplexity。
MCP 架构 将调用工具的客户端与提供工具的服务器分离,这就是为什么 Droid 只需要一个 URL 和一个头文件即可使用托管在其他地方的服务器。
Prerequisites
- Factory Droid CLI。 本指南使用版本 0.213.0 和 0.220.0。
- 已登录的 Factory 账户,或
FACTORY_API_KEY设置,用于模型运行提示的步骤。 - 从 Scrapeless 仪表板获取的 Scrapeless API 密钥。
Step 1: Add the Server
bash
droid mcp add scrapeless https://api.scrapeless.com/mcp --type http --header "x-api-token: YOUR_SCRAPELESS_API_KEY" --no-oauth
--type http 选择可流式传输的 HTTP 传输;默认类型是 stdio,这将把 URL 视为要启动的命令。--no-oauth 关闭了 Droid 本应为头文件身份验证远程服务器提供的 OAuth 流。
text
Added HTTP MCP server scrapeless with URL: https://api.scrapeless.com/mcp
写入 ~/.factory/mcp.json 的条目:
json
{
"mcpServers": {
"scrapeless": {
"url": "https://api.scrapeless.com/mcp",
"headers": {
"x-api-token": "YOUR_SCRAPELESS_API_KEY"
},
"oauth": false,
"disabled": false,
"type": "http"
}
}
}
"oauth": false 是 --no-oauth 添加的内容。"disabled": false 保持服务器处于活动状态。
Step 2: Put a Variable Reference in the Header
上面的命令在文件中留下一个字面密钥。用 ${SCRAPELESS_API_KEY} 替换它,以便文件保留名称,您的 shell 保留值。大括号很重要:Droid 扩展 POSIX 参数扩展 的带括号形式并通过未更改的裸 $SCRAPELESS_API_KEY 传递。
json
{
"mcpServers": {
"scrapeless": {
"url": "https://api.scrapeless.com/mcp",
"headers": {
"x-api-token": "${SCRAPELESS_API_KEY}"
},
"oauth": false,
"disabled": false,
"type": "http"
}
}
}
bash
export SCRAPELESS_API_KEY="your-scrapeless-api-key"
droid mcp list
text
Configured MCP servers:
scrapeless http connected [user]
当该 shell 中未设置变量时,Droid 会命名它,而不是模糊地失败:
text
scrapeless http failed: MCP server credential references an unset environment variable "SCRAPELESS_API_KEY" [user]
省略大括号后,该警告不会出现。Droid 发送字面文本 $SCRAPELESS_API_KEY,服务器仍列为 connected,问题仅在第一次工具调用时浮现。
Step 3: Share the Server Through a Project mcp.json
Droid 还从项目中读取 .factory/mcp.json,因此服务器可以存在于所有克隆它的存储库中。该文件中的字面密钥将与其一起提交,因为硬编码凭据因此是一种被列为软件弱点的原因。带括号的引用可以安全地提交,因为每个开发者从自己的环境中提供密钥。将相同的 JSON 以 .factory/mcp.json 的形式保存在存储库根目录中:
text
scrapeless http connected [project]
方括号标签是 Droid 从中加载条目的范围,这是确认项目文件生效的最快方式。没有变量时,项目条目报告相同的未设置变量失败,标签为 [project]。
现在设置这个?Scrapeless 免费计划 包括连接和你的第一次工具调用。
第 4 步:查看 droid mcp 列表报告
| 状态 | 原因 | 修复 |
|---|---|---|
connected |
服务器接受了带有 x-api-token 头的请求 |
进行一次工具调用以确认密钥 |
failed: … unset environment variable "SCRAPELESS_API_KEY" |
${SCRAPELESS_API_KEY} 被引用但未导出 |
在运行 Droid 的 shell 中导出变量 |
needs authentication |
启用 OAuth 时出现 401,通常来自 Authorization: Bearer 头 |
使用 x-api-token 并添加 --no-oauth |
failed: Failed to connect to MCP server |
禁用 OAuth 时出现 401,同样通常是 Bearer 头 | 使用 x-api-token |
Bearer 行出现得最多,因为几乎每个 MCP 示例都是以这种方式进行身份验证的。Scrapeless 在没有 x-api-token 的请求下回答一个 401 未授权响应,并且 OAuth 保留时,Droid 将其视为登录请求:
text
scrapeless http needs authentication [user]
Some servers need authentication. Start droid and run /mcp to authenticate.
运行 /mcp 并不能解决问题,因为 Scrapeless 端点没有 OAuth 流可以完成。请相应地更改头。
可能会误导的状态是 connected。Scrapeless 握手接受任何非空 x-api-token 值,因此错误输入或撤销的密钥会像一个好的密钥一样列出。
第 5 步:仅使用 Scrapeless 工具运行 Droid
droid exec 以无头模式运行一个提示,并以只读模式开始。对 MCP 工具的调用超出了该模式:在 Droid 0.220.0 中,运行停止并显示“权限不足以继续”,而 --auto medium 仍回答“使用 --auto high 重新运行”。--only-tools 标志接受 MCP 选择器,因此将更高的自主水平与允许一个工具的选择器配对:
bash
droid exec --auto high --only-tools 'MCP:scrapeless/scrape_markdown' "Use the scrapeless MCP server's scrape_markdown tool on https://example.com and reply with the first heading of the page, quoted exactly."
Droid 回答:
text
The first heading of the page is:
"Example Domain"
将 --list-tools 添加到同一选择器可以显示该运行可以达到的内容。Droid 将 MCP 工具命名为 <server>___<tool>,而 scrapeless___scrape_markdown 是唯一被标记为允许的,其余 24 个 Scrapeless 工具及 Droid 内置的文件和 shell 工具均被标记为阻止。'MCP:scrapeless' 允许所有 25 个 Scrapeless 工具,而 --add-tools 和 --remove-tools 接受相同的选择器。
结果中的页面内容是确认。当密钥无效时,同样的调用仍然返回 HTTP 200,结果文本以 Failed to fetch data 开头;Scrapeless 不将其标记为 MCP 错误,因此请阅读文本而不是状态。
有关服务器本身的更多信息,Scrapeless MCP 服务器公告 涵盖了其公开的信息,而我们的 MCP 集成指南 比较了代理如何到达浏览器。浏览器 MCP 文档 有配置参考,抓取 API 页面描述了工具背后的参与者,定价 列出了调用的费用。
结论
将 Scrapeless 添加到 Droid 只需一个命令。保持设置可信赖取决于 droid mcp list 能够和不能看到的内容:带括号的 ${SCRAPELESS_API_KEY} 引用使 Droid 可以命名缺失的变量,--no-oauth 将头错误转变为失败而不是登录提示,只有工具调用,而不是 connected 状态,才能证明密钥有效。
将带括号的引用放入项目 .factory/mcp.json,整个团队即可在没有任何人提交密钥的情况下访问服务器。
准备好给 Droid 一个实时的网络视图吗?从 Scrapeless 免费计划开始 并添加服务器。
常见问题
问:如何将带有 API 密钥的远程 MCP 服务器添加到 Factory Droid?
运行 droid mcp add scrapeless https://api.scrapeless.com/mcp --type http --header "x-api-token: YOUR_SCRAPELESS_API_KEY" --no-oauth。该条目放入 ~/.factory/mcp.json,您可以用 ${SCRAPELESS_API_KEY} 替换字面密钥。
问:Droid 会在 MCP 头中扩展环境变量吗?
是的,以带括号的形式。${SCRAPELESS_API_KEY} 会被变量的值替换,而未设置的变量会产生一个命名其的失败状态。裸 $SCRAPELESS_API_KEY 作为字面文本发送。
问:为什么droid mcp列表显示需要身份验证?
服务器在启用OAuth时返回了401,因此Droid提供了一个登录选项。对于Scrapeless,这几乎总是意味着Authorization: Bearer头部。使用x-api-token并添加--no-oauth;运行/mcp无法修复头部不匹配。
问:~/.factory/mcp.json和.factory/mcp.json之间有什么区别?
~/.factory/mcp.json是您的用户配置,适用于每个项目。.factory/mcp.json在一个代码库中适用于该项目,在droid mcp list中显示为[project],并且只要密钥是${SCRAPELESS_API_KEY}引用,就可以提交。
问:连接的意思是我的Scrapeless密钥有效吗?
不。Scrapeless握手接受任何非空的x-api-token值,因此错误的密钥也会列为connected。返回页面内容的工具调用是证明;错误的密钥返回以Failed to fetch data开头的文本。
问:如何将droid exec运行限制为Scrapeless工具?
传递--only-tools 'MCP:scrapeless'用于每个Scrapeless工具,或'MCP:scrapeless/scrape_markdown'用于一个工具,以及--auto high,这是MCP工具调用所需的。--add-tools和--remove-tools使用相同的选择器。
问:如何从Droid中移除Scrapeless服务器?
运行droid mcp remove scrapeless。该命令从定义它的配置文件中删除该条目。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



