# Firecrawl MCP Server: wiring live web scraping into Cursor, Claude and other MCP clients

> The official Firecrawl MCP server exposes scrape, search, crawl, map, interact and research tools to any Model Context Protocol client. It is a thin protocol layer over an API that needs a key for most of its surface.

**firecrawl/firecrawl-mcp-server** — 🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.

- Repository: https://github.com/firecrawl/firecrawl-mcp-server
- Website: https://firecrawl.dev
- Stars: 7,534 · Forks: 895
- Language: JavaScript
- License: MIT
- Published: 2026-09-10 · Updated: 2026-09-10 · Language: en
- Canonical page: https://hysenlabs.com/projects/firecrawl-firecrawl-mcp-server

## The gap Firecrawl MCP Server fills for coding agents

An LLM client with no retrieval tools can only reason over what it was trained on or what you paste in. The Firecrawl MCP server exists to close that gap: it registers web-facing tools with any Model Context Protocol client so the model can search, fetch and read live pages on its own. The README frames it as bringing Firecrawl to MCP-compatible AI agents for clean, agent-ready context. The audience is narrow and practical: developers running Cursor, Claude Desktop, Windsurf or another MCP host who want the agent to reach a URL or a query without leaving the chat. It is not a scraping library you import into your own service, and it is not a browser automation framework. It is a protocol adapter between a client that speaks MCP and the Firecrawl API that does the fetching.

## How the tool routing actually works

The server is a JavaScript package (type module, bin firecrawl-mcp pointing at dist/index.js) built on fastmcp and the @mendable/firecrawl-js client. Each tool maps to one intent, and the README is explicit about which to pick. Use firecrawl_scrape for a known URL when you want markdown or JSON matching a schema you supply. Use firecrawl_map to discover URLs on a site without fetching their content. Use firecrawl_crawl for many pages under a site, bounded with limit, includePaths, excludePaths or maxDiscoveryDepth. Use firecrawl_search when you start from a query rather than a URL, and add scrapeOptions if you also want page content in the same call, because the README notes the search-only endpoint never fetches content. firecrawl_interact handles pages that need a click, type or navigate before they can be read; you pass a url for a fresh page or a scrapeId to continue on one already scraped. The firecrawl_monitor_* tools cover recurring checks with diffs and change alerts. Tool count is not fixed: the README says the full profile registers 25 tools with default settings, that FIRECRAWL_NO_SEARCH_FEEDBACK=1 and FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 each remove feedback tools, and that the hosted keyless endpoint exposes only 3 (firecrawl_scrape, firecrawl_search, firecrawl_parse) while the search-only endpoint exposes a fixed 6 read-only tools. The package description also mentions research paper search over PubMed, bioRxiv, medRxiv and arXiv with citation-graph expansion, which is a separate surface from ordinary web search and worth knowing before you assume every search tool hits the open web.

## Installing it and running a first scrape in Cursor

There are two paths. The hosted endpoint needs no install at all: point your client at https://mcp.firecrawl.dev/v2/mcp, where scrape, search and parse work without a key on a rate-limited free tier, while crawl, map and agent still need one. The README recommends OAuth or an API key whenever a human can sign up, because it unlocks the full tool set and higher limits. For a local process, npx is the shortest route. This command starts the server with your key in the environment:

```bash
env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp
```

For a global install instead, the README gives npm install -g firecrawl-mcp, and the package requires Node 22 or newer. In Cursor 0.48.6 the flow is Settings, then Features, then MCP Servers, then Add new global MCP server, and the README supplies this block:

```json
{
  "mcpServers": {
    "firecrawl-mcp": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "YOUR-API-KEY"
      }
    }
  }
}
```

After saving, refresh the MCP server list; the README says the Composer Agent then picks Firecrawl MCP automatically when appropriate, and that you can also request it explicitly by describing the scraping you want. On Windows the README suggests cmd /c "set FIRECRAWL_API_KEY=your-api-key && npx -y firecrawl-mcp" when the plain form fails. Windsurf uses the same shape in ./codeium/windsurf/model_config.json under the key mcp-server-firecrawl. If you would rather run it yourself, the repository ships a Dockerfile that builds with pnpm 10.17.1 on node:22-alpine and runs node dist/index.js from a node:22-slim stage; the README also lists a self-hosted option, though the truncated install section does not spell out the environment variables for pointing the server at your own Firecrawl instance.

## Where the API key boundary bites

