Skip to main content
Use Exa MCP to improve the built-in web search in ChatGPT, Claude, and MCP-compatible tools with Exa’s search capabilities, including web search, code search, Exa Agent, and Exa Connect. Exa offers a hosted server that works in any MCP client:
No API key is required to get started. Exa MCP is open source and available on GitHub.

Install

Exa is an official plugin in OpenAI’s plugin directory, which includes the hosted MCP server plus Exa’s search and exa-agent skills.
1

Open the plugin

Go to chatgpt.com/plugins/exa. It opens Exa in OpenAI’s plugin directory, which is the same directory for ChatGPT and for Codex.
2

Install it

Select the plus button to install. Sign in to Exa when prompted, either during install or the first time Codex or ChatGPT uses it.
Opening Plugins in Codex, viewing the Exa plugin, and authorizing access

Opening Plugins in Codex, adding Exa, and authorizing access

3

Start a new session

Skills load in chats and CLI sessions started after the install, so open a fresh one and ask for something that needs the web.
That’s it. The plugin includes both Exa’s MCP integration and skills, so there’s no separate MCP or skill setup required.See Exa in Codex and ChatGPT for the full setup and workflow guide.

Authentication

Exa MCP supports three authentication modes:

Sign in with OAuth

ChatGPT, Claude, and other marketplace installs prompt you to sign in when needed. In any client that supports MCP OAuth, you can request the same flow by connecting to:
Your client discovers Exa’s authorization server, opens the browser sign-in, and manages access.

Use an API key

Get your Exa API key

Create a key in the dashboard. New accounts start with free credits.
Add the x-api-key header to the MCP server configuration:

Available Tools

Use the tools URL parameter to choose what your client sees. For example, to enable all tools:
An explicit tools list replaces the defaults, so include every tool you want enabled including web search and fetch.

Exa Agent

Use Exa Agent for research that takes more than one search—for example, building a list, checking each item against criteria, or returning structured results. Agent runs are usage-based, so agent_run requires OAuth or an API key. This URL starts OAuth and adds Agent alongside the default tools:
If you use an API key, omit login and add the key as described in Authentication.
1

Describe what you need

Ask for the research in plain language. Your assistant passes the request to agent_run with a query, and Exa Agent works out what to search, reads the sources, and checks what it finds against the request.Ask your Agent to provide an outputSchema only when your application needs the findings in a consistent JSON format. You can share one with your assistant in the system prompt, or have it generate one for you.
2

Get the result

When the research completes, the tool call hands your assistant the full research package:
  • The written findings
  • The sources behind them
  • Validated JSON if you provided outputSchema
  • Usage and cost
Your assistant writes its reply from this package, so tell it what you want done with the output. You can ask it to summarize the findings, compare them, save them to a file, or anything else.
3

Continue if it needs more time

Research that outlasts a single MCP call doesn’t fail: the tool reports status: "running" with an id while the run continues on Exa. Your assistant calls agent_run again with that id as runId to pick the same run back up.
Use runId to keep waiting on current work. Use previousRunId to ask a new follow-up based on finished work.
See the Exa Agent guide for output schema patterns, effort modes, data sources, and pricing. Use web_search_advanced_exa when the request needs explicit category or domain filters, date ranges, text constraints, geo-targeting, query expansion, summaries, highlights, freshness control, or subpage crawling. For ordinary searches, keep web_search_exa; it gives the model a smaller tool surface and requires less configuration. Advanced Search does not require authentication, although authenticated connections use your own plan and rate limits. Enable it alongside the default tools with:
The MCP tool presents common Search API controls as tool-friendly fields such as includeDomains, startPublishedDate, enableHighlights, and maxAgeHours. Read the tool schema in your client for the exact field names.

Troubleshooting

The connection is using Exa’s free rate limits. Sign in with OAuth or add your own API key, then reconnect so requests use your team’s plan and limits.

Get your Exa API key

Create a key in the dashboard. New accounts start with free credits.
agent_run is not enabled by default and cannot use the free rate limits. Add it to the tools URL parameter, then connect with ?login or configure an API key. See Exa Agent for the complete URL.
Confirm that your client supports MCP OAuth and connect to https://mcp.exa.ai/mcp?login. Restart the client after changing the URL. If the client cannot complete MCP OAuth, use an API key instead.
An explicit tools parameter replaces the default tool list. Check that every tool you want is present in the URL, then restart your MCP client so it fetches the tool list again.
Use the built-in connector: select + (or Add connectors) → Connectors tab → search for Exa → select +.
Common config locations:
  • Cursor: ~/.cursor/mcp.json
  • fx: ~/.fx/mcp.json
  • VS Code: .vscode/mcp.json (in project root)
  • Claude desktop (macOS): ~/Library/Application Support/Claude/claude_desktop_config.json
  • Claude desktop (Windows): %APPDATA%\Claude\claude_desktop_config.json

Resources

GitHub

Exa MCP source code.

npm

Run Exa MCP locally with the npm package.

Agent skills

Portable skills that pair with Exa MCP.

Exa in Codex and ChatGPT

Full setup and workflow guide for the Exa plugin.
Last modified on September 15, 2026