Firecrawl

官方

使用 Firecrawl 提取网页数据

你可以用 Firecrawl MCP 做什么?

  • 抓取单个URL — 通过 firecrawl_scrape 从任何已知URL获取干净的Markdown或结构化JSON,可选自定义提取模式。
  • 搜索网络 — 使用 firecrawl_search 从查询中获取排名结果,可选在同一调用中获取页面内容。
  • 发现站点URL — 调用 firecrawl_map 在决定抓取内容之前列出站点上所有已索引的URL。
  • 抓取多个页面 — 使用 firecrawl_crawl 从站点下的多个页面提取内容,受 limitmaxDiscoveryDepth 限制。
  • 与页面交互 — 通过 firecrawl_interact 驱动实时页面上的点击、输入和导航,通过 scrapeId 继续操作,并使用 firecrawl_interact_stop 停止。
  • 运行自主研究 — 启动 firecrawl_agent 进行多来源研究,返回结构化JSON,然后轮询 firecrawl_agent_status 获取结果。

文档

Firecrawl MCP 服务器

一个模型上下文协议(MCP)服务器,将 Firecrawl 带给兼容 MCP 的 AI 代理——搜索、抓取并与实时网络交互,获取干净、适合代理使用的上下文。

衷心感谢 @vrknetha@knacklabs 的初始实现!

功能特性

  • 搜索网络并获取完整页面内容
  • 搜索为编码代理构建的索引:GitHub 问题、已合并的拉取请求、README 和文档
  • 将任何 URL 抓取为干净、结构化的数据
  • 与页面交互——点击、导航和操作
  • 使用自主代理进行深度研究
  • 自动重试和速率限制
  • 支持云端和自托管
  • 支持 SSE

MCP.so 的游乐场Klavis AI 上试用我们的 MCP 服务器。

何时使用此服务器

  • 当您有已知 URL 并希望将其内容作为 Markdown 或符合您提供的模式的 JSON 获取时,使用 firecrawl_scrape
  • 当您需要发现站点上的 URL 而无需获取其内容时,使用 firecrawl_map
  • 当您需要获取站点下多个页面的内容时,使用 firecrawl_crawl;设置 limitincludePaths/excludePathsmaxDiscoveryDepth 来限制范围。
  • 当您从查询而非 URL 开始,并希望获得排序的网络结果时,使用 firecrawl_search;如果您还希望在同一个调用中获取页面内容,请添加 scrapeOptions(仅搜索的端点从不获取内容)。
  • 当页面需要点击、输入或导航操作后才能读取时,使用 firecrawl_interact——传递 url 获取新页面,或传递 scrapeId 继续您已抓取的页面。
  • 当同一页面需要按定期计划检查并带有差异和变更提醒,而非仅获取一次时,使用 firecrawl_monitor_* 工具。
  • 当您需要在多个自己的步骤中保持浏览器会话打开,并带有自己的重试和终止逻辑时,请考虑其他方案:每次 firecrawl_interact 调用运行一次 promptcode 轮次至完成并返回控制权——会话可以通过 scrapeId 在调用之间持久化,并以 firecrawl_interact_stop 结束,但您无法在单个调用中从客户端侧逐步交互式驱动它。

