/ Directory / Playground / Exa Search
● Official exa-labs 🔑 Needs your key

Exa Search

by exa-labs · exa-labs/exa-mcp-server

Neural web search built for AI agents — searches by meaning, returns clean content. Better than Google for 'find me essays like X'.

Exa's official MCP. Combines neural (semantic) and keyword search modes, returns full page content (not just snippets), and supports targeted modes: company research, LinkedIn lookups, GitHub finds, research-paper search. The right choice when 'what does this thing mean?' matters more than 'where is this exact phrase'.

Why use it

Key features

Live Demo

What it looks like in practice

exa-search.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "exa-search": {
      "command": "npx",
      "args": [
        "-y",
        "exa-mcp-server"
      ]
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "exa-search": {
      "command": "npx",
      "args": [
        "-y",
        "exa-mcp-server"
      ]
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "exa-search": {
      "command": "npx",
      "args": [
        "-y",
        "exa-mcp-server"
      ]
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "exa-search": {
      "command": "npx",
      "args": [
        "-y",
        "exa-mcp-server"
      ]
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "exa-search",
      "command": "npx",
      "args": [
        "-y",
        "exa-mcp-server"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "exa-search": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "exa-mcp-server"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add exa-search -- npx -y exa-mcp-server

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use Exa Search

Find articles similar to one you already love

👤 Researchers, writers, founders building reading lists ⏱ ~10 min beginner

When to use: You have one canonical essay/post on a topic and want more like it. Google's 'related' is useless.

Prerequisites
  • Exa API key — exa.ai/dashboard — free tier gives ~1000 searches/month
Flow
  1. Use neural mode with a descriptive query
    Find 10 essays similar in spirit to 'The Bitter Lesson' by Rich Sutton. I want long-form opinion pieces about ML scaling, not papers.✓ Copied
    → 10 results that match the *vibe*, not just the keywords
  2. Pull contents and skim
    For each, fetch the contents (text mode) and give me a 2-line summary plus a 'why this is similar' note.✓ Copied
    → Per-result summary + similarity reason
  3. Save the keepers
    I want to actually read 3 of these. Which 3 are the highest signal? Save links to /reading/ml-scaling.md.✓ Copied
    → Curated short list, not all 10

Outcome: A reading list with real intellectual coherence, not SEO chaff.

Pitfalls
  • Neural search drifts into adjacent topics — Combine with includeDomains to constrain (e.g. only essays.gwern.net, lesswrong.com) when you want a tight cluster
  • Some pages return paywalled previews as content — Check the content length; very short returns are usually paywalled — flag and skip
Combine with: filesystem · memory

Pull a 1-pager on a company before a sales call

👤 Sales, BD, recruiters ⏱ ~10 min beginner

When to use: Call in 20 minutes; you need recent news, key people, recent funding, in one shot.

Flow
  1. Run a company-mode search
    Use Exa's company mode for 'Acme Robotics, San Francisco'. Pull homepage, recent news (last 90 days), and any announcements.✓ Copied
    → Mix of homepage content, blog posts, news articles
  2. Synthesize a brief
    Write a 1-pager: what they do, recent milestones, key people mentioned in news, anything I should congratulate or commiserate about.✓ Copied
    → Talking-point ready brief with cites
  3. Find the right contact angle
    Based on their recent news, what's a credible reason to reach out to them this week? Be specific — name the news item.✓ Copied
    → One concrete hook tied to a real recent event

Outcome: A briefing more useful than 30 minutes of LinkedIn stalking.

Pitfalls
  • Press-release noise drowns real news — Filter excludeDomains: ['prnewswire.com', 'businesswire.com'] for actual analysis
Combine with: memory

Get a cited one-shot answer to a factual question

👤 Anyone who needs a quick fact with a source ⏱ ~2 min beginner

When to use: You need an answer + citation for a specific factual question, faster than search → click → read.

Flow
  1. Use exa_answer
    Use exa_answer for: 'What was Anthropic's last announced funding round and total raised?'✓ Copied
    → Direct answer plus 1-3 source URLs
  2. Verify the source
    Open the top source and confirm the number matches what Exa returned.✓ Copied
    → Confirmation or correction

Outcome: A factually-supported answer in under 30 seconds.

Pitfalls
  • Answers can lag (training/index cutoff) — For things that change weekly (stock price, leadership), verify the freshness of the sources, not just the answer

Combinations

Pair with other MCPs for X10 leverage

exa-search + memory

Save research findings to a topic graph as you go

Search for 'state of small LMs in 2026'. For each useful result, store the key claim as an observation on the 'small-lms-2026' entity in memory, with the source URL.✓ Copied
exa-search + filesystem

Build a reading list saved as Markdown

Find 10 essays similar to 'The Bitter Lesson'. Save the curated short list (top 3) with summaries to /reading/ml-scaling.md.✓ Copied
exa-search + github

Discover relevant repos via Exa, then operate on them via GitHub MCP

Use Exa to find Rust implementations of WebGPU shaders. For the top 3 repos, get the GitHub stats (stars, last commit) via the GitHub MCP.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
web_search_exa query: str, numResults?: int, type?: 'neural'|'keyword'|'auto', includeDomains?: str[], excludeDomains?: str[], startPublishedDate?: str, endPublishedDate?: str General-purpose neural or keyword search 1 Exa search credit
company_research_exa query: str, numResults? Pull a company brief from public web sources 1 credit
linkedin_search_exa query: str, numResults? Find specific people/companies on LinkedIn (links only — content varies) 1 credit
github_search_exa query: str, numResults? Discover repos by description (use github MCP for actual repo ops) 1 credit
research_paper_search_exa query: str, numResults?, dateRange? Academic search across arXiv, OpenReview, etc. 1 credit
deep_researcher_start / check query: str (start), task_id (check) Big multi-source research tasks; poll for results multiple credits
exa_answer query: str Direct Q&A with cited sources 1+ credits
crawling_exa url: str Fetch a single URL via Exa's pipeline (boilerplate stripped, JS rendered) 1 credit

Cost & Limits

What this costs to run

API quota
Free tier ~1000 searches/month; paid plans scale up
Tokens per call
Search results with content can be 2-10k tokens per result — cap numResults aggressively
Monetary
Free tier suffices for personal use; paid plans from $10/mo
Tip
Use numResults: 5 by default. Use text: false if you only need links, then call crawling_exa only on the few you actually want to read.

Security

Permissions, secrets, blast radius

Credential storage: API key in env var EXA_API_KEY
Data egress: Queries hit api.exa.ai; Exa fetches pages on your behalf via their infrastructure

Troubleshooting

Common errors and fixes

401 Unauthorized

API key missing or wrong. Set EXA_API_KEY in MCP client env. Verify at exa.ai/dashboard.

402 Payment Required / quota exhausted

Free tier credits used. Upgrade or wait for monthly reset.

Results are off-topic with neural mode

Try type: 'keyword' for literal matching, or add includeDomains/excludeDomains to focus the search.

Empty content on returned URLs

Some pages can't be extracted. Use crawling_exa directly on the URL, or fall back to fetch/firecrawl.

Alternatives

Exa Search vs others

AlternativeWhen to use it insteadTradeoff
Brave Search MCPYou want plain keyword web search with privacy guaranteesNo semantic mode; results are SERP-style snippets, not full content
FirecrawlYou already have URLs and need clean content/structured extraction, not searchDifferent tool — scraping vs search
Tavily / Perplexity APIs (via custom MCP)You want a different search-with-LLM-answer providerTavily is search+answer focused; Exa is broader (search/research/answer)

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills