← MCP servers · firecrawl

Firecrawl

CAUTIONgrade B · trust 87/100

🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.

batch processingclaudecontent extractiondata collectionfirecrawlfirecrawl aijavascript renderingllm tools

Overview

From the repository's own README, as read at the audited commit.

<div align="center">  <a name="readme-top"></a>  <img    src="https://raw.githubusercontent.com/firecrawl/firecrawl-mcp-server/main/img/fire.png"    height="140"  ></div># Firecrawl MCP ServerA Model Context Protocol (MCP) server that brings [Firecrawl](https://github.com/firecrawl/firecrawl) to MCP-compatible AI agents — search, scrape, and interact with the live web for clean, agent-ready context.> Big thanks to [@vrknetha](https://github.com/vrknetha), [@knacklabs](https://www.knacklabs.ai) 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- Automatic retries and rate limiting- Cloud and self-hosted support- SSE support> Play around with [our MCP Server on MCP.so's playground](https://mcp.so/playground?server=firecrawl-mcp-server) or on [Klavis AI](https://www.klavis.ai/mcp-servers).## When to Use This Server- Use `firecrawl_scrape` when you have a known URL and want its content as markdown or as JSON matching a schema you supply.- Use `firecrawl_map` when you need to discover URLs on a site without fetching their content.- Use `firecrawl_crawl` when you need content from many pages under a site; set `limit`, `includePaths`/`excludePaths`, or `maxDiscoveryDepth` to bound it.- Use `firecrawl_search` when you're starting from a query rather than a URL and want ranked web results; add `scrapeOptions` if you also want page content fetched in the same call (the search-only endpoint never fetches content).- Use `firecrawl_interact` when a page needs a click, type, or navigate action before you can read it — pass a `url` for a fresh page or a `scrapeId` to 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 chang

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add firecrawl-mcp --env FIRECRAWL_API_KEY=${FIRECRAWL_API_KEY} -- npx -y [email protected]

Details

Source
firecrawl/firecrawl-mcp-server
npm
firecrawl-mcp@3.24.1
Transports
stdio
Credentials it reads
FIRECRAWL_API_KEYFIRECRAWL_MCP_ACTION_LOG_SECRETFIRECRAWL_MCP_SEARCH_OAUTH_ONLYFIRECRAWL_OAUTH_INTROSPECT_SECRETFIRECRAWL_OAUTH_ISSUERFIRECRAWL_OAUTH_TOKENKEYLESS_PROXY_SECRETMCP_DELEGATED_CREDENTIAL_SECRETMCP_OAUTH_ACCEPT_LEGACY_V2_MCP_AUDOPENAI_APPS_CHALLENGE_TOKEN
Tools
Registered at runtime; the list could not be read from source.
License
MIT
Stars
7,478 · pushed 0d ago

Trust audit

Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (6 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (11)

MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/mcp-smoke.test.mjs:1881
api_key: 'fc-managed-parse-key',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/mcp-smoke.test.mjs:2472
api_key: 'fc-untrusted-purpose',
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/mcp-search-profile.test.mjs:60
const url = `http://127.0.0.1:${port}/health`;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/mcp-search-profile.test.mjs:225
url: `http://127.0.0.1:${port}`,
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/mcp-search-profile.test.mjs:308
return fetch(`http://127.0.0.1:${port}${endpoint}`, {
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/mcp-search-profile.test.mjs:686
`http://127.0.0.1:${searchPort}/.well-known/oauth-protected-resource${SEARCH_ENDPOINT}`
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/mcp-search-profile.test.mjs:789
`http://127.0.0.1:${fullPort}/.well-known/oauth-protected-resource`
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
dotenv, zod, @types/node, tsup, typescript
Why it matters. 5 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
CHANGELOG.md:7
- `firecrawl_parse` now works on the remote hosted MCP server (`CLOUD_SERVICE`), not just local mode. Because the hosted server cannot read the caller's filesystem, hosted parse uses a two-call flow: 
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWInventory / provenance · mcp.no_tools_extracted · CWE-1104
server.json
Why it matters. the tool list is enumerated at runtime by tools/list, not declared in source
Fix. the page says so rather than showing an empty table
INFOInventory / provenance · inv.oversize · CWE-1104
img/fire.png
img/fire.png
Why it matters. 2726130 bytes not read

Gates applied: no_behavioural_pass.

Audited 2026-09-18 · audit v0.4.0 · source sha 436fd1a4207c · full audit: observations/trust-audit/mcp-server/firecrawl__firecrawl-10.json · Report an issue or request a re-scan

Audit history

DateSourceVerdictGradeScoreChange
2026-09-18436fd1a4207cCAUTIONB87first audit

Alternatives

Other servers in the same categories, safer ones first.

Questions

What is the Firecrawl MCP server?

🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.

Is Firecrawl safe to connect to an agent?

With care. The audit graded it B (87/100) and found 11 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does Firecrawl need?

It reads FIRECRAWL_API_KEY, FIRECRAWL_MCP_ACTION_LOG_SECRET, FIRECRAWL_MCP_SEARCH_OAUTH_ONLY, FIRECRAWL_OAUTH_INTROSPECT_SECRET, FIRECRAWL_OAUTH_ISSUER, FIRECRAWL_OAUTH_TOKEN, KEYLESS_PROXY_SECRET, MCP_DELEGATED_CREDENTIAL_SECRET, MCP_OAUTH_ACCEPT_LEGACY_V2_MCP_AUD and OPENAI_APPS_CHALLENGE_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Firecrawl run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as firecrawl-mcp at 3.24.1.

How current is this page?

The grade is for one exact copy of the source (436fd1a4207c), read on 2026-09-18. The repository is watched and re-audited when it changes.

Provenance: OBSERVED · read 2026-09-18 · job trust-audit-2026-09-18