当完整配置文件以默认设置注册时(包括反馈工具,未以本地无密钥模式运行),此服务器列出 25 个工具。设置 FIRECRAWL_NO_SEARCH_FEEDBACK=1 和/或 FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 会移除相应的反馈工具并减少此数量,本地无密钥启动也是如此。对于有工具槽位限制的客户端:托管的无密钥端点(https://mcp.firecrawl.dev/v2/mcp,无 API 密钥)仅暴露 3 个——firecrawl_scrapefirecrawl_searchfirecrawl_parse——而专用的仅搜索端点https://mcp.firecrawl.dev/v2/mcp-search)暴露固定的 6 个只读工具。

安装

托管 MCP(无密钥免费层)

无需设置即可连接到远程托管服务器:

https://mcp.firecrawl.dev/v2/mcp

在无密钥免费层上,scrapesearchparse 无需 API 密钥即可工作(有速率限制)。其他工具如 crawlmapagent 仍需要密钥。

只要用户可以注册,优先使用 OAuth 或 API 密钥。它可以解锁完整的工具集和更高的限制。

对于交互式账户连接,请将您的 MCP 客户端配置为使用此服务器 URL。这是一个 MCP 端点,不是浏览器页面;使用客户端的账户连接流程,重新连接时不要添加第二个 Firecrawl 服务器条目:

https://mcp.firecrawl.dev/v2/mcp-oauth

对于 API 密钥连接(例如,无人值守的集成),请将服务器 URL 保持为:

https://mcp.firecrawl.dev/v2/mcp

然后使用以下内容配置客户端的安全标头或密钥设置:

Authorization: Bearer <FIRECRAWL_API_KEY>

切勿将 API 密钥放在服务器 URL 中。切勿将 API 密钥放在代理聊天中。直接在客户端或密钥管理器中配置它。有关客户端特定的说明,请参阅托管 MCP 设置指南代理入门指南

仅搜索端点

一个只读、仅搜索的表面也托管在:

https://mcp.firecrawl.dev/v2/mcp-search

它暴露固定的六个只读工具:firecrawl_searchfirecrawl_developer_search 和四个 firecrawl_research_* 工具。它不执行页面内容获取,并具有自己的 OAuth 身份;上面的完整端点不变。有关完整契约,请参阅 docs/search-profile.md

使用 npx 运行

env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp

手动安装

npm install -g firecrawl-mcp

在 Cursor 上运行

配置 Cursor 🖥️ 注意:需要 Cursor 版本 0.45.6+ 有关最新的配置说明,请参阅官方 Cursor 文档中关于配置 MCP 服务器的部分: Cursor MCP 服务器配置指南

在 Cursor v0.48.6 中配置 Firecrawl MCP

  1. 打开 Cursor 设置
  2. 转到功能 > MCP 服务器
  3. 点击“+ 添加新的全局 MCP 服务器”
  4. 输入以下代码:
    {
      "mcpServers": {
        "firecrawl-mcp": {
          "command": "npx",
          "args": ["-y", "firecrawl-mcp"],
          "env": {
            "FIRECRAWL_API_KEY": "YOUR-API-KEY"
          }
        }
      }
    }
    

在 Cursor v0.45.6 中配置 Firecrawl MCP

  1. 打开 Cursor 设置
  2. 转到功能 > MCP 服务器
  3. 点击“+ 添加新的 MCP 服务器”
  4. 输入以下内容:
    • 名称:“firecrawl-mcp”(或您喜欢的名称)
    • 类型:“command”
    • 命令:env FIRECRAWL_API_KEY=your-api-key npx -y firecrawl-mcp

如果您使用 Windows 并遇到问题,请尝试 cmd /c "set FIRECRAWL_API_KEY=your-api-key && npx -y firecrawl-mcp"

your-api-key 替换为您的 Firecrawl API 密钥。如果您还没有,可以从 https://www.firecrawl.dev/app/api-keys 创建账户并获取

添加后,刷新 MCP 服务器列表以查看新工具。Composer 代理会在适当时自动使用 Firecrawl MCP,但您也可以通过描述您的网页抓取需求来明确请求它。通过 Command+L(Mac)访问 Composer,在提交按钮旁边选择“代理”,然后输入您的查询。

在 Windsurf 上运行

将此添加到您的 ./codeium/windsurf/model_config.json

{
  "mcpServers": {
    "mcp-server-firecrawl": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

使用 Streamable HTTP 本地模式运行

要在本地使用 Streamable HTTP 而不是默认的 stdio 传输来运行服务器:

env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp

使用 URL:http://localhost:3000/mcp

通过 Smithery 安装(旧版)

要通过 Smithery 自动为 Claude Desktop 安装 Firecrawl:

npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude

在 VS Code 上运行

如需一键安装,请点击下面的安装按钮之一...

Install with NPX in VS Code Install with NPX in VS Code Insiders

如需手动安装,请将以下 JSON 块添加到 VS Code 中的用户设置(JSON)文件中。您可以通过按 Ctrl + Shift + P 并输入 Preferences: Open User Settings (JSON) 来完成此操作。

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "apiKey",
        "description": "Firecrawl API Key",
        "password": true
      }
    ],
    "servers": {
      "firecrawl": {
        "command": "npx",
        "args": ["-y", "firecrawl-mcp"],
        "env": {
          "FIRECRAWL_API_KEY": "${input:apiKey}"
        }
      }
    }
  }
}

或者,您可以将其添加到工作区中名为 .vscode/mcp.json 的文件中。这将允许您与他人共享配置:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "apiKey",
      "description": "Firecrawl API Key",
      "password": true
    }
  ],
  "servers": {
    "firecrawl": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "${input:apiKey}"
      }
    }
  }
}

