Firecrawl MCP
官方为Cursor和Claude等LLM客户端添加强大的网页抓取和搜索功能。
你可以用 Firecrawl MCP 做什么?
- Scrape any URL — Ask your assistant to extract clean, structured data from a single page using
firecrawl_scrape, with JSON schema support for targeted extraction. - Search the web — Use
firecrawl_searchto find information across the web and optionally pull full page content from results. - Map a website — Discover all indexed URLs on a site with
firecrawl_mapto find specific sections before scraping. - Crawl multiple pages — Launch
firecrawl_crawlto extract content from an entire site or section, with configurable depth and page limits. - Run autonomous research — Delegate complex multi-source research to
firecrawl_agentand pollfirecrawl_agent_statusfor structured results. - Interact with pages — Use
firecrawl_interactto click, type, and navigate dynamic pages, then stop sessions withfirecrawl_interact_stop.
文档
Firecrawl MCP 服务器
一个模型上下文协议(MCP)服务器,将 Firecrawl 带给兼容 MCP 的 AI 代理——搜索、抓取并与实时网络交互,获取干净、适合代理使用的上下文。
衷心感谢 @vrknetha、@knacklabs 的初始实现!
功能特性
- 搜索网络并获取完整页面内容
- 搜索为编码代理构建的索引:GitHub 问题、已合并的拉取请求、README 和文档
- 将任何 URL 抓取为干净、结构化的数据
- 与页面交互——点击、导航和操作
- 通过自主代理进行深度研究
- 自动重试和速率限制
- 支持云端和自托管
- 支持 SSE
在 MCP.so 的 playground 或 Klavis AI 上试用我们的 MCP 服务器。
安装
托管 MCP(无密钥免费层)
无需任何设置即可连接到远程托管服务器:
https://mcp.firecrawl.dev/v2/mcp
在无密钥免费层中,scrape、search 和 parse 无需 API 密钥即可使用(有速率限制)。其他工具如 crawl、map 和 agent 仍然需要密钥。
只要用户可以注册,建议优先使用 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_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
- 打开 Cursor 设置
- 转到 Features > MCP Servers
- 点击"+ Add new global MCP server"
- 输入以下代码:
{ "mcpServers": { "firecrawl-mcp": { "command": "npx", "args": ["-y", "firecrawl-mcp"], "env": { "FIRECRAWL_API_KEY": "YOUR-API-KEY" } } } }
在 Cursor v0.45.6 中配置 Firecrawl MCP
- 打开 Cursor 设置
- 转到 Features > MCP Servers
- 点击"+ Add New MCP Server"
- 输入以下内容:
- 名称:"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 Agent 会在适当时自动使用 Firecrawl MCP,但您也可以通过描述您的网页抓取需求来显式请求它。通过 Command+L(Mac)访问 Composer,在提交按钮旁选择"Agent",然后输入您的查询。
在 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 上运行
如需一键安装,请点击下面的安装按钮之一...
如需手动安装,请将以下 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=true、HTTP_STREAMABLE_SERVER=true或SSE_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_PORT、FIRECRAWL_MCP_SEARCH_ENDPOINT 和 FIRECRAWL_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 契约、错误消息、已知 bug):使用 developer search
- 如果您需要在多个未知来源中进行复杂研究: 使用 agent
- 如果您想分析整个网站或某个部分: 使用 crawl(注意限制!)
- 如果您需要交互式浏览器自动化(点击、输入、导航):对新页面使用 interact 并附带 URL,或者当您已经抓取了页面或需要更精细的抓取控制时使用 scrape + interact
快速参考表
| 工具 | 最适合 | 返回 |
|---|---|---|
| scrape | 单页内容 | JSON(首选)或 markdown |
| interact | 与 URL 或已抓取页面交互 | 执行结果 + URL 模式的 scrapeId |
| map | 发现网站上的 URL | URL[] |
| 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"]
}
}
品牌格式: 提取全面的品牌标识(颜色、字体、排版、间距、徽标、UI 组件),用于设计分析或风格复制。
隐私: 设置 redactPII: true 以返回已删除个人身份信息的内容。
返回:
- JSON 结构化数据、markdown、品牌档案或其他指定格式。
2. Map 工具(firecrawl_map)
映射网站以发现站点上所有已索引的 URL。
最适合:
- 在决定抓取什么之前发现网站上的 URL
- 查找网站的特定部分
不推荐用于:
- 当您已经知道需要哪个特定 URL 时(使用 scrape)
- 当您需要页面内容时(映射后使用 scrape)
常见错误:
- 使用 crawl 来发现 URL,而不是 map
提示示例:
"列出 example.com 上的所有 URL。"
用法示例:
{
"name": "firecrawl_map",
"arguments": {
"url": "https://example.com"
}
}
返回:
- 在网站上找到的 URL 数组
3. 搜索工具 (firecrawl_search)
搜索网络,并可选择从搜索结果中提取内容。
最适合:
- 在多个网站中查找特定信息,当您不知道哪个网站包含该信息时。
- 当您需要某个查询最相关的内容时
不建议用于:
- 当您已经知道要抓取哪个网站时(请使用 scrape)
- 当您需要对单个网站进行全面覆盖时(请使用 map 或 crawl)
常见错误:
- 对开放式问题使用 crawl 或 map(请改用 search)
用法示例:
{
"name": "firecrawl_search",
"arguments": {
"query": "latest AI research papers 2023",
"highlights": true,
"limit": 5,
"lang": "en",
"country": "us",
"scrapeOptions": {
"formats": ["markdown"],
"onlyMainContent": true,
"redactPII": true
}
}
}
将 highlights 设置为 true 以请求与查询相关的要点,或设置为 false 以保留原始搜索片段。省略该参数以使用 API 的默认行为。
返回:
- 搜索结果数组(可选包含抓取的内容),外加一个
id字段。在您使用完结果后,将该id传递给firecrawl_search_feedback以退还 1 个积分(搜索消耗 2 个积分)并提高搜索质量。
提示示例:
"查找 2023 年发表的关于 AI 的最新研究论文。"
3b. 搜索反馈工具 (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 端点任务发送结构化反馈。
将此用于 scrape、parse、map 或 search 任务的端点级反馈。对于搜索结果质量的特定反馈,请优先使用 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. 爬取工具 (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
}
}
返回:
- 内部轮询后的最终爬取状态和数据,包括
id、status、completed、total、creditsUsed、expiresAt、next和data。如果您之后需要重新检查任务,请将返回的id与firecrawl_check_crawl_status一起使用。
5. 检查爬取状态 (firecrawl_check_crawl_status)
按 ID 检查现有爬取任务的状态和结果。
{
"name": "firecrawl_check_crawl_status",
"arguments": {
"id": "550e8400-e29b-41d4-a716-446655440000"
}
}
返回:
- 响应包含爬取任务的状态:
6. 解析工具 (firecrawl_parse)
使用 Firecrawl 的 /v2/parse 端点解析本地文件或托管的上传引用。
最适合: PDF、Word 文档、电子表格、HTML 文件以及其他需要 Markdown 或结构化 JSON 输出的文档。托管的 MCP 支持两步上传-引用流程;本地直接读取文件需要自托管的 FIRECRAWL_API_URL。
不建议用于: 远程 URL(请使用 scrape)、一次调用中处理多个文件(每个文件调用一次 parse)、或仅限浏览器的操作(如截图和点击)。
托管的 MCP 流程: 托管的 MCP 无法直接读取调用方的文件系统。调用 firecrawl_parse 并传入 filePath 以获得短期有效的上传命令和 nextToolCall,在本地上传文件,然后使用返回的 uploadRef 再次调用 firecrawl_parse。铸造托管上传 URL 需要 Firecrawl 身份验证或无密钥资格。在本地 npx firecrawl-mcp 模式下,直接文件解析目前需要 FIRECRAWL_API_URL 指向自托管的 Firecrawl API;仅使用云 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 模式放在 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 或多来源研究,请在 Scrape 之前使用 firecrawl_search 或 firecrawl_agent。
8. 代理工具 (firecrawl_agent)
自主网络研究代理。这是一个独立的 AI 代理层,可独立浏览互联网、搜索信息、浏览页面,并根据您的查询提取结构化数据。
工作原理:
该代理会执行网络搜索、跟踪链接、阅读页面并自主收集数据。此操作异步运行——它会立即返回一个任务 ID,您轮询 firecrawl_agent_status 以检查完成情况并获取结果。
异步工作流程:
- 使用您的提示/模式调用
firecrawl_agent→ 返回任务 ID - 在代理研究期间处理其他工作(对于复杂查询可能需要几分钟)
- 使用任务 ID 轮询
firecrawl_agent_status以检查进度 - 当状态为 "completed" 时,响应包含提取的数据
最适合:
- 您不知道确切 URL 的复杂研究任务
- 多来源数据收集
- 查找分散在网络上各处信息
- 您可以在等待结果时处理其他工作的任务
不建议用于:
- 您知道 URL 的简单单页抓取(请使用 scrape 的 JSON 格式——更快且更便宜)
参数:
prompt:您想要数据的自然语言描述(必填,最多 10,000 个字符)urls:可选,用于将代理聚焦到特定页面的 URL 数组schema:可选,用于结构化输出的 JSON 模式
提示示例:
"查找 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. 交互工具 (firecrawl_interact)
与新的 URL 或已由 firecrawl_scrape 打开的页面进行交互。
最适合: 点击、输入、导航并从动态页面提取状态,而无需恢复已弃用的浏览器工具。
用法选项:
- 传入
url以在单个 MCP 调用中抓取并打开页面进行交互。 - 传入
scrapeId以继续与现有已抓取页面交互。 - 恰好传入
url或scrapeId中的一个,以及prompt或code中的一个。
用法示例:
{
"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 仓库。
可用的研究工具:
firecrawl_research_search_papers:搜索研究论文。firecrawl_research_inspect_paper:检查单篇论文。firecrawl_research_related_papers:查找相关论文。firecrawl_research_read_paper:阅读论文内容。firecrawl_research_search_github:搜索 GitHub 仓库。
最适合: 文献综述、论文查找和仓库发现工作流程,此时代理需要聚焦的研究界面,而不是一般的网络抓取。
13. 监控工具 (firecrawl_monitor_*)
创建和管理定期页面监控。监控器会运行定时抓取或爬取,将每次结果与最后保留的快照进行对比,并可以通过 webhook 或电子邮件通知。
最适合:
- 随时间监控一个页面或几个页面
- 使用纯英文目标对重要变化进行提醒
- 跟踪检查历史和页面级差异
推荐的创建模式:
使用 page 或 pages 加上 goal。MCP 服务器会以 30 分钟的调度构建监控请求,API 会自动启用有意义的变更判断。
当设置了 goal 时,有意义的变更判断会自动运行。页面 webhook 会在 monitor.page 事件上公开 isMeaningful 和 judgment。
将目标写成简洁的 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:更新字段,包括goal、judgeEnabled、webhook和notification。firecrawl_monitor_run:立即触发检查。firecrawl_monitor_delete:删除监控器(破坏性操作;仅在用户打算移除时才调用)。firecrawl_monitor_checks:列出检查,可选择按状态筛选。firecrawl_monitor_check:获取页面级结果,包括diff、snapshot、judgment.meaningful和judgment.meaningfulChanges。
14. 开发者搜索工具(firecrawl_developer_search)
搜索为编码代理构建的索引。该索引涵盖 GitHub issue、已合并的拉取请求、仓库 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、来源类型(issue、pull_request、readme 或 doc)、URL、标题以及 Markdown 格式的匹配段落。
firecrawl_search 与 categories: ["developer"] 一起在网页结果之外搜索同一索引。当您只需要段落而不需要网页结果时,请改用此工具。仅搜索端点不公开此工具;它保留固定的六个工具集,firecrawl_search 可在那里访问开发者索引。
日志系统
服务器包含全面的日志记录:
- 操作状态和进度
- 性能指标
- 速率限制跟踪
- 错误条件
示例日志消息:
[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
贡献
- 复刻(Fork)仓库
- 创建您的功能分支
- 运行测试:
npm test - 提交拉取请求
感谢贡献者
感谢 @vrknetha、@cawstudios 的初始实现!
感谢 MCP.so 和 Klavis AI 的托管,以及 @gstarwd、@xiangkaiz 和 @zihaolin96 集成我们的服务器。
许可证
MIT 许可证 - 详情请参阅 LICENSE 文件