CrawlForge
首页Playground应用场景集成价格文档博客
在 Claude Code 里真正用起来 CrawlForge MCP
Tutorials
返回博客
教程

在 Claude Code 里真正用起来 CrawlForge MCP

C
CrawlForge Team
工程团队
2026年8月13日
阅读时长 12 分钟

本页内容

快速解答

在 Claude Code 里你并不直接调用 MCP tools——你描述一个结果,由 Claude 挑选工具。想让它稳定挑中 CrawlForge:用 `claude mcp list` 验证服务器状态;在 CLAUDE.md 里加一段网页访问策略,让 Claude 优先选择 CrawlForge 而不是内置的 WebFetch;在 .claude/settings.json 里放行 `mcp__crawlforge__*` 以终结权限提示。只有在需要推翻它的选择时,才明确点名工具(「用 scrape 去……」)。

你装好了 CrawlForge MCP。Claude Code 显示已连接。然后你让它取一个页面,它却凭记忆给你总结,或者转头去用内置的抓取工具,又或者在做成任何有用的事之前先问你四遍权限。

这不是装坏了。这是 MCP tools 调用方式上的一个断层,用大约五分钟的配置就能补上。

Bash
claude mcp list
# crawlforge: npx -y crawlforge-mcp-server - ✔ Connected

本文讲的是安装之后的事:Claude 如何决定调用一个工具、如何让它优先选择 CrawlForge 而不是内置的网页工具、如何终结权限提示,以及如何用最少的 credits 挑到能干成活的那个工具。

目录

  • 为什么 Claude 会忽略你的 MCP server
  • 工具调用实际是怎么发生的
  • 第 1 步:确认服务器已连接
  • 第 2 步:需要时直接点名工具
  • 第 3 步:把 CrawlForge 策略写进 CLAUDE.md
  • 第 4 步:终结权限提示
  • 选对工具
  • 保护你的上下文窗口
  • 真正有效的提示词模式
  • 把配置分享给团队
  • 在脚本和 CI 中以 headless 方式运行
  • 故障排查

为什么 Claude 会忽略你的 MCP server

这里其实有三种互不相同的失败,各自需要不同的解法。

Claude 还不知道这些工具存在。 Claude Code 默认启用工具搜索。会话启动时它只加载工具的名称和服务器自身的说明,完整的工具定义会一直推迟到某个任务真正需要时才载入。这样能让你的上下文窗口保持空闲,但也意味着「我没看到列出 27 个工具」是正常现象,而不是哪里出了毛病。

Claude 手上有个看起来差不多的内置工具。 Claude Code 自带 WebFetch 和 WebSearch。你要「这个页面的内容」,一个讲道理的模型完全可能顺手用内置的,而不是去搜索一个还得先发现的 MCP tool。这不是坏了,只是你没告诉它你更想用哪个。

调用确实发生了,但每一次都要批准。 在你放行之前,每次 MCP tool 调用都会弹出权限提示。一个研究任务里被打断四次,感觉就像这套集成在跟你作对。

本文剩下的部分把这三件事都解决掉。

工具调用实际是怎么发生的

你并不去调用一个 MCP tool。你描述想要的结果,由 Claude 挑工具,就跟它在 Read 和 Grep 之间做选择一样。

每个 MCP tool 都有一个规范名称,形式是 mcp__<server>__<tool>。CrawlForge 注册为 crawlforge 时,它的工具就是:

Text
mcp__crawlforge__scrape
mcp__crawlforge__search_web
mcp__crawlforge__deep_research
mcp__crawlforge__stealth_mode

平时你不会去敲这些名字。它们在两个地方有用:权限规则按规范名称匹配;以及当 Claude 挑错工具时,你可以用点名的方式兜底。

第 1 步:确认服务器已连接

在调提示词之前,先确认传输层是通的。在你的 shell 里:

Bash
claude mcp list

每个服务器都会有一个健康状态。你实际会遇到的是这四种:

状态含义
✔ Connected正常。工具可用。
✘ Failed to connect进程没起来,或者端点拒绝了它。失败详情会附在这一行后面。
! Needs authentication远程服务器需要 OAuth 登录。
⏸ Pending approval来自 .mcp.json 的项目级服务器,正等你交互式批准。