配置

环境变量

云 API 所需

  • FIRECRAWL_API_KEY:您的 Firecrawl API 密钥
    • 使用云 API 时需要(默认)
    • 使用带有 FIRECRAWL_API_URL 的自托管实例时可选
  • FIRECRAWL_API_URL(可选):自托管实例的自定义 API 端点
    • 示例:https://firecrawl.your-domain.com
    • 如果未提供,将使用云 API(需要 API 密钥)

MCP OAuth(Bearer 访问令牌)

托管的 Firecrawl 可以通过 firecrawl.dev 上的授权服务器颁发 OAuth 访问令牌fco_…)。此 MCP 服务器将其解析到的任何凭据作为 Authorization: Bearer … 转发到 Firecrawl API。

  • HTTP 流传输CLOUD_SERVICE=trueHTTP_STREAMABLE_SERVER=trueSSE_LOCAL=true):客户端应在 MCP 请求上发送 Authorization: Bearer <fco_access_token>。当两者都存在时,OAuth Bearer 令牌优先于 x-firecrawl-api-key / x-api-key
  • stdio: 使用 FIRECRAWL_OAUTH_TOKEN 获取静态访问令牌,或继续使用 FIRECRAWL_API_KEY 获取 API 密钥。

仅使用访问令牌(fco_…)。刷新令牌(fcr_…)必须在令牌端点交换,不能传递给抓取/搜索 API。

仅搜索表面(托管)

在托管模式(CLOUD_SERVICE=true)下,第二个进程内实例服务于仅搜索端点。捆绑服务具有固定的部署契约:nginx 将 /v2/mcp-search 路由到本地端口 3001 上的实例,OAuth 受保护资源标识符为 https://mcp.firecrawl.dev/v2/mcp-search

FIRECRAWL_MCP_SEARCH_ENABLED(默认 true)是支持的操作开关;将其设置为 false 以防止搜索实例启动。Node 进程也接受 FIRECRAWL_MCP_SEARCH_PORTFIRECRAWL_MCP_SEARCH_ENDPOINTFIRECRAWL_MCP_SEARCH_RESOURCE_URL 用于隔离测试。这些覆盖不会重新配置捆绑的 nginx 路由或授权服务器允许列表,并且不得在托管部署中独立使用。

搜索实例要求每个请求都进行身份验证(包括 tools/list),并拒绝受众与其自身资源不匹配的 OAuth 令牌。

配置示例

对于云 API 使用:

export FIRECRAWL_API_KEY=your-api-key

对于自托管实例:

# Required for self-hosted
export FIRECRAWL_API_URL=https://firecrawl.your-domain.com

# Optional authentication for self-hosted
export FIRECRAWL_API_KEY=your-api-key  # If your instance requires auth

与 Claude Desktop 一起使用

将此添加到您的 claude_desktop_config.json

