mcp-exa
# mcp-exa
MCP server to give client the ability to connect to Exa
## Setup
```bash
cp .env.example .env # then fill in EXA_API_KEY
uv sync
```
The server starts without a key; tools return a setup error until `EXA_API_KEY` is set.
Register it in an MCP client (e.g. Claude Desktop):
```json
{
"mcpServers": {
"exa": {
"command": "uv",
"args": ["--directory", "/path/to/mcp-exa", "run", "main.py"]
}
}
}
```
## Tools
- `exa_search`: web search with highlights or full text; filters for category
(`company`, `news`, `publication`, `people`, ...), domains, and published-date range
- `exa_get_contents`: read known URLs, optionally only the passages relevant to a query
- `exa_deep_search`: multi-step search that synthesizes a cited answer, as text or
shaped by a JSON Schema (`output_schema`)
- `exa_research_start` / `exa_research_get`: Exa's research agent for lists and reports.
Runs take minutes, so `start` returns a `run_id` and `get` waits up to 50 seconds per call
## Cost
The free tier gives $10 of credits per month. Every response includes `cost_dollars`.
Roughly: `instant` search $4/1k, `auto`/`fast` $7/1k (+$1/1k per result above 10),
deep search $12–15/1k, contents $1/1k pages; research runs cost the most. To keep one call
from draining the budget, the server caps results at 25, URLs at 10 per call, and research
effort at `medium`.
TDQS
Scored across 5 tools
exa_search, exa_deep_search, and exa_research_start all perform search-like operations, so there is some conceptual overlap. However, the descriptions clearly differentiate them: ranked results vs. synthesized answer with citations vs. long-running research agent, which helps an agent choose correctly.
All tools use a consistent exa_ prefix and snake_case. Minor deviation: exa_search and exa_deep_search are noun-style while exa_get_contents, exa_research_start, and exa_research_get follow verb_noun, but the pattern remains readable and predictable.
Five tools is well-scoped for a web search and research server, with each tool earning its place (search, read, synthesize, async start, async poll). No redundancy or padding.
The surface covers the full search lifecycle: ranked search, page reading, synthesized answers, and async research with status polling. Minor gap: no find-similar/lookup-by-URL tool that Exa typically offers, but core workflows are covered.