在会话内部,/mcp 打开同一个视图,并带有按服务器划分的详情面板;服务器失败时其中会有一行 Issue:。

有个细节值得知道:配置一旦写入,claude mcp add 就会打印 Added ...,它并不做任何校验。API key 打错了照样会打印成功那一行。真正管用的检查是 claude mcp list。

第 2 步:需要时直接点名工具

当 Claude 挑错工具——或者一个都不挑——的时候,直接说你要哪个。下面两种写法都有效:

Text
Use scrape to get https://example.com/pricing as markdown.
Text
Use mcp__crawlforge__deep_research to compare the three vendors on
that page, then write the findings to research.md.

实践中光写工具名就够了。当某个名称在多个服务器之间有歧义,或者你在写一个必须毫不含糊的 slash command 或脚本时,再用完整的 mcp__crawlforge__* 形式。

点名工具是个不错的排查手段,却是个坏习惯。如果你发现自己每条提示词都要这么写,那就去修默认行为——这正是下一步。

第 3 步:把 CrawlForge 策略写进 CLAUDE.md

这是整篇文章里收益最高的一处改动。CLAUDE.md 每次会话都会载入上下文,所以一小段策略就能永久改变 Claude 会去拿哪个工具:

Markdown
# Web Access Policy

Use CrawlForge MCP tools for all web search and page fetching.

- Web search: `search_web` (not the built-in WebSearch)
- Single page: `scrape` with `formats: ["markdown"]`
- Article text only: `extract_content`
- Site structure: `map_site`, then `crawl_deep` if you need page bodies
- Multi-source research: `deep_research`
- JS-rendered or anti-bot pages: `scrape_with_actions` or `stealth_mode`

Prefer one `batch_scrape` call over a loop of single fetches.

把它放进项目的 CLAUDE.md,或者放进 ~/.claude/CLAUDE.md 让它处处生效。两次会话之后你就会忘了还有这么个东西——这正是它的意义所在。

把偏好平实地说一遍就行。一段每行都在吼 ALWAYS 和 NEVER 的文字,往往会让模型矫枉过正,在根本不需要抓取的问题上也去掏抓取工具。

第 4 步:终结权限提示

加一条放行规则,让 CrawlForge 的工具不受打断地跑起来。在 .claude/settings.json 里:

Json
{
  "permissions": {
    "allow": [
      "mcp__crawlforge__*"
    ]
  }
}

模式规则,直接来自权限参考文档:

  • mcp__crawlforge — 该服务器的所有工具
  • mcp__crawlforge__* — 同上,通配符写法
  • mcp__crawlforge__scrape — 仅这一个工具
  • mcp__crawlforge__extract_* — 四个抽取类工具

放行规则必须锚定到一个字面的服务器前缀。光写 "mcp__*" 会被跳过并给出警告,什么都不会自动放行,因为它没有指明任何你实际配置过的服务器。

如果你更想放行便宜的工具、对贵的那些留一手,那就放行读取类,其余继续保持提示:

Json
{
  "permissions": {
    "allow": [
      "mcp__crawlforge__scrape",
      "mcp__crawlforge__extract_content",
      "mcp__crawlforge__search_web",
      "mcp__crawlforge__map_site"
    ]
  }
}

这样 10 credits 的 deep_research 和 8 credits 的 agent 仍然会先问一句。

选对工具

二十七个工具是相当大的一片面上,而 Claude 会心安理得地在 1 个 credit 够用的地方花掉 5 个。成本如下:

Credits工具
1fetch_url、extract_text、extract_links、extract_metadata、scrape_template、get_batch_results、list_ollama_models
2scrape、extract_content、scrape_structured、map_site、process_document、localization
3analyze_content、extract_structured、extract_with_llm、track_changes
4summarize_content、crawl_deep
5search_web、batch_scrape、scrape_with_actions、stealth_mode、serp_rank、generate_llms_txt
8agent
10deep_research

三条规则覆盖了绝大多数情况:

逐级往上,别一上来就顶格。 先试 fetch_url(1)或 scrape(2)。只有当内容是客户端渲染时才升级到 scrape_with_actions(5),只有真的被拦了才用 stealth_mode(5)。相当多看着有防护的站点,对一个格式规范的请求其实照给不误。