{
  "mcpServers": {
    "mcp-server-firecrawl": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

如何选择工具

使用此指南为您的任务选择正确的工具:

  • 如果您知道确切的 URL: 使用 scrape(使用 JSON 格式获取结构化数据)
  • 如果您有多个已知 URL: 为每个 URL 调用 scrape。如果您特别需要一次批量 API 操作,请在 MCP 之外使用 Firecrawl API 批量端点。
  • 如果您需要发现站点上的 URL: 使用 map
  • 如果您想搜索网络获取信息: 使用 search
  • 如果您有编程问题(库、API 契约、错误消息、已知错误):使用 developer search
  • 如果您需要科学论文(生物医学、生命科学、临床或 arXiv 文献):使用 research 工具——它们搜索论文摘要和全文。search 配合 categories: ["research"] 是不同的东西:对普通网络结果的网站过滤器。
  • 如果您需要返回结构化数据的多源研究、不知道 URL,或答案跨越多个站点(实体及其字段、列表、数据集):使用 agent
  • 如果您想分析整个站点或部分: 使用 crawl(带限制!)
  • 如果您需要交互式浏览器自动化(点击、输入、导航):使用 interact 配合 URL 获取新页面,或 scrape + interact 当您已经抓取过页面或需要更严格的抓取控制时

快速参考表

工具最适合返回
scrape单页内容JSON(首选)或 Markdown
interact与 URL 或已抓取页面交互执行结果 + URL 模式的 scrapeId
map发现站点上的 URLURL[]
crawl多页提取(带限制)内部轮询后的最终爬取状态/数据
parse文件和托管上传引用Markdown、JSON 或文档输出
search网络搜索获取信息results[]
developer开发者来源的编程问题带段落的 results[]
agent多源研究、未知或许多站点JSON(结构化数据)
monitor定期页面检查monitor/check 元数据和差异
research论文和 GitHub 仓库研究研究结果和仓库匹配

格式选择指南

使用 scrape 时,选择正确的格式:

  • JSON 格式(大多数情况下推荐): 当您需要从页面中提取特定数据时使用。根据您需要提取的内容定义 schema。这可以保持响应小巧,避免上下文窗口溢出。
  • Markdown 格式(谨慎使用): 仅当您确实需要完整页面内容时使用,例如阅读整篇文章以进行摘要或分析页面结构。

可用工具

1. Scrape 工具 (firecrawl_scrape)

使用高级选项从单个 URL 抓取内容。

最适合:

  • 单页面内容提取,当您确切知道哪个页面包含所需信息时。

不推荐用于:

  • 从多个页面提取内容(对于已知 URL 使用重复的 scrape 调用,或使用 map + scrape 先发现 URL,或使用 crawl 获取完整页面内容)
  • 当您不确定哪个页面包含所需信息时(使用 search)

常见错误:

  • 将 URL 列表传递给一次 scrape 调用。在 MCP 中每个 URL 调用一次 scrape。如果您特别需要一次批量 API 操作,请在 MCP 之外使用 Firecrawl API 批量端点。
  • 默认使用 markdown 格式(应使用 JSON 格式仅提取所需内容)。

选择正确的格式:

  • JSON 格式(首选): 对于大多数用例,使用带 schema 的 JSON 格式仅提取所需的特定数据。这使响应保持聚焦,防止上下文窗口溢出。
  • Markdown 格式: 仅当任务确实需要完整页面内容时使用(例如,总结整篇文章、分析页面结构)。

提示示例:

"获取 https://example.com/product. 的产品详情"

使用示例(JSON 格式 - 首选):

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com/product",
    "formats": [
      {
        "type": "json",
        "prompt": "Extract the product information",
        "schema": {
          "type": "object",
          "properties": {
            "name": { "type": "string" },
            "price": { "type": "number" },
            "description": { "type": "string" }
          },
          "required": ["name", "price"]
        }
      }
    ]
  }
}

使用示例(markdown 格式 - 当需要完整内容时):

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com/article",
    "formats": ["markdown"],
    "onlyMainContent": true
  }
}

使用示例(品牌格式 - 提取品牌标识):

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com",
    "formats": ["branding"]
  }
}

品牌格式: 提取全面的品牌标识(颜色、字体、排版、间距、Logo、UI 组件),用于设计分析或风格复制。 隐私: 设置 redactPII: true 以返回经过个人身份信息编辑的内容。

返回:

  • 按指定格式返回 JSON 结构化数据、markdown、品牌资料或其他格式。

2. Map 工具 (firecrawl_map)

映射网站以发现站点上所有已索引的 URL。

最适合:

  • 在决定抓取什么之前发现网站上的 URL
  • 查找网站的特定部分

不推荐用于:

  • 当您已经知道需要的特定 URL 时(使用 scrape)
  • 当您需要页面内容时(映射后使用 scrape)

常见错误:

  • 使用 crawl 而不是 map 来发现 URL

提示示例:

"列出 example.com 上的所有 URL。"

使用示例:

{
  "name": "firecrawl_map",
  "arguments": {
    "url": "https://example.com"
  }
}

返回:

  • 在网站上找到的 URL 数组

3. Search 工具 (firecrawl_search)

搜索网络并可选地从搜索结果中提取内容。

最适合:

  • 在多个网站中查找特定信息,当您不知道哪个网站有该信息时。
  • 当您需要某个查询最相关的内容时

不推荐用于:

  • 当您已经知道要抓取哪个网站时(使用 scrape)
  • 当您需要单个网站的全面覆盖时(使用 map 或 crawl)

常见错误:

  • 对开放式问题使用 crawl 或 map(应使用 search)

使用示例:

{
  "name": "firecrawl_search",
  "arguments": {
    "query": "remote work stipend policies at tech companies",
    "highlights": true,
    "limit": 5,
    "lang": "en",
    "country": "us",
    "scrapeOptions": {
      "formats": ["markdown"],
      "onlyMainContent": true,
      "redactPII": true
    }
  }
}

设置 highlightstrue 以请求与查询相关的高亮内容,或设置为 false 以保留原始搜索片段。省略它则使用 API 的默认行为。

