Claude Code can already fetch a URL and search the web. Where it struggles is pages that need JavaScript to render, sites you want crawled rather than read one page at a time, and anything you want back as structured fields. The Firecrawl MCP server covers those cases: it gives Claude Code tools to scrape, search, map, crawl and extract, and it returns clean markdown instead of raw HTML.
Below is the setup, from a quick keyless trial to a configuration that keeps the key out of git and caps what the agent can spend.
Add Firecrawl to Claude Code Without an API Key
Firecrawl runs a hosted MCP server, so there's nothing to install. This adds it to Claude Code with no account at all:
claude mcp add --transport http firecrawl https://mcp.firecrawl.dev/v2/mcp Keyless access is rate limited and only exposes three tools: firecrawl_search, firecrawl_scrape and firecrawl_parse. That's enough to see whether it helps. Start Claude Code, run /mcp to confirm the server shows as connected, and ask for something that needs the web:
Search for the latest Firecrawl Python SDK release and summarise what changed. Sign In or Use an API Key
With an account, you get the full set of tools: crawl, map, agent, interact, monitors and more. The free plan includes 1,000 credits a month, and a basic page scrape costs one.
There are two ways to authenticate. The easiest is browser sign-in, which needs no key at all:
claude mcp add --transport http firecrawl https://mcp.firecrawl.dev/v2/mcp-oauth Run /mcp inside Claude Code and choose the Firecrawl server to sign in. You can review and revoke the connection later from your Firecrawl MCP settings.
If you'd rather use an API key, for example on a server where there's no browser, pass it as a header:
claude mcp add --transport http firecrawl https://mcp.firecrawl.dev/v2/mcp \ --header "Authorization: Bearer $FIRECRAWL_API_KEY" Share the Config Without Leaking the Key
claude mcp add stores servers in your local config by default, which is fine for personal use. If you want to share the setup with your team through a project's .mcp.json, don't paste the key into it. Claude Code expands environment variables in that file, so commit this instead and let each person set FIRECRAWL_API_KEY in their own shell:
{ "mcpServers": { "firecrawl": { "type": "http", "url": "https://mcp.firecrawl.dev/v2/mcp", "headers": { "Authorization": "Bearer ${FIRECRAWL_API_KEY}" } } } } Run the MCP Server Locally
The MCP server is open source, so you can also run it on your own machine over stdio. This is the option to use if you self-host Firecrawl, because FIRECRAWL_API_URL points it at your own instance. I pin the package version rather than pulling the latest release on every start:
claude mcp add firecrawl -e FIRECRAWL_API_KEY=fc-YOUR_API_KEY -- npx -y firecrawl-mcp@3.37.0 Limit Which Tools Can Spend Credits
Scrape and search cost a credit or so per call, but a crawl visits as many pages as you allow, and an agent run can use dozens of credits. Claude Code asks before using a new tool by default, and you can make that permanent in .claude/settings.json: allow the cheap tools, and keep the expensive ones behind a prompt.
{ "permissions": { "allow": [ "mcp__firecrawl__firecrawl_scrape", "mcp__firecrawl__firecrawl_search", "mcp__firecrawl__firecrawl_map" ], "ask": [ "mcp__firecrawl__firecrawl_crawl", "mcp__firecrawl__firecrawl_agent" ] } } With this in place, Claude Code reads pages freely but stops to ask before starting a crawl or an agent run. That's when you can check the page limit it's about to use.
Example Prompts
The tools are most useful when the prompt says what to do with the result, not just what to fetch:
Map docs.example.com, then scrape only the pages about authentication and write a summary of the supported auth flows to docs/auth-notes.md. Scrape the pricing page at example.com and give me the plans as a table with name, monthly price and included usage. Read the migration guide at <url> and update our client code to match the new API. Show me the diff before applying it. The last one is the most useful in practice: Claude Code reads the current docs instead of relying on what it learned in training, then applies them to your code in the same session.
Related Guides
If you'd rather call Firecrawl from your own scripts than through an agent, I've written up the Python SDK, with scrape, crawl and extraction examples, on alphasec.io, and a shorter guide to turning websites into LLM-ready markdown here on dev.to.
This post includes a referral link: signing up through it gives us both extra credits.
