Firecrawl MCP Server

Firecrawl MCP Server

镜子 (jìng zi)

MCP-Mirror

研究与数据
访问服务器

README

Firecrawl MCP 服务器

一个模型上下文协议 (MCP) 服务器实现,它与 Firecrawl 集成,以实现网络抓取功能。

非常感谢 @vrknetha, @cawstudios 的初始实现!

功能

  • 支持抓取、爬取、搜索、提取、深度研究和批量抓取
  • 使用 JS 渲染进行网页抓取
  • URL 发现和爬取
  • 网页搜索与内容提取
  • 自动重试与指数退避
    • 通过内置速率限制实现高效的批量处理
  • 云 API 的信用使用监控
  • 综合日志系统
  • 支持云端和自托管 FireCrawl 实例
  • 移动/桌面视口支持
  • 具有标签包含/排除功能的智能内容过滤

安装

使用 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 中配置 FireCrawl MCP:

  1. 打开 Cursor 设置
  2. 转到 Features > MCP Servers
  3. 点击 "+ Add New MCP Server"
  4. 输入以下内容:
    • Name: "firecrawl-mcp" (或您喜欢的名称)
    • Type: "command"
    • 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 密钥。

添加后,刷新 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_HERE"
      }
    }
  }
}

通过 Smithery 安装 (Legacy)

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

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

配置

环境变量

云 API 必需

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

可选配置

重试配置
  • FIRECRAWL_RETRY_MAX_ATTEMPTS: 最大重试次数 (默认: 3)
  • FIRECRAWL_RETRY_INITIAL_DELAY: 首次重试前的初始延迟(毫秒)(默认: 1000)
  • FIRECRAWL_RETRY_MAX_DELAY: 重试之间的最大延迟(毫秒)(默认: 10000)
  • FIRECRAWL_RETRY_BACKOFF_FACTOR: 指数退避乘数 (默认: 2)
信用使用监控
  • FIRECRAWL_CREDIT_WARNING_THRESHOLD: 信用使用警告阈值 (默认: 1000)
  • FIRECRAWL_CREDIT_CRITICAL_THRESHOLD: 信用使用临界阈值 (默认: 100)

配置示例

对于具有自定义重试和信用监控的云 API 使用:

# 云 API 必需
export FIRECRAWL_API_KEY=your-api-key

# 可选重试配置
export FIRECRAWL_RETRY_MAX_ATTEMPTS=5        # 增加最大重试次数
export FIRECRAWL_RETRY_INITIAL_DELAY=2000    # 从 2 秒延迟开始
export FIRECRAWL_RETRY_MAX_DELAY=30000       # 最大 30 秒延迟
export FIRECRAWL_RETRY_BACKOFF_FACTOR=3      # 更激进的退避

# 可选信用监控
export FIRECRAWL_CREDIT_WARNING_THRESHOLD=2000    # 警告阈值为 2000 信用点
export FIRECRAWL_CREDIT_CRITICAL_THRESHOLD=500    # 临界阈值为 500 信用点

对于自托管实例:

# 自托管必需
export FIRECRAWL_API_URL=https://firecrawl.your-domain.com

# 自托管的可选身份验证
export FIRECRAWL_API_KEY=your-api-key  # 如果您的实例需要身份验证

# 自定义重试配置
export FIRECRAWL_RETRY_MAX_ATTEMPTS=10
export FIRECRAWL_RETRY_INITIAL_DELAY=500     # 从更快的重试开始

与 Claude Desktop 一起使用

将其添加到您的 claude_desktop_config.json

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

        "FIRECRAWL_RETRY_MAX_ATTEMPTS": "5",
        "FIRECRAWL_RETRY_INITIAL_DELAY": "2000",
        "FIRECRAWL_RETRY_MAX_DELAY": "30000",
        "FIRECRAWL_RETRY_BACKOFF_FACTOR": "3",

        "FIRECRAWL_CREDIT_WARNING_THRESHOLD": "2000",
        "FIRECRAWL_CREDIT_CRITICAL_THRESHOLD": "500"
      }
    }
  }
}

系统配置

服务器包含几个可通过环境变量设置的可配置参数。 以下是未配置时的默认值:

const CONFIG = {
  retry: {
    maxAttempts: 3, // 速率限制请求的重试次数
    initialDelay: 1000, // 首次重试前的初始延迟(毫秒)
    maxDelay: 10000, // 重试之间的最大延迟(毫秒)
    backoffFactor: 2, // 指数退避的乘数
  },
  credit: {
    warningThreshold: 1000, // 信用使用量达到此水平时发出警告
    criticalThreshold: 100, // 信用使用量达到此水平时发出严重警报
  },
};