对于科学论文,请参阅 研究工具:它们搜索论文摘要和全文,而这里的 categories: ["research"] 将普通网络结果过滤为研究相关网站。

返回:

  • 搜索结果数组(可选包含抓取的内容),外加一个 id 字段。在使用结果后将 id 传递给 firecrawl_search_feedback 可退还 1 个积分(搜索花费 2 个)并提高搜索质量。

提示示例:

"比较科技公司的远程工作津贴政策。"

3b. Search 反馈工具 (firecrawl_search_feedback)

发送关于先前 firecrawl_search 结果的结构化反馈。每个搜索 ID 的首次反馈可退还 1 个积分并提高 Firecrawl 的搜索质量。每个搜索 ID 幂等。

在每次实际使用的搜索后调用此工具(或对没有帮助的搜索也调用)。带有 missingContent 的差评/部分反馈与好评同样有价值。

退出机制: 在启动 MCP 服务器时在环境中设置 FIRECRAWL_NO_SEARCH_FEEDBACK=1(或 FIRECRAWL_DISABLE_SEARCH_FEEDBACK=1)。firecrawl_search_feedback 工具将不会被注册,因此代理无法调用它。团队管理员也可以服务端禁用反馈;在这种情况下,工具会被注册但始终返回 feedbackErrorCode: "TEAM_OPTED_OUT"

最重要的字段: missingContent。它是代理期望找到但未找到的特定内容片段的数组。每个缺失主题一个条目——这些条目跨团队聚合,告诉我们接下来要索引什么。

每日退款上限(每个团队,每个 UTC 日,默认 100 积分)。 一旦团队的 creditsRefundedToday 达到 dailyRefundCap,后续提交仍会记录反馈但不再退还积分。响应会设置 dailyCapReached: true。当代理看到该标志时,应在当天剩余 UTC 时间内停止调用此工具。

使用示例:

{
  "name": "firecrawl_search_feedback",
  "arguments": {
    "searchId": "0193f6c5-1234-7890-abcd-1234567890ab",
    "rating": "good",
    "valuableSources": [
      {
        "url": "https://docs.firecrawl.dev/features/search",
        "reason": "Most up-to-date description of /search."
      }
    ],
    "missingContent": [
      {
        "topic": "Pricing for the search endpoint",
        "description": "No pricing tier table for /search specifically."
      },
      { "topic": "Per-team rate limits" }
    ],
    "querySuggestions": "Boost docs.firecrawl.dev for queries that mention 'firecrawl'"
  }
}

返回:

  • { success, feedbackId, creditsRefunded, alreadySubmitted? } JSON。

3c. 通用反馈工具 (firecrawl_feedback)

通过 /v2/feedback 为已完成的 v2 端点作业发送结构化反馈。 将此用于对 scrapeparsemapsearch 作业的端点级反馈。对于搜索结果的特定质量,请优先使用 firecrawl_search_feedback,因为它包含搜索特定的指导。

保持反馈简洁:使用问题代码、标签、简短说明、URL、页码 和小型元数据对象。不要包含原始的抓取/解析输出。

退出机制: 在启动 MCP 服务器时在环境中设置 FIRECRAWL_NO_ENDPOINT_FEEDBACK=1(或 FIRECRAWL_DISABLE_ENDPOINT_FEEDBACK=1)。firecrawl_feedback 工具将不会被注册,因此代理无法调用它。

使用示例:

{
  "name": "firecrawl_feedback",
  "arguments": {
    "endpoint": "scrape",
    "jobId": "0193f6c5-1234-7890-abcd-1234567890ab",
    "rating": "partial",
    "issues": ["missing_markdown"],
    "tags": ["docs"],
    "note": "The pricing table was missing from the markdown output.",
    "url": "https://example.com/pricing",
    "pageNumbers": [1],
    "metadata": {
      "format": "markdown"
    }
  }
}

返回:

  • { success, feedbackId, creditsRefunded, creditsRefundedToday?, dailyRefundCap?, dailyCapReached?, alreadySubmitted?, warning? } JSON。

4. Crawl 工具 (firecrawl_crawl)

启动一个爬取作业,轮询直到达到终止状态,并返回最终的爬取状态/数据。

最适合:

  • 从多个相关页面提取内容,当您需要全面覆盖时。

不推荐用于:

  • 从单个页面提取内容(使用 scrape)
  • 当令牌限制是问题时(使用 map + scrape 以获得更严格的控制)
  • 当您需要快速结果时(爬取可能很慢)