The single most important constraint is not technical. The keyless hosted tier covers scrape, search and parse only. Crawl, map and agent require a key, so an agent that decides mid-conversation to crawl a documentation site will fail on a keyless setup rather than degrade. The README is also emphatic about handling: never put an API key in the server URL, never put it in an agent chat, and configure it in the client or a secret manager instead. That rules out the casual pattern of pasting a key into a prompt so the model can use it. A second constraint is tool-slot pressure. Clients with a hard limit on registered tools will not see the same server as clients without one; the README treats this as a first-class concern and points at the hosted keyless endpoint (3 tools) and the search-only endpoint (6 read-only tools) as smaller surfaces. A third is interaction depth. The README states plainly that each firecrawl_interact call runs one prompt or code turn to completion and returns control. The session can persist across calls via scrapeId and ends with firecrawl_interact_stop, but you cannot drive it step by step from the client within a single call. If your workflow depends on holding a browser open while you make your own decisions between steps, this is the wrong tool.

## Firecrawl MCP Server versus a general-purpose browser MCP

The closest alternative is a browser-control MCP server, such as one that drives Playwright or a Chrome instance. The difference is where the work happens. A browser MCP hands the model a live session and expects the model to click, wait and read the DOM itself; the server is a thin remote control and the intelligence is all in the client. Firecrawl MCP Server inverts that. The fetching, rendering, retries and rate limiting happen server-side, and what comes back is already cleaned: markdown, or JSON shaped by a schema you pass to firecrawl_scrape. That is a real trade. You give up step-level control over the page and you accept an external API dependency and its pricing, and in exchange you do not spend context tokens on raw HTML or on reasoning about selectors. For an agent that mostly needs to read pages, the Firecrawl shape is cheaper in tokens. For an agent that needs to log in, fill a multi-step form and branch on what it sees, a browser MCP is the better fit. The README's own framing supports this reading: it recommends considering something else precisely when you need to hold a browser session open across many of your own steps.

## Maintenance, versioning and the MIT licence

The repository is not archived and the last push was on 2026-09-09, so the codebase is being touched. The release history shows a major bump at v3.0.0 on 2025-09-11, followed by v3.2.0 and v3.2.1, while package.json carries version 3.24.1, which suggests frequent point releases between the tagged entries. The repository includes a VERSIONING.md file, so the maintainers document their versioning policy rather than leaving it implicit. The licence is MIT, which permits commercial use, modification and redistribution provided the copyright notice and permission notice are preserved; that is a statement about the licence text, not legal advice, and if you redistribute the package inside a product you should read LICENSE and VERSIONING.md yourself. Upgrade cost is mostly client-side configuration: the npx form pins nothing, so npx -y firecrawl-mcp will pull whatever is current on each start, and the underlying @mendable/firecrawl-js dependency is pinned at 4.25.2 in package.json. If you need reproducible tool behaviour across a team, pin the version in your client config instead of relying on -y.

## Conclusion

Adopt it if your agent already needs page content as markdown or schema-shaped JSON and you accept that crawl, map and agent calls require a Firecrawl API key. Skip it if you need to hold a browser session open across many of your own steps; the README states each firecrawl_interact call runs one prompt or code turn and returns control. Before wiring it into a client, confirm the tool count your client can accept, since the README puts the full profile at 25 tools and the keyless hosted endpoint at 3.

## FAQ

### What does an MCP server actually do?

It exposes a set of named tools to an MCP-compatible client over a protocol, so the model can call them. Firecrawl MCP Server registers tools such as firecrawl_scrape, firecrawl_search and firecrawl_crawl, and the client decides when to invoke them.

### Is Firecrawl safe to use?

The README addresses credential handling directly: never put an API key in the server URL or in an agent chat, and configure it in the client or a secret manager instead. It also recommends OAuth or an API key over keyless mode when a human can sign up, which gives you an identifiable account rather than anonymous rate-limited access.

### What is Firecrawl and what does it do?

Firecrawl is the service behind this server. According to the README, it searches, scrapes and interacts with the live web to produce clean, agent-ready context, and this repository is the MCP server that exposes those capabilities to AI agents.

### Is an MCP server a real server?

It can be either. Firecrawl MCP Server runs as a local process started by your client (for example through npx), or you can connect to a hosted endpoint at https://mcp.firecrawl.dev/v2/mcp. The README notes the hosted URL is an MCP endpoint and not a browser page.

## Sources

- [firecrawl/firecrawl-mcp-server on GitHub](https://github.com/firecrawl/firecrawl-mcp-server)
- [License: MIT](https://github.com/firecrawl/firecrawl-mcp-server/blob/main/LICENSE)
- [Project website](https://firecrawl.dev)
- [README](https://github.com/firecrawl/firecrawl-mcp-server/blob/main/README.md)
- [Releases](https://github.com/firecrawl/firecrawl-mcp-server/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/firecrawl-firecrawl-mcp-server