用批量,别用循环。 一次 batch_scrape 调用不管传多少个 URL 都是 5 credits。十二次单独的 scrape 就是 24 credits 外加十二个来回。说一句「把这些放在一个批次里抓」,差距是实打实的。

清楚 deep_research 替代的是什么。 10 credits 让它成为最贵的工具,而当它顶掉的是一次搜索加八次抓取再加一轮综合时,这很划算。当你已经知道 URL 时,它就是浪费。有链接就直接抓。

保护你的上下文窗口

这是没人提醒过你的那种失败:一次成功的抓取毁掉了整个会话。网页很大,而 MCP 的结果是直接落进对话里的。

Claude Code 有护栏。任何 MCP tool 的输出超过 10,000 tokens 时它会警告,默认把输出上限压在 25,000 tokens。你可以抬高这个天花板:

Bash
export MAX_MCP_OUTPUT_TOKENS=50000

抬高它通常是错误的直觉。有三个更好的做法:

要你需要的那个形态。 scrape 默认返回 markdown,并通过 Readability 剥掉导航、广告和页脚。在现代站点上要 rawHtml,token 量可能翻十倍却毫无收益。

把大批量输出导到磁盘。 凡是你打算处理而不是阅读的内容,让 Claude 写出去:

Text
Batch scrape these 20 URLs and write each result to data/<domain>.md.
Then give me a one-line summary of each — do not paste the bodies.

Claude 在上下文里留下的是 20 行摘要,而不是 20 篇文章。

用便宜的工具做分诊。 extract_metadata(1 credit)用几百个 token 就能回答「这页值不值得读」。map_site(2)给你一份 URL 清单,一个正文都不用取。先摸清全貌,再去取真正要紧的。

真正有效的提示词模式

含糊的请求和具体的请求之间,差的通常就是多写两句。

指明输出的形态。

把那个页面的定价给我。

抓取 https://example.com/pricing 并返回 JSON: [{ plan, monthly_price, annual_price, included_credits }]。 没有列出的字段用 null。

说清楚数据要拿去干什么。 Claude 默认会把结果打印出来。如果你要的是一个文件、一份 diff 或者一个测试,就直说:

Text
Search for the top 10 results on "MCP web scraping", scrape each one,
and write a comparison table to docs/competitors.md. Skip anything
that 403s and note it at the bottom.

提前把升级路径给它。 这能省下一整个来回:

Text
Scrape https://app.example.com/dashboard. If the content looks
client-rendered, retry with scrape_with_actions waiting on
.data-grid. If you get a 403, use stealth_mode.

接到 Claude Code 本来就擅长的活儿上。 在你的终端里做抓取,真正的好处是数据落在了你的代码旁边:

Text
Scrape the Stripe webhook events reference, then check
src/lib/stripe/webhooks.ts for event types we handle that
no longer appear in their docs.

这是一条提示词同时覆盖了一次抓取、一次仓库读取和一次比对——这三样没有哪一样是浏览器标签页能替你做的。

把配置分享给团队

MCP servers 有三种安装作用域。默认是 local:只属于你,只在当前项目内,存放在 ~/.claude.json。

给团队用的话,用 project 作用域,它会在仓库根目录写入 .mcp.json:

Bash
claude mcp add crawlforge \
  --scope project \
  --env CRAWLFORGE_API_KEY=cf_live_your_key_here \
  -- npx -y crawlforge-mcp-server

别把带着真实密钥的那个文件提交上去。.mcp.json 支持环境变量展开,所以提交引用就好:

Json
{
  "mcpServers": {
    "crawlforge": {
      "command": "npx",
      "args": ["-y", "crawlforge-mcp-server"],
      "env": {
        "CRAWLFORGE_API_KEY": "${CRAWLFORGE_API_KEY}"
      }
    }
  }
}

这样每个开发者克隆下来就有了服务器,各自从自己的 shell 提供密钥。${VAR:-default} 的写法同样可用,展开适用于 command、args、env、url 和 headers。

用项目作用域有两件事要有预期。Claude Code 会要求每个开发者在首次使用时批准该服务器——这是刻意为之,否则一个仓库就能夹带一个克隆即运行的服务器。另外,如果变量未设置又没有默认值,配置照样会加载:claude mcp list 会报一个变量缺失的警告,并把字面量 ${CRAWLFORGE_API_KEY} 原样传下去,这在之后会表现为 401。

