Last Verified: September 2026 — commands checked against exa-labs/exa-mcp-server and the official Claude Code MCP docs
Ask Claude Code about a library that shipped last month and one of two things happens: it answers from training data that’s already stale, or it searches and comes back with a list of links and snippets it then has to fetch one by one. Either way you spend the next few turns steering it toward the page that actually has the answer.
Exa MCP connects Claude Code to Exa, a search engine built for AI agents. Instead of ten blue links, web_search_exa returns clean page content ready to read, and web_fetch_exa turns any URL into Markdown. It’s a hosted server, so setup is one command, and it works without an API key to start.
Already using our Firecrawl MCP guide? They pair well: Exa is best at finding the right pages, Firecrawl at scraping JavaScript-heavy sites once you know where to look.
Quick Start
One command, no key needed:
claude mcp add --transport http --scope user exa https://mcp.exa.ai/mcp
Restart Claude Code and run claude mcp list. Total time: about 1 minute. Anonymous use is rate-limited; add an API key later if you hit the limit.
⚡ Copy This Prompt: Let Claude Code Install and Verify It For You
Skip the manual steps below and hand the whole job to the agent instead:
You have shell access and the `claude mcp` CLI on this machine. Connect the Exa MCP server to Claude Code and report back. Do not tell me it's done unless step 4 actually confirms it:
1. Run `claude mcp list`. If an exa entry already exists, show me its URL and stop instead of adding a second one.
2. Add Exa's hosted server for all projects (no key needed to start):
`claude mcp add --transport http --scope user exa https://mcp.exa.ai/mcp`
3. Run `claude mcp list` and confirm exa shows Connected.
4. Use `web_search_exa` to find the latest release notes for Claude Code, then use `web_fetch_exa` on the top result and give me 3 bullet points from the page with its URL.
If I later want higher limits, tell me to create a key at https://dashboard.exa.ai/api-keys and re-add the server with an `x-api-key` header. Never ask me to paste the key into this chat, and never put it in the URL. If any step fails, give me the exact error and the command that produced it. Do not skip ahead.
The last step is a real search-then-read test, so you see Exa’s output before trusting it with actual work.
What You’ll Need
| Requirement | Why You Need It | Time |
|---|---|---|
| Claude Code installed | The client that calls the Exa tools | 0 min |
| Nothing else to start | The hosted server works anonymously, with rate limits | 0 min |
| An Exa API key (optional) | Higher limits and access to the Exa Agent research tool | ~2 min |
Step-by-Step Setup
Prefer to do it by hand instead of delegating to the agent? Here’s the manual version.
Step 1 — Add the hosted server
~30 sec
--scope user makes Exa available in every project:
claude mcp add --transport http --scope user exa https://mcp.exa.ai/mcp
Prefer plugins? Exa is also in the official Claude plugin marketplace, which adds its search Skills on top of the same tools:
claude plugin install exa@claude-plugins-official
Step 2 — Add an API key (optional)
~2 min
Create a key at dashboard.exa.ai/api-keys, remove the anonymous entry with claude mcp remove exa --scope user, and re-add it with the key as a header:
claude mcp add --transport http --scope user exa https://mcp.exa.ai/mcp \
--header "x-api-key: <your-exa-api-key>"
Exa also accepts the key as a URL parameter, but a header keeps it out of logs and shell history.
Step 3 — Turn on advanced search (optional)
~30 sec
By default you get web_search_exa and web_fetch_exa. Add web_search_advanced_exa for domain, date, and highlight filters. The tools parameter replaces the defaults, so list every tool you want:
claude mcp add --transport http --scope user exa \
"https://mcp.exa.ai/mcp?tools=web_search_exa,web_fetch_exa,web_search_advanced_exa"
What Each Piece Does
| Tool | What Claude Can Do With It |
|---|---|
web_search_exa (default) | Search the web and get clean, ready-to-use page content back instead of just links |
web_fetch_exa (default) | Read one or more URLs as clean Markdown |
web_search_advanced_exa (optional) | Search with filters for domains and dates, plus highlights, summaries, and subpage crawling |
agent_run (optional) | Run an Exa Agent for multi-step research, list building, and structured output. Needs OAuth or an API key |
| Hosted server | Nothing runs on your machine. Claude Code talks to mcp.exa.ai over HTTP |
Verify It’s Actually Working
claude mcp list
! exa rate limit errors → add an API key (Step 2)
✘ exa Failed to connect → check the URL ends in
/mcp and quote it if it has ?tools=
Then give Claude a question its training data can’t answer:
Use Exa to find what changed in the latest release of the framework this repo uses, and tell me if any of it affects our code
If Claude calls web_search_exa, reads a result, and cites a URL from the last few weeks, it’s working.
Common Mistakes to Avoid
- Adding only the advanced tool.
?tools=web_search_advanced_exareplaces the defaults, so basic search and fetch disappear. List every tool you want in one comma-separated value. - Leaving the URL unquoted. A
?or&in the URL can be eaten by your shell. Wrap the URL in quotes whenever it has parameters. - Putting the API key in the URL. It works, but the key ends up in your Claude Code config and shell history in plain sight. Use the
x-api-keyheader. - Registering it twice. Installing the plugin and running
claude mcp addgives Claude two copies of every Exa tool. Pick one. - Trusting search results blindly. Web pages can contain prompt-injection text. Ask Claude to cite its sources, and review anything it plans to run based on what it read.
Q&A
Is it free?
You can connect and search without a key, with rate limits. For heavier use or Exa Agent, create a key in the Exa dashboard and check Exa’s current pricing there.
Doesn’t Claude Code already have web search?
It does. Exa is an alternative that returns cleaned page content along with results and adds filters and a research agent. Many people keep both and tell Claude when to use Exa.
Exa or Firecrawl?
Exa for finding pages and reading them as text. Firecrawl for scraping sites that need JavaScript rendering or for crawling a whole site. They don’t conflict.
Can I sign in instead of using a key?
Yes. Exa supports OAuth. Adding ?login to the URL forces the sign-in flow, which you complete with /mcp in Claude Code.
How do I remove it?
claude mcp remove exa --scope user. If you created an API key, revoke it in the Exa dashboard.
Official Resources
- exa-labs/exa-mcp-server on GitHub — tools, parameters, and auth options
- Exa MCP documentation — official reference
- Exa API keys — create a key for higher limits
- Claude Code MCP docs —
claude mcp addoptions and headers
If this guide got Claude Code answering with this month’s docs instead of last year’s, follow us on X for more setup guides and prompt tips.









