Skip to main content
Glama
Replicant-Partners

Firecrawl Agent MCP Server

README.md8.23 kB
# Firecrawl Agent MCP Server A Model Context Protocol (MCP) server that provides AI-powered web data extraction and research capabilities through [Firecrawl's Agent API](https://www.firecrawl.dev/agent). ## Features 🤖 **AI Agent Mode**: Let the agent autonomously search, navigate, and gather data from complex websites 🔍 **Web Search**: Search and scrape multiple results at once 📄 **Single Page Scraping**: Extract content from specific URLs 📊 **Structured Data**: Define JSON schemas for type-safe data extraction 💰 **Cost Control**: Set maximum credit limits per request ⚡ **Async Jobs**: Start long-running tasks and poll for results ## What is Firecrawl Agent? Firecrawl Agent is a magic API that: - **No URLs Required**: Just describe what you need via prompt - **Autonomous Navigation**: Searches and navigates deep into sites to find your data - **Parallel Processing**: Processes multiple sources simultaneously for faster results - **Structured Output**: Returns data in your specified JSON schema format Perfect for: - Research tasks across multiple websites - Extracting structured data (company info, pricing, contacts) - Finding hard-to-reach information - Competitive analysis and market research ## Installation ### 1. Clone or Copy Files ```bash cd firecrawl-agent-mcp ``` ### 2. Install Dependencies ```bash npm install ``` ### 3. Configure API Key Copy the example environment file and add your Firecrawl API key: ```bash cp .env.example .env ``` Edit `.env` and add your API key: ```env FIRECRAWL_API_KEY=fc-YOUR_API_KEY_HERE ``` Get your API key from: https://www.firecrawl.dev/ ### 4. Build the Server ```bash npm run build ``` ## Configuration in Claude Code Add the Firecrawl Agent MCP server to your Claude Code configuration: ### Option 1: Edit `.claude/settings.json` ```json { "mcpServers": { "firecrawl-agent": { "command": "node", "args": ["/absolute/path/to/firecrawl-agent-mcp/dist/server.js"], "env": { "FIRECRAWL_API_KEY": "fc-YOUR_API_KEY_HERE" } } } } ``` ### Option 2: Use `.mcp.json` in Project Root ```json { "mcpServers": { "firecrawl-agent": { "command": "node", "args": ["./firecrawl-agent-mcp/dist/server.js"], "env": { "FIRECRAWL_API_KEY": "fc-YOUR_API_KEY_HERE" } } } } ``` ## Available Tools ### `agent_execute` Execute the AI agent synchronously (waits for completion). **Use when**: You need immediate results for research tasks. **Parameters**: - `prompt` (required): Describe what data you want to extract - `urls` (optional): Specific URLs to search (otherwise searches web) - `schema` (optional): JSON schema for structured output - `maxCredits` (optional): Maximum credits to spend **Example**: ```typescript { "prompt": "Find the founders and founding year of Anthropic", "schema": { "type": "object", "properties": { "founders": { "type": "array", "items": { "type": "string" } }, "founded": { "type": "number" } } } } ``` ### `agent_start` Start an agent job asynchronously (returns job ID immediately). **Use when**: You have long-running research tasks and want to poll for results. **Parameters**: Same as `agent_execute` **Returns**: Job ID to use with `agent_status` ### `agent_status` Check the status of an asynchronous agent job. **Parameters**: - `jobId` (required): Job ID from `agent_start` **Returns**: Current status, progress, and results if completed ### `scrape` Scrape a single URL without AI agent capabilities. **Use when**: You just need to extract content from one specific page. **Parameters**: - `url` (required): URL to scrape - `formats` (optional): Output formats (`markdown`, `html`, `rawHtml`, `links`, `screenshot`) - `onlyMainContent` (optional): Extract only main content (default: true) - `includeTags` (optional): HTML tags to include - `excludeTags` (optional): HTML tags to exclude - `waitFor` (optional): Wait time for JS rendering (ms) - `timeout` (optional): Request timeout (ms) ### `search` Search the web and scrape multiple results. **Use when**: You want to find and extract data from multiple sources at once. **Parameters**: - `query` (required): Search query - `limit` (optional): Maximum number of results (default: 5) - `formats` (optional): Output formats for each result ## Usage Examples ### Example 1: Research Company Information ```typescript // Ask Claude Code: "Use Firecrawl Agent to find information about Anthropic's founding team" // Claude will call: agent_execute({ prompt: "Find the founders of Anthropic and when the company was founded", schema: { type: "object", properties: { founders: { type: "array", items: { type: "string" } }, founded: { type: "number" }, description: { type: "string" } } } }) ``` ### Example 2: Extract Pricing Information ```typescript // Ask Claude Code: "Get pricing information for Claude API" // Claude will call: agent_execute({ prompt: "Extract all pricing tiers and costs for Claude API", urls: ["https://www.anthropic.com/pricing"] }) ``` ### Example 3: Competitive Analysis ```typescript // Ask Claude Code: "Compare the features of the top 5 AI coding assistants" // Claude will call: agent_execute({ prompt: "Find and compare features of top AI coding assistants: GitHub Copilot, Cursor, Claude Code, Tabnine, and Codeium", schema: { type: "object", properties: { tools: { type: "array", items: { type: "object", properties: { name: { type: "string" }, features: { type: "array", items: { type: "string" } }, pricing: { type: "string" } } } } } } }) ``` ### Example 4: Long-Running Research ```typescript // Ask Claude Code: "Start a deep research job on quantum computing breakthroughs in 2024" // Claude will call: const job = await agent_start({ prompt: "Research all major quantum computing breakthroughs and papers published in 2024" }) // Then poll for status: const status = await agent_status({ jobId: job.jobId }) ``` ## Cost Management Firecrawl Agent uses dynamic billing based on task complexity: - Simple extractions: Fewer credits - Complex research: More credits Control costs using: ```typescript { prompt: "Your task", maxCredits: 100 // Limit spending to 100 credits } ``` ## Development ### Watch Mode ```bash npm run dev ``` ### Run Directly ```bash npm start ``` ### SSE Transport Mode For HTTP-based communication: ```bash npm run start:sse ``` ## Troubleshooting ### "FIRECRAWL_API_KEY environment variable is required" Make sure you've: 1. Created a `.env` file with your API key 2. Or configured the env variable in your Claude Code settings ### "HTTP 401: Unauthorized" Your API key is invalid. Get a new one from https://www.firecrawl.dev/ ### "HTTP 429: Too Many Requests" You've hit rate limits. Wait a moment and try again, or upgrade your Firecrawl plan. ### Tools not showing up in Claude Code 1. Make sure you've built the server: `npm run build` 2. Check that the path in your MCP configuration is correct 3. Restart Claude Code after configuration changes ## Learn More - [Firecrawl Agent Documentation](https://docs.firecrawl.dev/features/agent) - [Firecrawl API Reference](https://docs.firecrawl.dev/api-reference/introduction) - [MCP Protocol Specification](https://modelcontextprotocol.io/) - [Introducing Firecrawl Agent Blog Post](https://www.firecrawl.dev/blog/introducing-agent) ## License MIT ## Support For issues with: - **This MCP server**: Open an issue in this repository - **Firecrawl API**: Contact Firecrawl support - **Claude Code**: Visit https://github.com/anthropics/claude-code --- Built with ❤️ using the [Model Context Protocol](https://modelcontextprotocol.io/)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Replicant-Partners/Firecrawler-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server