警告: 爬取响应可能非常大,可能超出令牌限制。限制爬取深度和页面数量,或使用 map + scrape 以获得更严格的控制。

常见错误:

  • 将 limit 或 maxDiscoveryDepth 设置过高(导致令牌溢出)
  • 对单个页面使用 crawl(应使用 scrape)

提示示例:

"获取 example.com/blog 前两层的所有博客文章。"

使用示例:

{
  "name": "firecrawl_crawl",
  "arguments": {
    "url": "https://example.com/blog/*",
    "maxDiscoveryDepth": 2,
    "limit": 100,
    "allowExternalLinks": false,
    "deduplicateSimilarURLs": true
  }
}

返回:

  • 内部轮询后的最终爬取状态和数据,包括 idstatuscompletedtotalcreditsUsedexpiresAtnextdata。如果之后需要重新检查作业,请将返回的 idfirecrawl_check_crawl_status 一起使用。

5. 检查爬取状态 (firecrawl_check_crawl_status)

按 ID 检查现有爬取作业的状态和结果。

{
  "name": "firecrawl_check_crawl_status",
  "arguments": {
    "id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

返回:

  • 响应包含爬取作业的状态:

6. Parse 工具 (firecrawl_parse)

使用 Firecrawl 的 /v2/parse 端点解析本地文件或托管的上传引用。

最适合: PDF、Word 文档、电子表格、HTML 文件和其他需要 markdown 或结构化 JSON 输出的文档。托管的 MCP 支持两步上传引用流程;本地直接文件读取需要自托管的 FIRECRAWL_API_URL

不推荐用于: 远程 URL(使用 scrape)、一次调用中的多个文件(每个文件调用一次 parse)、或仅限浏览器的操作,如截图和点击。

托管 MCP 流程: 托管的 MCP 无法直接读取调用者的文件系统。使用 filePath 调用 firecrawl_parse 以接收短期有效的上传命令和 nextToolCall,在本地上传文件,然后使用返回的 uploadRef 再次调用 firecrawl_parse。铸造托管上传 URL 需要 Firecrawl 认证或无密钥资格。在本地 npx firecrawl-mcp 模式下,直接文件解析目前需要指向自托管 Firecrawl API 的 FIRECRAWL_API_URL;仅使用云 API 密钥的本地服务器无法通过此工具读取和上传文件。

使用示例:

{
  "name": "firecrawl_parse",
  "arguments": {
    "filePath": "/absolute/path/to/document.pdf",
    "formats": ["markdown"],
    "parsers": ["pdf"],
    "zeroDataRetention": true
  }
}

返回: 解析的文档内容或带有 nextToolCall 的托管上传说明。

7. 使用 Scrape JSON 的结构化数据

对于已知页面的结构化数据,每个 URL 调用一次 firecrawl_scrape,并设置 formats: ["json"]。将提取提示和 JSON schema 放在 jsonOptions 中。

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com/product",
    "formats": ["json"],
    "jsonOptions": {
      "prompt": "Extract the product name, price, and description.",
      "schema": {
        "type": "object",
        "properties": {
          "name": { "type": "string" },
          "price": { "type": "number" },
          "description": { "type": "string" }
        },
        "required": ["name", "price"]
      }
    }
  }
}

当 URL 未知或数据跨多个网站时,使用 firecrawl_agent 进行多源研究。

8. Agent 工具 (firecrawl_agent)

自主网络研究代理,当您不知道 URL 或答案跨多个网站时返回结构化数据。描述您需要的字段,可选地传递 JSON schema 和种子 URL,代理会搜索、导航、阅读页面,并返回跨来源汇总的 JSON。将其用于实体及其字段、列表和数据集,以及需要导航才能到达数据的页面。对于单个已知 URL,请改用带 JSON 格式的 firecrawl_scrape

工作原理:

代理自主执行网络搜索、跟随链接、阅读页面并收集数据。这是异步运行的——它立即返回一个作业 ID,您轮询 firecrawl_agent_status 以检查完成状态并检索结果。

异步工作流程:

  1. 使用您的提示/schema 调用 firecrawl_agent → 返回作业 ID
  2. 在代理研究时做其他工作(复杂查询可能需要几分钟)
  3. 使用作业 ID 轮询 firecrawl_agent_status 以检查进度
  4. 当状态为 "completed" 时,响应包含提取的数据

