Firecrawl
Advanced web scraping for content extraction, crawling, and search for AI agents.
Mind the Product take
Firecrawl turns your AI agent into a research machine. Need to analyze a competitor's pricing page, scrape job listings to understand market trends, or extract structured data from a messy website? Firecrawl handles the heavy lifting of web scraping - anti-bot detection, JavaScript rendering, clean content extraction - so your agent can focus on the analysis. Essential for competitive intelligence and market research workflows.
How product builders use Firecrawl
- 1Scrape competitor websites for pricing, feature, and positioning analysis
- 2Extract structured data from job boards to understand hiring trends
- 3Build market research reports from multiple web sources automatically
- 4Monitor competitor changelog pages for new feature launches
- 5Gather customer reviews from multiple platforms for sentiment analysis
Getting started
From the official Firecrawl README
Firecrawl MCP Server
A Model Context Protocol (MCP) server that brings Firecrawl to MCP-compatible AI agents — search, scrape, and interact with the live web for clean, agent-ready context.
Big thanks to @vrknetha, @knacklabs for the initial implementation!
Features
- 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
- Check current and historical Firecrawl credit usage
- 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.
When to Use This Server
- Use
firecrawl_scrapewhen you have a known URL and want its content as markdown or as JSON matching a schema you supply. - Use
firecrawl_mapwhen you need to discover URLs on a site without fetching their content. - Use
firecrawl_crawlwhen you need content from many pages under a site; setlimit,includePaths/excludePaths, ormaxDiscoveryDepthto bound it. - Use
firecrawl_searchwhen you're starting from a query rather than a URL and want ranked web results; addscrapeOptionsif you also want page content fetched in the same call (the search-only endpoint never fetches content). - Use
firecrawl_interactwhen a page needs a click, type, or navigate action before you can read it — pass aurlfor a fresh page or ascrapeIdto continue on one you already scraped. - Use the
firecrawl_monitor_*tools when the same page needs to be checked on a recurring schedule with diffs and change alerts, rather than fetched once. - Use
firecrawl_credit_usageto check credits left or monthly consumption, optionally broken down by API key. - Consider something else when you need to hold a browser session open across many of your own steps with your own retry and termination logic: each
firecrawl_interactcall runs onepromptorcodeturn to completion and returns control — the session can persist across calls viascrapeIdand ends withfirecrawl_interact_stop, but you cannot drive it interactively step-by-step from the client side within a single call.
This server lists 27 tools when the full profile registers with default settings (feedback tools included, not running in local-keyless mode). Setting FIRECRAWL_NO_SEARCH_FEEDBACK=1 and/or FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 removes the corresponding feedback tools and reduces this count, as does local keyless startup. For clients with a tool-slot limit: the hosted keyless endpoint (https://mcp.firecrawl.dev/v2/mcp, no API key) exposes only 3 — firecrawl_scrape, firecrawl_search, firecrawl_parse — and the dedicated search-only endpoint (https://mcp.firecrawl.dev/v2/mcp-search) exposes a fixed set of 9 tools (search, developer, government, and research search, plus Alexandria catalogue lookup and execution).
Hosted MCP (keyless free tier)
Connect to the remote hosted server with no setup:
https://mcp.firecrawl.dev/v2/mcp
On the keyless free tier, scrape, search, and parse work without an API key (rate-limited). Other tools such as crawl, map, and agent still 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:
https://mcp.firecrawl.dev/v2/mcp-oauth
For an API-key connection (for example, an unattended integration), keep the server URL as:
https://mcp.firecrawl.dev/v2/mcp
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 the hosted MCP setup guide and the agent onboarding guide for client-specific instructions.
Search-only endpoint
A fixed-scope search surface is also hosted at:
https://mcp.firecrawl.dev/v2/mcp-search
It exposes a fixed set of nine tools: firecrawl_search, firecrawl_developer_search, firecrawl_gov_search, the four firecrawl_research_* tools, and the two Alexandria tools firecrawl_find_tools and firecrawl_scrape. Its firecrawl_search fetches no page content, and the surface has its own OAuth identity; the full endpoint above is unchanged. It backs a published connector listing, so its tool set is a contract rather than a profile to tune. See docs/search-profile.md for the full contract and what a change to it involves.
Running with npx
env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp
Manual Installation
npm install -g firecrawl-mcp
Running on Cursor
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 Cursor v0.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 Cursor v0.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, try
cmd /c "set FIRECRAWL_API_KEY=your-api-key && npx -y firecrawl-mcp"
Replace your-api-key with your Firecrawl API key. If you don't have one yet, you can create an account and get it from https://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.
Running on Windsurf
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"
}
}
}
}
Running with Streamable HTTP Local Mode
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
Use the url: http://localhost:3000/mcp
Running with Docker
The ghcr.io/firecrawl/firecrawl-mcp-server image runs the same server as npx -y firecrawl-mcp. Every build from main is tagged latest, v<package version> and sha-<commit sha>. v<package version> moves to the newest build of that version, so pin sha-<commit sha> (or a digest) when you need a fixed image.
stdio (the default), for MCP clients that launch the server as a command:
docker run -i --rm -e FIRECRAWL_API_KEY=fc-YOUR_API_KEY ghcr.io/firecrawl/firecrawl-mcp-server:latest
{
"mcpServers": {
"firecrawl-mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "FIRECRAWL_API_KEY", "ghcr.io/firecrawl/firecrawl-mcp-server:latest"],
"env": {
"FIRECRAWL_API_KEY": "YOUR_API_KEY"
}
}
}
}
Streamable HTTP, served at http://localhost:3000/mcp:
docker run --rm -p 127.0.0.1:3000:3000 \
-e HTTP_STREAMABLE_SERVER=true \
-e FIRECRAWL_API_KEY=fc-YOUR_API_KEY \
ghcr.io/firecrawl/firecrawl-mcp-server:latest
The image sets HOST=0.0.0.0 and PORT=3000; override PORT (and the -p mapping) to listen elsewhere. The server uses the container's FIRECRAWL_API_KEY for requests that don't send their own credential, so the example publishes the port on 127.0.0.1 only; don't expose it more widely unless clients must supply their own key. Set FIRECRAWL_API_URL to use a self-hosted Firecrawl API. The container runs as the unprivileged node user.
Installing via Smithery (Legacy)
To install Firecrawl for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude
Running on VS Code
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 pressing Ctrl + Shift + P and typing Preferences: 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.json in 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}"
}
}
}
}