Firecrawl MCP Server

Web search, scraping, crawling and research-paper search through Firecrawl, hosted or run with npx.

Official · Firecrawl TypeScript Remote (hosted) · Streamable HTTPLocal · stdio Web searchBrowser automation

107 popularity score ★ 7.8k ↓ 173k/wk

Connect your client

Remote (hosted)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude (desktop and web)Settings → Connectors → Add custom connector
https://mcp.firecrawl.dev/v2/mcp
Claude CodeTerminal
claude mcp add --transport http firecrawl https://mcp.firecrawl.dev/v2/mcp
ChatGPTSettings → Apps → Advanced → Developer mode, then Create app
https://mcp.firecrawl.dev/v2/mcp
Codex~/.codex/config.toml
[mcp_servers.firecrawl]
url = "https://mcp.firecrawl.dev/v2/mcp"
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "firecrawl": {
      "url": "https://mcp.firecrawl.dev/v2/mcp"
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "firecrawl": {
      "type": "http",
      "url": "https://mcp.firecrawl.dev/v2/mcp"
    }
  }
}
Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs FIRECRAWL_API_KEY. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add firecrawl -e FIRECRAWL_API_KEY=<FIRECRAWL_API_KEY> -- npx -y firecrawl-mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "firecrawl": {
      "command": "npx",
      "args": [
        "-y",
        "firecrawl-mcp"
      ],
      "env": {
        "FIRECRAWL_API_KEY": "<FIRECRAWL_API_KEY>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "firecrawl": {
      "command": "npx",
      "args": [
        "-y",
        "firecrawl-mcp"
      ],
      "env": {
        "FIRECRAWL_API_KEY": "<FIRECRAWL_API_KEY>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "firecrawl": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "firecrawl-mcp"
      ],
      "env": {
        "FIRECRAWL_API_KEY": "<FIRECRAWL_API_KEY>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.firecrawl]
command = "npx"
args = ["-y", "firecrawl-mcp"]

[mcp_servers.firecrawl.env]
FIRECRAWL_API_KEY = "<FIRECRAWL_API_KEY>"
Gemini CLITerminal
gemini mcp add --scope user -e FIRECRAWL_API_KEY=<FIRECRAWL_API_KEY> firecrawl npx -- -y firecrawl-mcp
Local (container)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs FIRECRAWL_API_KEY. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add firecrawl -e FIRECRAWL_API_KEY=<FIRECRAWL_API_KEY> -- docker run -i --rm -e FIRECRAWL_API_KEY ghcr.io/firecrawl/firecrawl-mcp-server:latest
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "firecrawl": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "FIRECRAWL_API_KEY",
        "ghcr.io/firecrawl/firecrawl-mcp-server:latest"
      ],
      "env": {
        "FIRECRAWL_API_KEY": "<FIRECRAWL_API_KEY>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "firecrawl": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "FIRECRAWL_API_KEY",
        "ghcr.io/firecrawl/firecrawl-mcp-server:latest"
      ],
      "env": {
        "FIRECRAWL_API_KEY": "<FIRECRAWL_API_KEY>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "firecrawl": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "FIRECRAWL_API_KEY",
        "ghcr.io/firecrawl/firecrawl-mcp-server:latest"
      ],
      "env": {
        "FIRECRAWL_API_KEY": "<FIRECRAWL_API_KEY>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.firecrawl]
command = "docker"
args = ["run", "-i", "--rm", "-e", "FIRECRAWL_API_KEY", "ghcr.io/firecrawl/firecrawl-mcp-server:latest"]

[mcp_servers.firecrawl.env]
FIRECRAWL_API_KEY = "<FIRECRAWL_API_KEY>"
Gemini CLITerminal
gemini mcp add --scope user -e FIRECRAWL_API_KEY=<FIRECRAWL_API_KEY> firecrawl docker -- run -i --rm -e FIRECRAWL_API_KEY ghcr.io/firecrawl/firecrawl-mcp-server:latest

Settings 11

FIRECRAWL_API_KEY secret Required: Firecrawl API key for the cloud API. Optional with a self-hosted FIRECRAWL_API_URL. Without either, only scrape and search work, keyless.
FIRECRAWL_API_URL Optional: Address of a self-hosted Firecrawl API, used in place of the cloud API.
FIRECRAWL_OAUTH_TOKEN secret Optional: Static OAuth access token (fco_...) for stdio. Takes precedence over FIRECRAWL_API_KEY when both are set.
FIRECRAWL_NO_SEARCH_FEEDBACK Optional: Set to 1 to leave out firecrawl_search_feedback.
FIRECRAWL_NO_ENDPOINT_FEEDBACK Optional: Set to 1 to leave out firecrawl_feedback.
FIRECRAWL_INTEGRATION Optional: Integration tag sent with API requests by apps that launch the server, starting with _ (for example _zed).
Set together: local http
HTTP_STREAMABLE_SERVER Optional: Set to true to serve Streamable HTTP at /mcp instead of stdio.
SSE_LOCAL Optional: Set to true to serve over HTTP locally, as HTTP_STREAMABLE_SERVER does.
PORT Optional: Port for local HTTP mode. Default 3000.
HOST Optional: Address to listen on in local HTTP mode. A non-wildcard value is also accepted as a Host header. Default localhost.
FIRECRAWL_MCP_ALLOWED_HOSTS Optional: Comma-separated extra host names or addresses accepted in Host and Origin headers in local HTTP mode. * turns the check off.

In a container, a setting goes in with -e NAME=value after docker run.

What it does

This is Firecrawl's own MCP server for its web data API. An assistant can search the web, turn a known URL into markdown or into JSON that fits a schema you pass, list a site's URLs, crawl a bounded set of pages, and click or type on a page before reading it. It also parses PDFs, Word files and spreadsheets.

Beyond the open web there are three hosted indexes: one for coding questions (GitHub issues, merged pull requests, READMEs and docs), one for US statutes, regulations and court opinions, and one for papers from PubMed, bioRxiv, medRxiv and arXiv, with tools to read a paper and walk its citations. Other tools start a research agent job, manage scheduled page monitors that send diffs by webhook or email, browse the Alexandria catalogue of data providers, and show credit usage.

You can connect to Firecrawl's hosted endpoint, or run the npm package locally over stdio. Locally it talks to Firecrawl's cloud with your key, or to your own Firecrawl instance through FIRECRAWL_API_URL. Started with neither a key nor a URL, it runs keyless: src/index.ts logs that only firecrawl_scrape and firecrawl_search work then, rate-limited per IP. The README counts 27 tools, but the repository's stdio contract snapshot lists 28 with an API key set. At start the server also loads a .env file from its working directory if one is there, which the README does not mention.

What it needs

To run it yourselfNode.js 22+
Runs onmacOS, Windows, Linux
FirecrawlFree tierKeyless use is limited to scrape and search (plus parse on the hosted endpoint). Other tools need an API key or OAuth sign-in and spend credits.

Create an API key at https://www.firecrawl.dev/app/api-keys and set it as FIRECRAWL_API_KEY. For a self-hosted Firecrawl, set FIRECRAWL_API_URL instead (a key only if your instance asks for one). On the hosted endpoint, sign in through the client with https://mcp.firecrawl.dev/v2/mcp-oauth, or send Authorization: Bearer <FIRECRAWL_API_KEY> to https://mcp.firecrawl.dev/v2/mcp.

Limits

  • Limit Run locally without FIRECRAWL_API_KEY or FIRECRAWL_API_URL, it starts keyless: firecrawl_scrape and firecrawl_search work, rate-limited per IP, and other tools answer Unauthorized.
  • Not covered The hosted endpoint without a key exposes only firecrawl_scrape, firecrawl_search and firecrawl_parse. Crawl, map, agent and the rest need a key or OAuth.
  • Cost Calls spend Firecrawl credits. firecrawl_search with scrapeOptions bills every fetched result as a separate scrape.
  • Limit In local HTTP mode, requests whose Host or Origin header is not localhost, 127.0.0.1, [::1], a non-wildcard HOST or a FIRECRAWL_MCP_ALLOWED_HOSTS entry get 403.
  • Not covered Each firecrawl_interact call runs one prompt or code turn to the end. A browser session cannot be driven step by step from the client inside one call.
  • Not covered Several URLs cannot go in one scrape call. Batch scraping is only on the Firecrawl API outside MCP.
  • Limit firecrawl_extract and firecrawl_research_search_github are deprecated and return an error naming firecrawl_scrape, firecrawl_agent or firecrawl_developer_search instead.
  • Rate limit Search feedback refunds a credit per search, up to 100 credits per team per UTC day by default.

Who it suits

A good fit if you want web pages as markdown or structured JSON without running a browser yourself, and are fine with URLs and queries going to Firecrawl. The hosted endpoint needs nothing installed and lets you try scrape and search before signing up. The local package is the way to point it at a self-hosted Firecrawl instance. Developers, lawyers and researchers also get the code, government and paper indexes in the same server. Look elsewhere if pages must not leave your network to a third party, or if you need to hold one browser session and drive it step by step with your own retry logic, which the README itself says this server does not do.

Tools 28

20 only read, 7 change things, 1 can delete or overwrite. A ? marks an optional parameter.

firecrawl_scrape
Fetch one known URL as markdown, or as JSON fitted to a schema you give.
firecrawl_map
List the URLs found under a site without fetching their content.url: stringsearch?: stringsitemap?: enumincludeSubdomains?: booleanlimit?: numberignoreQueryParameters?: boolean
firecrawl_search
Web search with ranked results and excerpts, optionally fetching each result's page.
firecrawl_crawl
Collect many pages under a site, bounded by a page limit, path filters and depth.
firecrawl_check_crawl_status
Get the state and results of a crawl job.
firecrawl_parse
Turn a PDF, Word file, spreadsheet or HTML file into markdown or JSON.
firecrawl_agent
Start a research agent job that gathers structured data from several sites.
firecrawl_agent_status
Get the state and result of an agent job.
firecrawl_interact changes
Click, type or move between pages on a live page, given a URL or an earlier scrape's ID.
firecrawl_interact_stop changes
Close an interact session.
firecrawl_developer_search
Search GitHub issues, merged pull requests, READMEs and code docs for programming questions.
firecrawl_gov_search
Search US federal, state and local statutes, regulations, codes and court opinions.
firecrawl_research_search_papers
Find papers in PubMed, bioRxiv, medRxiv, arXiv and more by text, author, category or date.
firecrawl_research_inspect_paper
Get metadata for one paper by arXiv, PMC, PMID or DOI identifier.
firecrawl_research_related_papers
Follow citations outward from one or more papers.
firecrawl_research_read_paper
Return full-text passages from a paper.
firecrawl_monitor_create changes
Set up a scheduled scrape or crawl that diffs results and alerts by webhook or email.
firecrawl_monitor_list
List your monitors.
firecrawl_monitor_get
Show one monitor.
firecrawl_monitor_update changes
Change a monitor's settings.
firecrawl_monitor_delete deletes
Remove a monitor.
firecrawl_monitor_run changes
Trigger a monitor check right away.
firecrawl_monitor_checks
List past checks of a monitor.
firecrawl_monitor_check
Show one check with its per-page diffs.
firecrawl_find_tools
Browse data providers and their contracts in Firecrawl's Alexandria catalogue.
firecrawl_credit_usage
Show credits left and past usage, by month or day, optionally per endpoint or API key.
firecrawl_search_feedback changes
Rate a past search's results, which refunds a credit the first time per search.
firecrawl_feedback changes
Send feedback on another endpoint's results.

Similar servers