Firecrawl
About
A Model Context Protocol (MCP) server implementation that integrates with Firecrawl for web scraping capabilities.
Details
- Repository
- firecrawl/firecrawl-mcp-server
- License
- MIT
Explore
- Search the web and get full page content
- Search an index built for coding agents: GitHub issues, merged pull requests, READMEs, and docs
- Scrape any URL into clean, structured data
- Interact with pages — click, navigate, and operate
- Deep research with autonomous agent
- Automatic retries and rate limiting
- Cloud and self-hosted support
- SSE support
> Play around with our MCP Server on MCP.so's playground or on Klavis AI.
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
FirecrawlCommand (node, npx, python, etc.)npxArguments-
Argument 1
-y -
Argument 2
firecrawl-mcp
Environment-
FIRECRAWL_API_KEY
YOUR-API-KEY
Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
-
Argument 1
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
The simplest way is to connect to the hosted server at https://mcp.firecrawl.dev/v2/mcp (keyless free tier available). Alternatively, run env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp from the command line. Configure the server by setting the FIRECRAWL_API_KEY environment variable, and optionally FIRECRAWL_API_URL for self-hosted instances or FIRECRAWL_OAUTH_TOKEN for OAuth bearer tokens.
firecrawl_scrape
Scrape content from a single URL with advanced options. Commonly used for single page content extraction.
firecrawl_map
Map a website to discover all indexed URLs on the site. Best for discovering URLs before deciding what to scrape.
firecrawl_search
Search the web and extract content from search results. Useful for finding specific information across multiple websites.
firecrawl_search_feedback
Sends structured feedback on a previous firecrawl_search result to improve search quality.
firecrawl_feedback
Sends structured feedback for a completed endpoint job through /v2/feedback.
firecrawl_crawl
Starts a crawl job to extract content from multiple related pages. Best for comprehensive coverage.
firecrawl_check_crawl_status
Check the status and results of an existing crawl job by ID.
firecrawl_parse
Parse local files or hosted upload references for documents needing markdown or structured JSON output.
firecrawl_agent
Autonomous web research agent that browses the internet, searches for information, and extracts structured data based on your query.
firecrawl_agent_status
Check the status of an agent job and retrieve results when complete.
firecrawl_interact
Interact with a fresh URL or an already scraped page for actions like clicking, typing, and navigating.
firecrawl_interact_stop
Stop an interact session for a scraped page when done interacting.
firecrawl_monitor_create
Create and manage recurring page monitors to track changes on specified pages.
firecrawl_developer_search
Search an index built for coding agents covering GitHub issues, pull requests, and documentation.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"firecrawl": {
"env": {
"FIRECRAWL_API_KEY": "YOUR-API-KEY"
},
"args": [
"-y",
"firecrawl-mcp"
],
"command": "npx"
}
}
}
Linux
{
"env": {
"FIRECRAWL_API_KEY": "YOUR-API-KEY"
},
"args": [
"-y",
"firecrawl-mcp"
],
"command": "npx"
}
Macos
{
"env": {
"FIRECRAWL_API_KEY": "YOUR-API-KEY"
},
"args": [
"-y",
"firecrawl-mcp"
],
"command": "npx"
}
Windows
{
"env": [],
"args": [
"/c",
"set FIRECRAWL_API_KEY=YOUR-API-KEY && npx -y firecrawl-mcp"
],
"command": "cmd"
}
A Model Context Protocol (MCP) server that bringsFirecrawlto MCP-compatible AI agents — search, scrape, and interact with the live web for clean, agent-ready context.
Big thanks to@vrknetha,@knacklabsfor the initial implementation!
- Search the web and get full page content
- Search an index built for coding agents: GitHub issues, merged pull requests, READMEs, and docs
- Scrape any URL into clean, structured data
- Interact with pages — click, navigate, and operate
- Deep research with autonomous agent
- Automatic retries and rate limiting
- Cloud and self-hosted support
- SSE support
Play around withour MCP Server on MCP.so's playgroundor onKlavis AI.
Connect to the remote hosted server with no setup:
On the keyless free tier,scrape,search, andparsework without an API key (rate-limited). Other tools such ascrawl,map, andagentstill need a key.
Prefer OAuth or an API key whenever the human can sign up. It unlocks the full tool set and higher limits.
For an interactive account connection, configure your MCP client to use this server URL. This is an MCP endpoint,not a browser page; use the client's account-connection flow and do not add a second Firecrawl server entry when reconnecting:
For an API-key connection (for example, an unattended integration), keep the server URL as:
Then configure the client's secure header or secret setting with:
Authorization: Bearer <FIRECRAWL_API_KEY>
Never put an API key in the server URL. Never put an API key in an agent chat. Configure it directly in the client or secret manager. See thehosted MCP setup guideand theagent onboarding guidefor client-specific instructions.
A read-only, search-only surface is also hosted at:
It exposes a fixed set of six read-only tools:firecrawl_searchand the fivefirecrawl_research_*tools. It performs no page-content fetching and has its own OAuth identity; the full endpoint above is unchanged. Seedocs/search-profile.mdfor the full contract.
env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp
Configuring Cursor 🖥️ Note: Requires Cursor version 0.45.6+ For the most up-to-date configuration instructions, please refer to the official Cursor documentation on configuring MCP servers:Cursor MCP Server Configuration Guide
To configure Firecrawl MCP in Cursorv0.48.6
- Open Cursor Settings
- Go to Features > MCP Servers
- Click "+ Add new global MCP server"
- Enter the following code:
{ "mcpServers": { "firecrawl-mcp": { "command": "npx", "args": ["-y", "firecrawl-mcp"], "env": { "FIRECRAWL_API_KEY": "YOUR-API-KEY" } } } }
To configure Firecrawl MCP in Cursorv0.45.6
- Open Cursor Settings
- Go to Features > MCP Servers
- Click "+ Add New MCP Server"
- Enter the following:
- Name: "firecrawl-mcp" (or your preferred name)
- Type: "command"
- Command:env FIRECRAWL_API_KEY=your-api-key npx -y firecrawl-mcp
If you are using Windows and are running into issues, trycmd /c "set FIRECRAWL_API_KEY=your-api-key && npx -y firecrawl-mcp"
Replaceyour-api-keywith your Firecrawl API key. If you don't have one yet, you can create an account and get it fromhttps://www.firecrawl.dev/app/api-keys
After adding, refresh the MCP server list to see the new tools. The Composer Agent will automatically use Firecrawl MCP when appropriate, but you can explicitly request it by describing your web scraping needs. Access the Composer via Command+L (Mac), select "Agent" next to the submit button, and enter your query.
Add this to your./codeium/windsurf/model_config.json:
{ "mcpServers": { "mcp-server-firecrawl": { "command": "npx", "args": ["-y", "firecrawl-mcp"], "env": { "FIRECRAWL_API_KEY": "YOUR_API_KEY" } } } }
To run the server using Streamable HTTP locally instead of the default stdio transport:
env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp
To install Firecrawl for Claude Desktop automatically viaSmithery:
npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude
For one-click installation, click one of the install buttons below...
For manual installation, add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressingCtrl + Shift + Pand typingPreferences: 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}" } } } } }
Optionally, you can add it to a file called.vscode/mcp.jsonin your workspace. This will allow you to share the configuration with others:
{ "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}" } } } }
- FIRECRAWL_API_KEY: Your Firecrawl API key
- Required when using cloud API (default)
- Optional when using self-hosted instance withFIRECRAWL_API_URL
- Example:https://firecrawl.your-domain.com
- If not provided, the cloud API will be used (requires API key)
Hosted Firecrawl can issue OAuthaccess tokens(fco_…) via the authorization server onfirecrawl.dev. This MCP server forwards whichever credential it resolves to the Firecrawl API asAuthorization: Bearer ….
- HTTP stream transports(CLOUD_SERVICE=true,HTTP_STREAMABLE_SERVER=true, orSSE_LOCAL=true): Clients should sendAuthorization: Bearer <fco_access_token>on MCP requests. An OAuth bearer token takes precedence overx-firecrawl-api-key/x-api-keywhen both are present.
- stdio:UseFIRECRAWL_OAUTH_TOKENfor a static access token, or keep usingFIRECRAWL_API_KEYfor an API key.
Useaccesstokens (fco_…) only. Refresh tokens (fcr_…) must be exchanged at the token endpoint, not passed to the scrape/search API.
In hosted mode (CLOUD_SERVICE=true) a second in-process instance serves thesearch-only endpoint. The bundled service has a fixed deployment contract: nginx routes/v2/mcp-searchto the instance on local port3001, and the OAuth protected-resource identifier ishttps://mcp.firecrawl.dev/v2/mcp-search.
FIRECRAWL_MCP_SEARCH_ENABLED(defaulttrue) is the supported operational toggle; set it tofalseto prevent the search instance from starting. The Node process also acceptsFIRECRAWL_MCP_SEARCH_PORT,FIRECRAWL_MCP_SEARCH_ENDPOINT, andFIRECRAWL_MCP_SEARCH_RESOURCE_URLfor isolated tests. Those overrides do not reconfigure the bundled nginx routes or the authorization server allowlist and must not be used independently in the hosted deployment.
The search instance requires authentication for every request (includingtools/list) and rejects OAuth tokens whose audience does not match its own resource.
# 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
Add this to yourclaude_desktop_config.json:
{ "mcpServers": { "mcp-server-firecrawl": { "command": "npx", "args": ["-y", "firecrawl-mcp"], "env": { "FIRECRAWL_API_KEY": "YOUR_API_KEY_HERE" } } } }
Use this guide to select the right tool for your task:
- If you know the exact URL you want:usescrape(with JSON format for structured data)
- If you have multiple known URLs:callscrapefor each URL. If you specifically need one bulk API operation, use the Firecrawl API batch endpoint outside MCP.
- If you need to discover URLs on a site:usemap
- If you want to search the web for info:usesearch
- If you have a programming question(a library, an API contract, an error message, a known bug): usedeveloper search
- If you need scientific papers(biomedical, life-science, clinical, or arXiv literature): useresearch tools— they search paper abstracts and full text.searchwithcategories: ["research"]is a different thing: a website filter over ordinary web results.
- If you need complex research across multiple unknown sources:useagent
- If you want to analyze a whole site or section:usecrawl(with limits!)
- If you need interactive browser automation(click, type, navigate): useinteractwith a URL for a fresh page, orscrape+interactwhen you already scraped the page or need tighter scrape control
When usingscrape, choose the right format:
- JSON format (recommended for most cases):Use when you need specific data from a page. Define a schema based on what you need to extract. This keeps responses small and avoids context window overflow.
- Markdown format (use sparingly):Only when you genuinely need the full page content, such as reading an entire article for summarization or analyzing page structure.
Scrape content from a single URL with advanced options.
- Single page content extraction, when you know exactly which page contains the information.
- Extracting content from multiple pages (use repeated scrape calls for known URLs, or map + scrape to discover URLs first, or crawl for full page content)
- When you're unsure which page contains the information (use search)
- Passing a list of URLs to one scrape call. Call scrape once per URL in MCP. If you specifically need one bulk API operation, use the Firecrawl API batch endpoint outside MCP.
- Using markdown format by default (use JSON format to extract only what you need).
- JSON format (preferred):For most use cases, use JSON format with a schema to extract only the specific data needed. This keeps responses focused and prevents context window overflow.
- Markdown format:Only when the task genuinely requires full page content (e.g., summarizing an entire article, analyzing page structure).
"Get the product details fromhttps://example.com/product."
Usage Example (JSON format - preferred):
{ "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"] } } ] } }
Usage Example (markdown format - when full content needed):
{ "name": "firecrawl_scrape", "arguments": { "url": "https://example.com/article", "formats": ["markdown"], "onlyMainContent": true } }
Usage Example (branding format - extract brand identity):
{ "name": "firecrawl_scrape", "arguments": { "url": "https://example.com", "formats": ["branding"] } }
Branding format:Extracts comprehensive brand identity (colors, fonts, typography, spacing, logo, UI components) for design analysis or style replication.Privacy:SetredactPII: trueto return content with personally identifiable information redacted.
- JSON structured data, markdown, branding profile, or other formats as specified.
Map a website to discover all indexed URLs on the site.
- Discovering URLs on a website before deciding what to scrape
- Finding specific sections of a website
- When you already know which specific URL you need (use scrape)
- When you need the content of the pages (use scrape after mapping)
- Using crawl to discover URLs instead of map
"List all URLs on example.com."
{ "name": "firecrawl_map", "arguments": { "url": "https://example.com" } }
Search the web and optionally extract content from search results.
- Finding specific information across multiple websites, when you don't know which website has the information.
- When you need the most relevant content for a query
- When you already know which website to scrape (use scrape)
- When you need comprehensive coverage of a single website (use map or crawl)
- Using crawl or map for open-ended questions (use search instead)
{ "name": "firecrawl_search", "arguments": { "query": "remote work stipend policies at tech companies", "highlights": true, "limit": 5, "lang": "en", "country": "us", "scrapeOptions": { "formats": ["markdown"], "onlyMainContent": true, "redactPII": true } } }
Sethighlightstotrueto request query-relevant highlights orfalseto keep the original search snippets. Omit it to use the API's default behavior.
For scientific papers, seeResearch Tools: they search paper abstracts and full text, whilecategories: ["research"]here filters ordinary web results to research-affiliated websites.
- Array of search results (with optional scraped content), plus anidfield. Pass thatidtofirecrawl_search_feedbackafter you've used the results to refund 1 credit (search costs 2) and improve search quality.
"Compare remote work stipend policies across tech companies."
3b. Search Feedback Tool (firecrawl_search_feedback)
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.