最适合:

  • 您不知道确切 URL 的复杂研究任务
  • 多源数据收集
  • 查找分散在网络上的信息
  • 您可以在等待结果时做其他工作的任务

不推荐用于:

  • 您知道 URL 的简单单页抓取(使用带 JSON 格式的 scrape——更快更便宜)

参数:

  • prompt:您想要的数据的自然语言描述(必填,最多 10,000 个字符)
  • urls:可选的 URL 数组,用于将代理聚焦到特定页面
  • schema:可选的结构化输出 JSON schema

提示示例:

"查找 Firecrawl 的创始人和他们的背景"

使用示例(启动代理,然后轮询结果):

{
  "name": "firecrawl_agent",
  "arguments": {
    "prompt": "Find the top 5 AI startups founded in 2024 and their funding amounts",
    "schema": {
      "type": "object",
      "properties": {
        "startups": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": { "type": "string" },
              "funding": { "type": "string" },
              "founded": { "type": "string" }
            }
          }
        }
      }
    }
  }
}

然后使用返回的作业 ID 轮询 firecrawl_agent_status

使用示例(带 URL - 代理聚焦特定页面):

{
  "name": "firecrawl_agent",
  "arguments": {
    "urls": ["https://docs.firecrawl.dev", "https://firecrawl.dev/pricing"],
    "prompt": "Compare the features and pricing information from these pages"
  }
}

返回:

  • 用于状态检查的作业 ID。使用 firecrawl_agent_status 轮询结果。

9. 检查代理状态 (firecrawl_agent_status)

检查代理作业的状态并在完成时检索结果。启动代理后使用此工具轮询结果。

轮询模式: 代理研究对于复杂查询可能需要几分钟。定期轮询此端点(例如,每 10-30 秒),直到状态为 "completed" 或 "failed"。

{
  "name": "firecrawl_agent_status",
  "arguments": {
    "id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

可能的状态:

  • processing:代理仍在研究——稍后再检查
  • completed:研究完成——响应包含提取的数据
  • failed:发生错误

10. Interact 工具 (firecrawl_interact)

与新的 URL 或已由 firecrawl_scrape 打开的页面进行交互。 最适合: 点击、输入、导航以及从动态页面提取状态,无需恢复已弃用的浏览器工具。

使用选项:

  • 传入 url 可在一次 MCP 调用中抓取并打开页面进行交互。
  • 传入 scrapeId 可继续与已抓取的页面交互。
  • 传入 urlscrapeId 中的恰好一个,再加上 promptcode 中的恰好一个。

使用示例:

{
  "name": "firecrawl_interact",
  "arguments": {
    "url": "https://example.com",
    "prompt": "Click the pricing link and summarize the visible plans"
  }
}

返回: 交互结果,以及 URL 模式下派生的 scrapeId,用于后续操作或清理。

11. 停止交互工具(firecrawl_interact_stop

当您完成交互后,停止已抓取页面的交互会话。

{
  "name": "firecrawl_interact_stop",
  "arguments": {
    "scrapeId": "scrape-id-here"
  }
}

12. 研究工具(firecrawl_research_*

通过研究 MCP 工具搜索和检查论文及 GitHub 仓库。

涵盖: 生物医学、生命科学和临床文献(PubMed、bioRxiv、medRxiv)以及 arXiv 和其他科学来源的论文摘要和全文。

可用的研究工具:

  • firecrawl_research_search_papers:使用自然语言查询搜索论文元数据和摘要,可选用作者、类别和日期筛选。
  • firecrawl_research_inspect_paper:检索一个论文 ID(arXiv、PMC、PMID 或 DOI)的规范元数据。
  • firecrawl_research_related_papers:通过引文图从一个或多个锚点论文扩展。
  • firecrawl_research_read_paper:阅读特定论文的全文段落。

最适合: 文献综述、论文查找和仓库发现工作流,此时代理需要聚焦的研究界面,而非通用网页抓取。

firecrawl_searchcategories: ["research"] 是不同的界面:它将普通网页结果筛选为研究相关网站,并返回页面片段,而非论文记录。当问题涉及文献本身时使用这些工具,并传递同一问题的多个不同表述——它们会返回比单一查询更多不同的论文。

13. 监控工具(firecrawl_monitor_*

创建和管理定期页面监控。监控器按计划运行抓取或爬取,将每次结果与上次保留的快照进行差异比较,并可通过 webhook 或电子邮件通知。

最适合:

  • 随时间观察一个或几个页面
  • 使用通俗易懂的目标对有意义的变化发出警报
  • 跟踪检查历史和页面级差异

推荐的创建模式:

使用 pagepages 加上 goal。MCP 服务器以 30 分钟的计划构建监控请求,API 自动启用有意义变化判断。

当设置 goal 时,有意义变化判断会自动运行。页面 webhook 在 monitor.page 事件上暴露 isMeaningfuljudgment

将目标写为简洁的 2-3 句监控指令。说明应触发警报的内容,保留用户给出的任何范围,并且仅在请求中明确时包含特定于意图的排除项。诸如空白、仅格式更改、请求 ID、跟踪参数、通用元数据和无关页面框架等通用噪音已由判断器处理,因此不要在每项目标中重复。如果用户表述模糊,保持目标宽泛;如果他们要求广泛监控或“任何更改”,请保留。如果用户表示不关心某些内容,请明确包含该内容。

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "page": "https://example.com/pricing",
    "goal": "Alert when pricing, packaging, or launch messaging changes."
  }
}

带 webhook 的多个页面:

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "pages": ["https://example.com/pricing", "https://example.com/changelog"],
    "goal": "Alert when pricing, packaging, or launch messaging changes.",
    "webhookUrl": "https://example.com/webhooks/firecrawl"
  }
}

高级创建请求:

当您需要爬取目标、JSON 更改跟踪、自定义保留或显式 judgeEnabled 控制时,传入 body

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "body": {
      "name": "Docs monitor",
      "schedule": { "text": "hourly", "timezone": "UTC" },
      "goal": "Alert when docs pages add, remove, or materially change API behavior.",
      "targets": [{ "type": "crawl", "url": "https://example.com/docs" }]
    }
  }
}

