如何将 Scrapeless 连接到 Grok:MCP 连接器设置
Senior Cybersecurity Analyst
TL;DR:
- Grok的CLI使用MCP,因此连接Scrapeless只需一个TOML表:一个
url和一个x-api-token头。 grok mcp doctor回答是否成功 —✓ server started (1.0s),✓ handshake OK (protocol 2025-06-18),✓ 25 tools discovered。- 范围决定服务器是否运行。在不受信的文件夹中,库本地
.grok/config.toml报告✗ folder untrusted并被计为0台服务器;在用户范围内的相同表开始。 - 头部是
x-api-token,而不是Authorization: Bearer。Bearer头失败握手:grok mcp doctor报告✗ handshake failed和HTTP 401。 grok mcp add --header "..."写入正确的配置并将您的密钥放入shell历史记录中;自己写表则不然。25 tools discovered证明头部到达,而不是密钥有效 — Scrapeless列出任何密钥值的所有25个工具。返回页面内容的一个真实tools/call是凭证有效的唯一证明。- 首先在Scrapeless免费计划上获取密钥。
终端中的代理擅长读取文件和运行命令,对开放网络上的任何内容都盲目。 MCP是如何关闭这一差距的:客户端从服务器创建工具定义,模型在回合中选择一个,“这个页面现在说什么”成为调用而不是复制粘贴。
Grok的CLI具有一流的MCP实现,包括报告连接哪个阶段失败的诊断子命令,而不是仅仅给出一个红色或绿色。设置连接器需要两个TOML表;读取该诊断是后期节省时间的部分。
What You Get
从实时tools/list列出的二十五个工具,而不是从文档中复制的:
| Group | Tools |
|---|---|
| Page content | scrape_markdown, scrape_html, scrape_screenshot |
| Cloud browser | browser_create, browser_goto, browser_click, browser_type, browser_get_text, browser_get_html, browser_snapshot, browser_screenshot, browser_scroll, browser_scroll_to, browser_wait, browser_wait_for, browser_press_key, browser_go_back, browser_go_forward, browser_close |
| Crawling | crawl_start, crawl_result, crawl_cancel |
| Search | google_search, google_trends |
| AI assistant answers | ai_scraper |
scrape_markdown涵盖了代理要求的大部分内容 — 一次调用,一份文档。 browser_*组是模型在多个回合中驱动的会话,这是任何点击或登录背后所需要的。
Prerequisites
- Grok CLI。此处使用的版本是
grok 0.2.118 (1e1687c1cf)。 - 一个Scrapeless API密钥。
- 服务器无需安装任何内容。它是托管的,因此没有软件包,也没有本地进程 — 客户端通过流式HTTP连接到一个URL,这是模型上下文协议规范定义的两种传输之一。
Step 1: Add the Server
CLI有一个子命令用于此:
bash
grok mcp add -t http -s user scrapeless https://api.scrapeless.com/mcp \
--header "x-api-token: YOUR_SCRAPELESS_API_KEY"
text
Added HTTP MCP server 'scrapeless' with URL: https://api.scrapeless.com/mcp to user config
File modified: ~/.grok/config.toml
-t http选择传输(替代方案是stdio和已弃用的sse),-s user写入~/.grok/config.toml而不是存储库。
它写入的是一对TOML表:
toml
[mcp_servers.scrapeless]
url = "https://api.scrapeless.com/mcp"
enabled = true
[mcp_servers.scrapeless.headers]
x-api-token = "YOUR_SCRAPELESS_API_KEY"
知道形状很重要,因为--header标志将您的密钥放入shell历史记录和进程列表中,而命令运行时。自己写这六行可以避免两者,并让您添加CLI未设置的超时:
toml
[mcp_servers.scrapeless]
url = "https://api.scrapeless.com/mcp"
startup_timeout_sec = 30
tool_timeout_sec = 120
[mcp_servers.scrapeless.headers]
x-api-token = "YOUR_SCRAPELESS_API_KEY"
头部名称是需要正确的细节。Scrapeless读取x-api-token;大多数MCP示例显示Authorization: Bearer,因为这符合HTTP认证框架对bearer凭证的规定。这里的Bearer头在握手完成之前就失败了 — initialize请求返回HTTP 401 Unauthorized: Missing x-api-token header,医生将服务器计为失败。
Step 2: Read the Diagnostic
这是值得学习的部分。 grok mcp doctor分别报告每个阶段:
text
MCP Doctor
Config sources
~/.grok/config.toml 1 server
~/.claude.json not found
.mcp.json not found
grok.com skipped (not logged in)
scrapeless (http: https://api.scrapeless.com/mcp)
✓ server started (1.0s)
✓ handshake OK (protocol 2025-06-18)
✓ 25 tools discovered
输出中的四个独立事实。读取了哪些配置文件,以及每个文件贡献了多少服务器。连接是否打开,以及花了多长时间。MCP握手是否完成,以及使用哪个协议版本。从发现中返回多少工具。
最后两个是普通的JSON-RPC 2.0交换 — 一个initialize请求后跟一个tools/list — 这就是为什么它们可以独立成功或失败的原因。
在这些点的任何一个失败会导致不同的原因,这就是为什么分阶段的输出胜过单一的红色或绿色。当你想在脚本中进行断言而不是读取时,还有一个 --json 模式。
一旦 grok mcp list 正常工作,检查起来更快:
text
scrapeless: https://api.scrapeless.com/mcp
第 3 步:理解范围,否则将无法启动
Grok 从用户范围和一个库本地的 .grok/config.toml 读取 MCP 配置。第二个有一个条件附加,这会导致第一次运行时的困惑。
同一个服务器表,放在一个项目文件夹中:
text
Config sources
~/.grok/config.toml not found
/root/verify-grok-proj/.grok/config.toml 0 servers
scrapeless (http: https://api.scrapeless.com/mcp)
✗ folder untrusted (repo-local (project-scoped) server not started for an untrusted folder)
需要注意两件事。服务器没有启动——项目范围的 MCP 服务器不会启动,直到文件夹被信任,因为在签出存储库中的配置文件可以将你的代理指向作者选择的任何端点。而且配置源行显示 0 服务器,尽管文件定义了一个,因此计算源并不足以告诉你配置已经被接受。
使用用户范围来获取属于你的密钥。使用项目范围与团队共享服务器,并为每台机器预期文件夹信任步骤。
第 4 步:确认能力,而不是徽章
25 tools discovered 是 tools/list 的结果,这个调用是由 MCP 服务器本身回答的——它永远不会到达上游 API。因此,无论其背后的凭证是否有效,发现都成功。
这不是一个理论上的区别。一个路由网关在这个相同的端点前面使用了过期的存储令牌发现了其完整的工具集,然后在第一次真正的调用上返回了一个无效令牌错误,而同一个端点使用有效密钥返回了 HTTP 200。
解决这个问题的检查是一个工具调用:
text
initialize HTTP 200 server=scrapeless-mcp-server v0.2.0
tools/list HTTP 200 25 tools
tools/call scrape_markdown HTTP 200 8940 chars of page content
该结果中的页面内容就是证据。它之前的一切都是自我报告的设置:使用错误的密钥,调用仍返回 HTTP 200,没有 isError 标志,其文本以 Failed to fetch data 开头。
注意:从 Grok 转内部发起调用需要 xAI 身份验证,而本教程的环境没有——
grok -p "..."返回Not signed in。连接器、握手、发现和上述工具调用都已验证;最终的模型授权回合是这里信任中采取的一步。使用grok login登录或设置XAI_API_KEY,模型就可以使用相同的工具。
第 5 步:提示它
一旦工具被发现,模型就会在它们之间选择。命名工具可以消除一次猜测:
text
Use the scrapeless scrape_markdown tool on
https://books.toscrape.com/catalogue/category/books/mystery_3/index.html
and give me the first five titles with their prices as a table.
两个习惯有帮助。在工作是单次获取时命名工具,工作不是时描述序列——browser_* 工具共享一个会话,因此“创建一个会话,访问 URL,点击过滤器,然后读取文本”与四个不相关的指令是不同的指令。
并且请求你想要的输出形状。scrape_markdown 返回一个文档;你是获得表格还是段落由提示决定,而不是工具。
现在设置这个?Scrapeless 免费计划涵盖了足够的调用以完成握手和前几个工具调用。
返回的内容
scrape_markdown 将页面作为 Markdown 在内容块中返回:
text
Response: "- [Home](https://books.toscrape.com/index.html)
- [Books](https://books.toscrape.com/catalogue/category/books_1/index.html)
...
Markdown 而不是 HTML 是模型的正确默认值。同一页面从 scrape_markdown 有 8,940 个字符,而从 scrape_html 有 53,800 个字符,因此 scrape_html 大约花费六倍的上下文在没人阅读的标记上。当你自己的代码将解析结果时使用 scrape_html,而当模型是消费者时使用 scrape_markdown。
路由器改变工具数量
如果客户端指向一个在一个 URL 后面前置多个 MCP 服务器的网关,发现的列表是路由器自己的调度工具,而不是提供者的。相同的客户端,相同的命令:通过智能路由网关 3 个工具,直接针对 https://api.scrapeless.com/mcp 25 个工具。
这两种安排都是合法的。一个路由器在多个提供者之间保持一个凭证和一个审计记录;直接连接为模型提供了真实的工具表面。grok mcp doctor 的工具数量告诉你你正在运行哪个,这足以在任何配置更改后查看。
对于由代码驱动而非代理的相同产品,我们的Grok网页抓取指南 涵盖了模型加抓取模式,而MCP服务器发布帖 则涵盖了服务器暴露的内容。抓取API 页面描述了这些工具背后的演员家族,文档 提供了每个演员的参考,而定价 列出了调用的费用。
结论
两个TOML表和一个标题名称就是整个连接器。grok mcp doctor 然后告诉你四个阶段中的哪一个有效,其25 tools discovered行是更改后要检查的内容——因为3意味着你与路由器对话,而0表示来自一个包含一个的文件的服务器意味着该文件夹是不可信的。
两个值得避免的错误都是便宜的。使用x-api-token而不是Bearer头,因为Bearer版本在握手时被拒绝并且grok mcp doctor立即标记它。并将发现视为对自身的设置报告:一个tools/call返回真实页面内容的实例实际上证明了凭据有效。
准备好让Grok进行抓取调用吗?从Scrapeless免费计划开始并添加服务器。
常见问题
问:Grok支持MCP服务器吗?
是的。CLI有一个专用的grok mcp子命令,包含add、list、remove、enable、disable和doctor,并支持stdio、http和sse传输。远程HTTP是用于像这样的托管服务器,因为它不需要本地进程。
问:我怎么把Scrapeless MCP服务器添加到Grok?
grok mcp add -t http -s user scrapeless https://api.scrapeless.com/mcp --header "x-api-token: ...",或者自己将等效的[mcp_servers.scrapeless]和[mcp_servers.scrapeless.headers]表写入~/.grok/config.toml。手动编写的路由可以将密钥保留在shell历史中,并让你设置startup_timeout_sec和tool_timeout_sec。
问:为什么我的项目范围MCP服务器无法启动?
因为文件夹是不可信的。一个repo-local .grok/config.toml 直到你信任该文件夹才会启动,诊断也明确说明:✗ folder untrusted (repo-local (project-scoped) server not started for an untrusted folder)。config-source行也将其计算为0个服务器,这会让文件看起来是空的。将条目移动到用户范围可以避免当密钥是你的时候的门控。
问:头部应该是x-api-token还是Authorization: Bearer?
x-api-token。没有它的请求返回401 Unauthorized: Missing x-api-token header。Bearer头在握手时以相同方式被拒绝,因此grok mcp doctor显示✗ handshake failed和Found 0 healthy, 1 failing——医生在任何工具调用之前捕获了这个单词错误。
问:我怎么检查Grok能看到哪些工具?
grok mcp doctor打印每个服务器发现的计数,--json以机器可读的方式提供相同的信息。对于这个端点,它报告25。如果你看到3,客户端指向的是路由网关而不是服务器,而这三者是路由器的调度工具。
问:25 tools discovered足以证明它有效吗?
不。发现是tools/list,MCP服务器在本地回答而不联系上游API,因此即使在凭据被拒绝的情况下也会成功。进行一次工具调用并查找真实页面内容;一个错误的密钥返回以Failed to fetch data开头的文本,而Scrapeless不在其上设置isError。
问:我需要登录xAI才能使连接器工作吗?
连接器本身不需要它:握手和工具发现无需任何xAI凭据。实际调用工具则需要,因为那是Grok推理轮次——没有它,grok -p "..."返回Not signed in。运行grok login或设置XAI_API_KEY。
问:我可以限制模型可以调用哪些工具吗?
可以,在客户端。CLI公开权限允许和拒绝规则,加上--tools和--disallowed-tools用于内置工具,因此只需要页面内容的设置可以允许scrape_markdown而将浏览器会话工具设为不可用。将其缩小到工作范围。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



