项目简介
Firecrawl Lite MCP 服务器是一个轻量级、完全本地化的解决方案,用于网页内容抓取和结构化数据提取。它不依赖于任何外部云服务,所有处理都在您的本地机器上完成,确保数据隐私。该服务器通过将Puppeteer浏览器自动化技术与您自选的LLM(如OpenAI, Anthropic, Ollama等)相结合,提供强大的网页交互和智能提取能力。它通过Model Context Protocol (MCP) 标准协议与兼容的LLM客户端(如Claude Desktop, Claude Code CLI)通信。
主要功能点
- 隐私优先的本地处理: 所有网页抓取和数据提取操作都在您的本地机器上执行,确保您的数据不会发送给第三方。
- 成本效益: 无需额外的订阅费用,您只需支付您所选的LLM提供商的使用费用。
- 高性能与简洁: 轻量级设计,快速启动,支持Docker部署,资源占用少。
- 强大的网页抓取工具:
- 'scrape_page': 从单个网页提取内容,支持只提取主要内容。
- 'batch_scrape': 批量抓取多个URL的内容,提高效率。
- 智能数据提取工具:
- 'extract_data': 利用您的LLM,根据自然语言提示从网页中提取结构化数据。
- 'extract_with_schema': 结合JSON Schema,精确指导LLM提取符合预定义结构的数据。
- 反爬虫机制: 内置真实的浏览器指纹模拟、随机延迟、现代用户代理和视口模拟等功能,提高抓取成功率。
安装步骤
您可以通过npm全局安装,或者使用npx临时运行(推荐)。
1. 使用npx(推荐) 无需安装,直接运行。适用于大多数MCP客户端配置。
2. 全局安装 如果您希望全局安装,可以使用以下命令:
npm install -g @ariangibson/firecrawl-lite-mcp-server
服务器配置
Firecrawl Lite MCP服务器需要您的LLM API密钥和相关信息才能工作。这些配置通常作为环境变量提供,并通过MCP客户端传递给服务器。
环境变量设置示例: 您可以在运行服务器的环境中设置这些变量,或者通过MCP客户端配置。
- 'LLM_API_KEY': 您的LLM API密钥(例如:'sk-your-llm-api-key')。
- 'LLM_PROVIDER_BASE_URL': 您的LLM提供商的API基础URL(例如:'https://api.x.ai/v1'、'https://api.openai.com/v1' 或 'http://localhost:11434/v1' 用于本地Ollama)。
- 'LLM_MODEL': 您希望使用的LLM模型名称(例如:'grok-code-fast-1'、'gpt-4o-mini' 或 'llama2')。
MCP客户端配置示例(以Claude桌面版为例): 将以下配置添加到您MCP客户端的配置文件中(例如 '~/Library/Application Support/Claude/claude_desktop_config.json')。
{ "mcpServers": { "firecrawl-lite": { "command": "npx", // 启动服务器的命令,如果全局安装则是 "firecrawl-lite-mcp-server" "args": ["-y", "@ariangibson/firecrawl-lite-mcp-server"], // 传递给命令的参数,用于npx运行 "env": { // 环境变量配置,MCP服务器将使用这些值 "LLM_API_KEY": "您的LLM_API_密钥", "LLM_PROVIDER_BASE_URL": "您的LLM_提供商_基础URL", "LLM_MODEL": "您的LLM_模型名称" } } } }
请将 '您的LLM_API_密钥'、'您的LLM_提供商_基础URL' 和 '您的LLM_模型名称' 替换为您的实际LLM配置。
配置代理(可选): 如果您需要通过代理访问目标网站或LLM API,可以设置以下环境变量:
- 'PROXY_SERVER_URL': 代理服务器的URL(例如:'http://your-proxy.com:8080')。
- 'PROXY_SERVER_USERNAME': 代理服务器的用户名(如果需要认证)。
- 'PROXY_SERVER_PASSWORD': 代理服务器的密码(如果需要认证)。
完成配置后,请重启您的MCP客户端以加载新的服务器设置。
基本使用方法
一旦服务器配置完成并被MCP客户端识别,您就可以通过LLM调用其提供的工具了。以下是调用不同工具的示例请求结构,您可以在与LLM交互时通过自然语言或特定指令触发这些工具。
1. 抓取单个网页内容 ('scrape_page')
- 用途: 获取指定URL的网页内容。
- 示例请求:
{ "name": "scrape_page", "arguments": { "url": "https://example.com", "onlyMainContent": true // 可选,设置为false则抓取整个页面 } }
2. 批量抓取多个URL ('batch_scrape')
- 用途: 同时处理多个网页的抓取请求。
- 示例请求:
{ "name": "batch_scrape", "arguments": { "urls": ["https://example.com", "https://example.org"], "onlyMainContent": true } }
3. 利用LLM提取数据 ('extract_data')
- 用途: 从网页内容中提取结构化数据,通过自然语言提示告诉LLM要提取什么。
- 示例请求:
{ "name": "extract_data", "arguments": { "urls": ["https://example.com/article"], "prompt": "提取文章的主标题和摘要" } }
4. 基于JSON Schema提取数据 ('extract_with_schema')
- 用途: 严格按照预定义的JSON Schema从网页中提取数据,确保输出格式一致。
- 示例请求:
{ "name": "extract_with_schema", "arguments": { "urls": ["https://example.com/products"], "schema": { "type": "object", "properties": { "productName": {"type": "string"}, "price": {"type": "number"}, "features": {"type": "array", "items": {"type": "string"}} } }, "prompt": "从产品页面中提取产品名称、价格和主要功能" } }
信息
分类
网页与API