如果某个服务器你希望在这台机器的所有项目里都有,就用 user 作用域(--scope user)。

在脚本和 CI 中以 headless 方式运行

上面所有内容在非交互模式下都成立,只有一点不同:没有人来回答提示,所以权限必须提前定好。

Bash
claude -p "Scrape https://news.ycombinator.com and write the top 10 \
stories as JSON to hn.json" \
  --allowedTools "mcp__crawlforge__scrape,Write"

来自 .mcp.json 的项目级服务器在 claude -p 中会直接加载,不走批准提示——因为那个提示根本没法显示。这让提交进版本库的 .mcp.json 成了 CI 的自然选择。如果你需要把某个服务器挡在自动化运行之外,disabledMcpjsonServers 在所有模式下都能拦住它。

于是一个每日监控就是一个 cron job 加一条提示词:

Bash
claude -p "Use track_changes on https://competitor.com/pricing. \
If anything changed since the last run, append it to CHANGES.md." \
  --allowedTools "mcp__crawlforge__track_changes,Read,Write"

故障排查

✘ Failed to connect — 运行 claude mcp get crawlforge 并读那行 Issue:,它带着 HTTP 状态码或错误文本。对于 stdio 服务器,先确认 npx -y crawlforge-mcp-server 单独能跑起来。

所有工具都返回 401 — API key 不对,或者带了看不见的空白字符。粘贴密钥经常会捎上一个结尾换行;Claude Code 会在 claude mcp list 和 /mcp 里用一条点名字段的警告标出来。重新添加服务器,并确认密钥以 cf_live_ 开头。

⏸ Pending approval — 项目级服务器需要交互式批准。在该目录下运行 claude 并接受。在刚克隆的仓库里,你还得先接受 workspace 信任对话框——仓库不能批准它自己的服务器。claude mcp reset-project-choices 可以清除之前的选择。

Claude 还是在用 WebFetch — 回到第 3 步。在没有声明偏好的情况下,用内置的是个说得过去的选择。

工具输出被截断 — 你撞上了 25,000 tokens 的上限。与其抬高 MAX_MCP_OUTPUT_TOKENS,不如把请求收窄;参见保护你的上下文窗口。

credits 不足 — 去用量面板看看。Free 账户获得 1,000 个一次性 credits;Hobby 是每月 19 USD 换 5,000。

页面在浏览器里能打开,抓下来却是空的 — 客户端渲染。改用 scrape_with_actions 重试,并等待一个只有水合之后才存在的选择器。

下一步

  • 刚开始配置?先看安装指南
  • 专讲抓取的实操:如何用 Claude Code 抓取网站
  • 协议背景:面向开发者的 MCP 协议详解
  • 完整工具参考:快速上手文档

在 crawlforge.dev/signup 用 1,000 credits 免费开始。无需信用卡。

亲自试一试——无需注册

在 Playground 中运行 CrawlForge 的 27 个抓取与提取工具中的任意一个,然后免费开始,获取 1,000 credits。

1,000 免费 credits • 一次性 • 无需信用卡

标签

Claude-CodeMCPtutorialCLIAI-agentsdeveloper-workflowproductivity

关于作者

C

CrawlForge Team

工程团队

我们正在打造功能最全面的 Web 抓取 MCP server。我们开发的工具帮助开发者为 AI 应用提取、分析和转换 Web 数据。

及时获取最新洞察

将教程、产品更新与 Web 抓取技巧直接发送到你的收件箱。

拒绝垃圾邮件,随时可取消订阅。

付诸实践

在任意 URL 上测试 CrawlForge 的工具——免费,无需注册。

本页内容

Frequently Asked Questions

在 Claude Code 里怎样直接调用某个 CrawlForge 工具?+

你不能用一条命令去调用 MCP tools。你描述你要什么,由 Claude 选择工具。想推翻它的选择,就在提示词里点名工具——「Use scrape to get https://example.com as markdown」——或者在需要毫不含糊时(比如写 slash command 或 --allowedTools 参数)使用完整规范名称 mcp__crawlforge__scrape。

