by exa-labs
Exa MCP for web search and web crawling!
# Add to your Claude Code skills
git clone https://github.com/exa-labs/exa-mcp-serverGuides for using mcp servers skills like exa-mcp-server.
Last scanned: 4/20/2026
{
"issues": [
{
"type": "npm-audit",
"message": "@mapbox/node-pre-gyp: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@modelcontextprotocol/sdk: Anthropic's MCP TypeScript SDK has a ReDoS vulnerability",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@tootallnate/once: @tootallnate/once vulnerable to Incorrect Control Flow Scoping",
"severity": "low"
},
{
"type": "npm-audit",
"message": "@vercel/fun: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@vercel/gatsby-plugin-vercel-builder: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@vercel/hydrogen: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@vercel/next: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@vercel/nft: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@vercel/node: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@vercel/redwood: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@vercel/remix-builder: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@vercel/routing-utils: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "@vercel/static-build: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@vercel/static-config: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "ajv: ajv has ReDoS when using `$data` option",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "axios: Axios has a NO_PROXY Hostname Normalization Bypass that Leads to SSRF",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "brace-expansion: brace-expansion: Zero-step sequence causes process hang and memory exhaustion",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "debug: Regular Expression Denial of Service in debug",
"severity": "low"
},
{
"type": "npm-audit",
"message": "diff: jsdiff has a Denial of Service vulnerability in parsePatch and applyPatch",
"severity": "low"
},
{
"type": "npm-audit",
"message": "esbuild: esbuild enables any website to send any requests to the development server and read the response",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "follow-redirects: follow-redirects leaks Custom Authentication Headers to Cross-Domain Redirect Targets",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "lodash: Lodash has Prototype Pollution Vulnerability in `_.unset` and `_.omit` functions",
"severity": "high"
},
{
"type": "npm-audit",
"message": "mcp-handler: mcp-handler has a tool response leak across concurrent client sessions ('Race Condition')",
"severity": "high"
},
{
"type": "npm-audit",
"message": "minimatch: minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern",
"severity": "high"
},
{
"type": "npm-audit",
"message": "path-to-regexp: path-to-regexp outputs backtracking regular expressions",
"severity": "high"
},
{
"type": "npm-audit",
"message": "picomatch: Picomatch: Method Injection in POSIX Character Classes causes incorrect Glob Matching",
"severity": "high"
},
{
"type": "npm-audit",
"message": "qs: qs's arrayLimit bypass in comma parsing allows denial of service",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "semver: semver vulnerable to Regular Expression Denial of Service",
"severity": "high"
},
{
"type": "npm-audit",
"message": "shelljs: Improper Privilege Management in shelljs",
"severity": "high"
},
{
"type": "npm-audit",
"message": "smol-toml: smol-toml: Denial of Service via TOML documents containing thousands of consecutive commented lines",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "tar: Arbitrary File Read/Write via Hardlink Target Escape Through Symlink Chain in node-tar Extraction",
"severity": "high"
},
{
"type": "npm-audit",
"message": "undici: Use of Insufficiently Random Values in undici",
"severity": "high"
},
{
"type": "npm-audit",
"message": "vercel: Vulnerability found",
"severity": "high"
},
{
"type": "npm-audit",
"message": "whoami: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "yaml: yaml is vulnerable to Stack Overflow via deeply nested YAML collections",
"severity": "medium"
}
],
"status": "WARNING",
"scannedAt": "2026-04-20T06:14:54.820Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}exa-mcp-server is an open-source mcp servers skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by exa-labs. Exa MCP for web search and web crawling!. It has 4,689 GitHub stars.
exa-mcp-server returned warnings in SkillsLLM's automated security scan. It has no critical vulnerabilities, but review the flagged issues in the Security Report section before adding it to your workflow.
Clone the repository with "git clone https://github.com/exa-labs/exa-mcp-server" and add it to your Claude Code skills directory (see the Installation section above).
exa-mcp-server is primarily written in TypeScript. It is open-source under exa-labs on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other MCP Servers skills you can browse and compare side by side. Open the MCP Servers category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh exa-mcp-server against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
Requires a passing catalog security scan. Resolve the flagged issues and resubmit to enable featuring.
Connect AI assistants to Exa's search capabilities: web search, code search, and company research.
Full Documentation | npm Package | Get Your Exa API Key
Connect to Exa's hosted MCP server:
https://mcp.exa.ai/mcp
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"exa": {
"url": "https://mcp.exa.ai/mcp"
}
}
}
Add to .vscode/mcp.json:
{
"servers": {
"exa": {
"type": "http",
"url": "https://mcp.exa.ai/mcp"
}
}
}
claude mcp add --transport http exa https://mcp.exa.ai/mcp
Exa is available as a native Claude Connector — no config files or terminal commands needed.
That's it! Claude will now have access to Exa's search tools.
Add to your config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"exa": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.exa.ai/mcp"]
}
}
}
codex mcp add exa --url https://mcp.exa.ai/mcp
Add to your opencode.json:
{
"mcp": {
"exa": {
"type": "remote",
"url": "https://mcp.exa.ai/mcp",
"enabled": true
}
}
}
Open the MCP Store panel (from the "..." dropdown in the side panel), then add a custom server with:
https://mcp.exa.ai/mcp
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"exa": {
"serverUrl": "https://mcp.exa.ai/mcp"
}
}
}
Add to your Zed settings:
{
"context_servers": {
"exa": {
"url": "https://mcp.exa.ai/mcp"
}
}
}
Add to ~/.gemini/settings.json:
{
"mcpServers": {
"exa": {
"httpUrl": "https://mcp.exa.ai/mcp"
}
}
}
In v0, select Prompt Tools > Add MCP and enter:
https://mcp.exa.ai/mcp
Go to Settings > MCP Servers > Add MCP Server and add:
{
"exa": {
"url": "https://mcp.exa.ai/mcp"
}
}
Add to ~/.kiro/settings/mcp.json:
{
"mcpServers": {
"exa": {
"url": "https://mcp.exa.ai/mcp"
}
}
}
Add to your Roo Code MCP config:
{
"mcpServers": {
"exa": {
"type": "streamable-http",
"url": "https://mcp.exa.ai/mcp"
}
}
}
Or add manually: open LM Studio, go to the Program tab, click Install > Edit mcp.json, and add:
{
"exa": {
"url": "https://mcp.exa.ai/mcp"
}
}
Exa's tools will appear in the chat. Ask your model to search the web, fetch a page, or research a topic.
Go to Integrations > MCP Servers > Add MCP Server, then enter:
Exahttps://mcp.exa.ai/mcpOr click here to install automatically.
For clients that support remote MCP:
{
"mcpServers": {
"exa": {
"url": "https://mcp.exa.ai/mcp"
}
}
}
For clients that need mcp-remote:
{
"mcpServers": {
"exa": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.exa.ai/mcp"]
}
}
}
Use the npm package with your API key. Get your API key.
{
"mcpServers": {
"exa": {
"command": "npx",
"args": ["-y", "exa-mcp-server"],
"env": {
"EXA_API_KEY": "your_api_key"
}
}
}
}
Enabled by Default:
| Tool | Description |
|---|---|
web_search_exa |
Search the web for any topic and get clean, ready-to-use content |
web_fetch_exa |
Get the full content of a specific webpage from a known URL |
Off by Default:
| Tool | Description |
|---|---|
web_search_advanced_exa |
Advanced web search with full control over filters, domains, dates, and content options |
Exa Agent Tools (optional, OAuth or API key required):
| Tool | Description |
|---|---|
agent_create_run |
Start an async Exa Agent run for multi-step research, list-building, enrichment, or structured output |
agent_wait_for_run |
Poll an Agent run until terminal status or timeout |
agent_get_run_output |
Retrieve completed text, structured output, grounding, usage, and cost |
agent_cancel_run |
Cancel a queued or running Agent run |
Deprecated (still available for backwards compatibility):
| Tool | Use instead |
|---|---|
get_code_context_exa |
web_search_exa |
company_research_exa |
web_search_advanced_exa |
crawling_exa |
web_fetch_exa |
people_search_exa |
web_search_advanced_exa |
linkedin_search_exa |
web_search_advanced_exa |
deep_researcher_start |
Research API |
deep_researcher_check |
Research API |
deep_search_exa |
web_search_advanced_exa |
Enable additional tools with the tools parameter:
https://mcp.exa.ai/mcp?exaApiKey=YOUR_KEY&tools=web_search_exa,web_search_advanced_exa,web_fetch_exa
If you want to use Exa Agent, enable the optional toolset like so:
https://mcp.exa.ai/mcp?tools=agent_tools
If you want both search and Exa Agent tools enabled:
https://mcp.exa.ai/mcp?tools=web_search_exa,web_fetch_exa,agent_tools
Ready-to-use skills for Claude Code. Each skill teaches Claude how to use Exa search for a specific task. Copy the content inside a dropdown and paste it into Claude Code — it handles the rest.
Copy the content below and paste it into Claude Code. It will set up the MCP connection and skill for you.
Step 1: Install or update Exa MCP
If Exa MCP already exists in your MCP configuration, either uninstall it first and install the new one, or update your existing MCP config with this endpoint. Run this command in your terminal:
claude mcp add --transport http exa "https://mcp.exa.ai/mcp?tools=web_search_advanced_exa"
Step 2: Add this Claude skill
---
name: company-research
description: Company research using Exa search. Finds company info, competitors, news, financials, LinkedIn profiles, builds company lists. Use when researching companies, doing competitor analysis, market research, or building company lists.
context: fork
---
# Company Research
## Tool Restriction (Critical)
ONLY use `web_search_advanced_exa`. Do NOT use `web_search_exa` or any other Exa tools.
## Token Isolation (Critical)
Never run Exa searches in main context. Always spawn Task agents:
- Agent runs Exa search internally
- Agent processes results using LLM intelligence
- Agent returns only distilled output (compact JSON or brief markdown)
- Main context stays clean regardless of search volume
## Dynamic Tuning
No hardcoded numResults. Tune to user intent:
- User says "a few" → 10-20
- User says "comprehensive" → 50-100
- User specifies number → match it
- Ambiguous? Ask: "How many companies would you like?"
## Query Variation
Exa returns different results for different phrasings. For coverage:
- Generate 2-3 query variations
- Run in parallel
- Merge and deduplicate
## Categories
Use appropriate Exa `category` depending on what you need:
- `company` → homepages, rich metadata (headcount, location, funding, revenue)
- `news` → press coverage, announcements
- `people` → LinkedIn profiles (public data)
- No category (`type: "auto"`) → general web results, deep dives, broader co