这些配置控制:

  1. 重试行为

    • 自动重试由于速率限制而失败的请求
    • 使用指数退避以避免压垮 API
    • 示例:使用默认设置,将尝试以下重试:
      • 第一次重试:1 秒延迟
      • 第二次重试:2 秒延迟
      • 第三次重试:4 秒延迟(上限为 maxDelay)
  2. 信用使用监控

    • 跟踪云 API 使用的 API 信用消耗
    • 在指定的阈值提供警告
    • 帮助防止意外的服务中断
    • 示例:使用默认设置:
      • 剩余 1000 信用点时发出警告
      • 剩余 100 信用点时发出严重警报

速率限制和批量处理

服务器利用 FireCrawl 的内置速率限制和批量处理功能:

  • 使用指数退避自动处理速率限制
  • 用于批量操作的高效并行处理
  • 智能请求排队和限制
  • 自动重试瞬时错误

可用工具

1. 抓取工具 (firecrawl_scrape)

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

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com",
    "formats": ["markdown"],
    "onlyMainContent": true,
    "waitFor": 1000,
    "timeout": 30000,
    "mobile": false,
    "includeTags": ["article", "main"],
    "excludeTags": ["nav", "footer"],
    "skipTlsVerification": false
  }
}

2. 批量抓取工具 (firecrawl_batch_scrape)

使用内置速率限制和并行处理高效地抓取多个 URL。

{
  "name": "firecrawl_batch_scrape",
  "arguments": {
    "urls": ["https://example1.com", "https://example2.com"],
    "options": {
      "formats": ["markdown"],
      "onlyMainContent": true
    }
  }
}

响应包括用于状态检查的操作 ID:

{
  "content": [
    {
      "type": "text",
      "text": "批量操作已排队,ID:batch_1。 使用 firecrawl_check_batch_status 检查进度。"
    }
  ],
  "isError": false
}

3. 检查批量状态 (firecrawl_check_batch_status)

检查批量操作的状态。

{
  "name": "firecrawl_check_batch_status",
  "arguments": {
    "id": "batch_1"
  }
}

4. 搜索工具 (firecrawl_search)

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

{
  "name": "firecrawl_search",
  "arguments": {
    "query": "您的搜索查询",
    "limit": 5,
    "lang": "en",
    "country": "us",
    "scrapeOptions": {
      "formats": ["markdown"],
      "onlyMainContent": true
    }
  }
}

5. 爬取工具 (firecrawl_crawl)

使用高级选项启动异步爬取。

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

6. 提取工具 (firecrawl_extract)

使用 LLM 功能从网页中提取结构化信息。 支持云 AI 和自托管 LLM 提取。

{
  "name": "firecrawl_extract",
  "arguments": {
    "urls": ["https://example.com/page1", "https://example.com/page2"],
    "prompt": "提取产品信息,包括名称、价格和描述",
    "systemPrompt": "您是一个有用的助手,可以提取产品信息",
    "schema": {
      "type": "object",
      "properties": {
        "name": { "type": "string" },
        "price": { "type": "number" },
        "description": { "type": "string" }
      },
      "required": ["name", "price"]
    },
    "allowExternalLinks": false,
    "enableWebSearch": false,
    "includeSubdomains": false
  }
}

示例响应:

{
  "content": [
    {
      "type": "text",
      "text": {
        "name": "示例产品",
        "price": 99.99,
        "description": "这是一个示例产品描述"
      }
    }
  ],
  "isError": false
}

提取工具选项:

  • urls: 要从中提取信息的 URL 数组
  • prompt: 用于 LLM 提取的自定义提示
  • systemPrompt: 用于指导 LLM 的系统提示
  • schema: 用于结构化数据提取的 JSON 模式
  • allowExternalLinks: 允许从外部链接提取
  • enableWebSearch: 启用网络搜索以获取更多上下文
  • includeSubdomains: 在提取中包含子域

使用自托管实例时,提取将使用您配置的 LLM。 对于云 API,它使用 FireCrawl 的托管 LLM 服务。

日志系统

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

  • 操作状态和进度
  • 性能指标
  • 信用使用监控
  • 速率限制跟踪
  • 错误情况

示例日志消息:

[INFO] FireCrawl MCP 服务器已成功初始化
[INFO] 开始抓取 URL:https://example.com
[INFO] 批量操作已排队,ID:batch_1
[WARNING] 信用使用量已达到警告阈值
[ERROR] 超过速率限制,将在 2 秒后重试...

错误处理

服务器提供强大的错误处理:

  • 自动重试瞬时错误
  • 使用退避处理速率限制
  • 详细的错误消息
  • 信用使用警告
  • 网络弹性

示例错误响应:

{
  "content": [
    {
      "type": "text",
      "text": "错误:超过速率限制。 将在 2 秒后重试..."
    }
  ],
  "isError": true
}

开发

# 安装依赖
npm install

# 构建
npm run build

# 运行测试
npm test

贡献

  1. Fork 存储库
  2. 创建您的功能分支
  3. 运行测试:npm test
  4. 提交 pull request

许可证

MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取。它允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python
Substack Reader

Substack Reader

允许从 Adam Mancini 在 Substack 上的 Trade Companion 获取和阅读仅限订阅者内容,使 Claude 能够访问和讨论最新的金融交易文章。

本地
Python