为什么 Claude Code 用 WebFetch 而不用 CrawlForge?+

因为没有任何东西告诉它别这么做。Claude Code 自带 WebFetch 和 WebSearch,而在工具搜索机制下 MCP tools 默认是被推迟加载的,所以内置的那个反而更顺手。在你的 CLAUDE.md 里加一小段网页访问策略,声明所有网页搜索和抓取都交给 CrawlForge 工具,之后每次会话 Claude 都会优先用它们。

怎样让 Claude Code 不再为每次 CrawlForge 调用询问权限?+

在 .claude/settings.json 里加一条放行规则:{"permissions": {"allow": ["mcp__crawlforge__*"]}}。这条规则必须锚定到字面的服务器前缀——光写 "mcp__*" 会被跳过并给出警告。若想对贵的工具留一手,可以只放行 mcp__crawlforge__scrape 这类具体名称,让 deep_research(10 credits)和 agent(8 credits)继续询问。

为什么我的会话里没有列出全部 27 个 CrawlForge 工具?+

这是预期行为。Claude Code 默认启用工具搜索,会话开始时只加载工具名称和服务器说明,完整定义要等到有任务需要时才载入,这样能让上下文窗口保持空闲。运行 /mcp 或 claude mcp list 确认服务器显示 Connected 即可——工具是可用的,只是没有预先列出来。

怎样把 CrawlForge MCP 配置分享给团队?+

用 claude mcp add crawlforge --scope project 以项目作用域安装,它会在仓库根目录写入 .mcp.json。不要提交真实密钥:.mcp.json 支持环境变量展开,把值设为 ${CRAWLFORGE_API_KEY},让每位开发者从自己的 shell 提供密钥。Claude Code 会要求每位开发者在首次使用时批准该服务器。

在 Claude Code 里抓取大量页面,最省的做法是什么?+

用 batch_scrape,不管传多少个 URL 都是 5 credits。十二次单独的 scrape 要 24 credits,而覆盖同样十二个 URL 的一次 batch_scrape 只要 5 credits。让 Claude「把这些放在一个批次里抓」,而不是任由它循环。做分诊时,map_site(2 credits)能列出 URL 而不取正文,extract_metadata(1 credit)能告诉你一个页面值不值得读。

相关文章

如何用 Claude Code 抓取网站(2026 指南)
Tutorials

如何用 Claude Code 抓取网站(2026 指南)

用 Claude Code 和 CrawlForge MCP 从你的终端抓取任何网站。抓取页面、提取数据并绕过反爬虫,全程不到 2 分钟。

C
CrawlForge Team
|
4月14日
|
10 分钟
用 Claude 进行网页抓取:完整指南(2026)
Tutorials

用 Claude 进行网页抓取:完整指南(2026)

2026 年用 Claude 抓取网页:把 CrawlForge MCP 接入 Claude Desktop、Claude Code 或 API,即可抓取任何网站——无需编写抓取代码。

C
CrawlForge Team
|
6月9日
|
12 分钟
如何在 Cursor IDE 中使用 CrawlForge MCP 抓取网站
Tutorials

如何在 Cursor IDE 中使用 CrawlForge MCP 抓取网站

把 Cursor IDE 变成网页抓取工作站。接入 CrawlForge MCP,无需离开编辑器即可从任意站点提取结构化数据。

C
CrawlForge Team
|
4月14日
|
9 分钟

页脚

CrawlForge

面向 AI Agent 的企业级网页抓取。27 个专业 MCP 工具,专为构建智能系统的现代开发者而设计。

产品

  • 功能
  • Playground
  • 价格
  • 应用场景
  • 集成
  • 替代方案
  • 更新日志

资源

  • 快速上手
  • API 参考
  • 模板
  • 指南
  • 博客
  • 术语表
  • 常见问题
  • 网站地图

开发者

  • MCP 协议
  • Claude Desktop
  • Cursor IDE
  • LangChain
  • LlamaIndex

公司

  • 关于我们
  • 联系我们
  • 隐私政策
  • 服务条款
  • 可接受使用政策
  • Cookie

保持更新

获取新工具和新功能的最新动态。

基于 Next.js 和 MCP 协议构建

© 2025-2026 CrawlForge。保留所有权利。