About mcp-exa
mcp-exa is a Python MCP server for clients that need Exa web search, code examples, and URL content. It uses Exa’s public MCP endpoint and requires no API key.
Key features
- 01Web search
- 02Advanced filtered search
- 03Code context lookup
- 04Fetch content from a URL
Use cases
- 01Search for information on a topic
- 02Find code examples on GitHub or Stack Overflow
- 03Retrieve the full content of a URL
MCP support
Exposes Exa search capabilities to MCP clients through four tools: web search, advanced search, code context lookup, and URL crawling.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
9Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| type | any | No | Search type - 'auto', 'fast', 'deep', 'deep-reasoning', or 'instant'. |
| flags | any | No | Experimental flags for Exa usage. |
| query | string | Yes | The search query string. |
| category | any | No | Data category to focus on (e.g., 'company', 'news', 'research_paper'). |
| contents | any | No | Options for retrieving page contents. Use False to disable. |
| moderation | any | No | If True, moderate search results for safety. |
| num_results | any | No | Number of search results to return (default: 10). |
| exclude_text | any | No | Strings that must not appear in the page text. |
| include_text | any | No | Strings that must appear in the page text. |
| output_schema | any | No | JSON schema for deep search structured output. |
| user_location | any | No | Two-letter ISO country code for user location. |
| end_crawl_date | any | No | Only links crawled before this date (YYYY-MM-DD). |
| exclude_domains | any | No | Domains to exclude from the search. |
| include_domains | any | No | Domains to include in the search. |
| start_crawl_date | any | No | Only links crawled after this date (YYYY-MM-DD). |
| additional_queries | any | No | Alternative query formulations for deep search. |
| end_published_date | any | No | Only links published before this date (YYYY-MM-DD). |
| start_published_date | any | No | Only links published after this date (YYYY-MM-DD). |
Details
From the project READMEMCP Exa
A Python MCP server that exposes Exa search capabilities (no API key required)
mcp-name: io.github.daedalus/mcp-exa
Install
pip install mcp-exa
Usage
No API key required. The server uses Exa's public MCP endpoint.
Run the MCP server:
mcp-exa
Or use as a module:
python -m mcp_exa
Configuration
Available Tools
The server exposes the following MCP tools:
| Tool | Description |
|---|---|
web_search_exa | Search the web for any topic |
get_code_context_exa | Find code examples from GitHub, Stack Overflow |
crawling_exa | Get full content from a specific URL |
web_search_advanced_exa | Advanced search with filters |
MCP Client Configuration
Claude Desktop
Add to your config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"exa": {
"command": "mcp-exa"
}
}
}
OpenCode
Add to your opencode.json:
{
"mcp": {
"exa": {
"type": "stdio",
"command": "mcp-exa",
"enabled": true
}
}
}
Development
git clone https://github.com/daedalus/mcp-exa.git
cd mcp-exa
pip install -e ".[test]"
# run tests
pytest
# format
ruff format src/ tests/
# lint
ruff check src/ tests/
# type check
mypy src/
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.