其他监控工具:

  • firecrawl_monitor_list:列出监控器。
  • firecrawl_monitor_get:获取一个监控器。
  • firecrawl_monitor_update:更新字段,包括 goaljudgeEnabledwebhooknotification
  • firecrawl_monitor_run:立即触发检查。
  • firecrawl_monitor_delete:删除监控器(破坏性操作;仅在用户意图移除时调用)。
  • firecrawl_monitor_checks:列出检查,可选按状态筛选。
  • firecrawl_monitor_check:获取页面级结果,包括 diffsnapshotjudgment.meaningfuljudgment.meaningfulChanges

14. 开发者搜索工具(firecrawl_developer_search

搜索为编码代理构建的索引。该索引涵盖 GitHub issues、已合并的拉取请求、仓库 README 和精选文档站点。

最适合: 编程问题——代码行为、库或框架、API 契约、错误消息或已知 bug。

参数:

{
  "name": "firecrawl_developer_search",
  "arguments": {
    "query": "how do I configure retries",
    "k": 10,
    "skills": "only"
  }
}
  • query(必需):开发者问题或搜索短语。
  • k:排名结果数量。默认值为 10,最大值为 100。
  • skills:设置为 "only" 可仅搜索代理技能文件。

返回: 排名结果。每个结果带有 ID、来源类型(issuepull_requestreadmedoc)、URL、标题以及 Markdown 格式的匹配段落。

firecrawl_searchcategories: ["developer"] 在网页结果旁边搜索同一索引。当您想要匹配段落、skills 筛选或响应中不包含网页结果时,请改用此工具。仅搜索端点同时暴露两个工具,同样的选择也适用于那里。

日志系统

服务器包含全面的日志记录:

  • 操作状态和进度
  • 性能指标
  • 速率限制跟踪
  • 错误条件

示例日志消息:

[INFO] Firecrawl MCP Server initialized successfully
[INFO] Starting scrape for URL: https://example.com
[ERROR] Rate limit exceeded

错误处理

服务器提供健壮的错误处理:

  • API 速率限制错误反馈给 MCP 客户端
  • 详细的错误消息
  • 网络弹性

示例错误响应:

{
  "content": [
    {
      "type": "text",
      "text": "Error: Rate limit exceeded"
    }
  ],
  "isError": true
}

开发

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

贡献

  1. Fork 仓库
  2. 创建您的功能分支
  3. 运行测试:npm test
  4. 提交拉取请求

感谢贡献者

感谢 @vrknetha@cawstudios 的初始实现!

感谢 MCP.so 和 Klavis AI 的托管,以及 @gstarwd@xiangkaiz@zihaolin96 集成我们的服务器。

许可证

MIT 许可证——详情请参阅 LICENSE 文件