Firecrawl MCP Server 仓库介绍
仓库名称: firecrawl-mcp-server
作者: mendableai
仓库URL: 访问仓库
描述: 官方Firecrawl MCP服务器 - 为Cursor、Claude及其他LLM客户端提供强大的网页抓取功能
作者: mendableai
仓库URL: 访问仓库
描述: 官方Firecrawl MCP服务器 - 为Cursor、Claude及其他LLM客户端提供强大的网页抓取功能
项目概述
Firecrawl MCP Server是一个实现模型上下文协议(Model Context Protocol, MCP)的服务器项目,集成了Firecrawl以增强网页抓取能力。这一工具的开发旨在为各种大型语言模型(LLM)如Cursor和Claude提供高度自动化和智能化的网页数据获取技术。
特别致谢 @vrknetha 和 @cawstudios 为初始实现所作贡献!
功能特点
Firecrawl MCP Server具备广泛的功能来优化数据抓取流程:
- 网页抓取与动态渲染支持: 通过JavaScript渲染提高抓取效率和数据完整性。
- 网址发现与爬取: 自动搜索并抓取可用网址,支持深层次的数据探索。
- 内容提取与批量处理: 自动化批量数据提取,加速信息收集过程。
- 自动重试与指数退避: 智能处理失败请求,确保抓取任务顺利完成。
- 云端API信用监控: 监控API信用使用率,预防突发服务中断。
- 全面的日志系统: 提供操作状态、性能指标及错误处理的详细记录。
- 多种实例支持: 兼容云端及自托管的FireCrawl实例,灵活的部署选项。
- 移动/桌面视图支持: 适应多种浏览器视图,确保内容显示的兼容性。
- 智能内容过滤: 根据标签进行内容包括/排除处理,提高数据质量。
安装说明
使用npx运行
通过简单的命令即可运行Firecrawl MCP Server:
env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp
手动安装
使用npm进行全局安装:
npm install -g firecrawl-mcp
在Cursor上运行
对于Cursor的配置(需要版本0.45.6或更高):
- 打开Cursor设置。
- 导航到Features > MCP Servers。
- 点击“+ Add New MCP Server”。
- 输入以下信息:
- 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安装(遗留方法)
通过Smithery自动安装适用于Claude Desktop的FireCrawl:
npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude
配置指南
环境变量配置
使用云端API时必需
- FIRECRAWL_API_KEY: 您的FireCrawl API密钥
- 使用云端API(默认)时必填
- 使用自托管实例并配置
FIRECRAWल_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",
"FIRECRAWल_RETRY_MAX_DELAY": "30000",
"FIRECRAW़L_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, // 当信用使用达到该水平时给予严重警告
},
};
这些配置控制:
-
重试行为
- 自动重试因限速失败的请求
- 使用指数退避避免API过度加载
- 示例:使用默认设置,重试会在以下时间点进行:
- 第一次重试:1秒后
- 第二次重试:2秒后
- 第三次重试:4秒后(在maxDelay封顶)
-
信用使用监控
- 跟踪云端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": "Batch operation queued with ID: batch_1. Use firecrawl_check_batch_status to check progress."
}
],
"isError": false
}
3. 批量状态检查工具 (firecrawl_check_batch_status
)
检查批量操作的状态。
{
"name": "firecrawl_check_batch_status",
"arguments": {
"id": "batch_1"
}
}
4. 搜索工具 (firecrawl_search
)
在网络中搜索并可选提取搜索结果内容。
{
"name": "firecrawl_search",
"arguments": {
"query": "your search 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": "Extract product information including name, price, and description",
"systemPrompt": "You are a helpful assistant that extracts product information",
"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": "Example Product",
"price": 99.99,
"description": "This is an example product description"
}
}
],
"isError": false
}
信息提取工具选项:
- urls: 要从中提取信息的URL数组
- prompt: 定制LLM提取的提示
- systemPrompt: 引导LLM的系统提示
- schema: 用于结构化数据提取的JSON schema
- allowExternalLinks: 允许从外部链接提取
- enableWebSearch: 启用网页搜索以获取额外上下文
- includeSubdomains: 包含子域名进行提取
在使用自托管实例时,提取将使用您配置的LLM。对于云端API,将使用FireCrawl管理的LLM服务。
日志系统
服务器包括详尽的日志记录:
- 操作状态与进度
- 性能指标
- 信用使用监控
- 速率限制跟踪
- 错误情况
示例日志消息:
[INFO] FireCrawl MCP Server initialized successfully
[INFO] Starting scrape for URL: https://example.com
[INFO] Batch operation queued with ID: batch_1
[WARNING] Credit usage has reached warning threshold
[ERROR] Rate limit exceeded, retrying in 2s...
错误处理
服务器提供强大的错误处理功能:
- 自动重试短暂错误
- 速率限制处理与退避
- 详细的错误信息
- 信用使用警告
- 网络弹性
示例错误响应:
{
"content": [
{
"type": "text",
"text": "Error: Rate limit exceeded. Retrying in 2 seconds..."
}
],
"isError": true
}
开发指南
# 安装依赖
npm install
# 编译
npm run build
# 运行测试
npm test
贡献指南
- Fork仓库
- 创建特性分支
- 运行测试:
npm test
- 提交一个pull request
许可证
本项目采用MIT许可证,详见LICENSE文件以获取更多信息。