﻿---
title: "Exa 在 Codex 里先装插件，手工 MCP 才是 mcp.exa.ai/mcp"
summary: "ChatGPT / Codex 推荐路径是 chatgpt.com/plugins/exa，插件自带 MCP 和技能。本机手工：codex mcp add exa --url https://mcp.exa.ai/mcp。密钥用 env_http_headers 的 x-api-key，不要抄 mcp-remote，也不要把 key 写进 URL。"
category: mcp
level: intermediate
surfaces: [cli, app, ide]
tags: ["MCP", "Exa", "plugins", "HTTP"]
canonical: /tips/mcp-exa-remote/
---

# Exa 在 Codex 里先装插件，手工 MCP 才是 mcp.exa.ai/mcp

ChatGPT / Codex 推荐路径是 chatgpt.com/plugins/exa，插件自带 MCP 和技能。本机手工：codex mcp add exa --url https://mcp.exa.ai/mcp。密钥用 env_http_headers 的 x-api-key，不要抄 mcp-remote，也不要把 key 写进 URL。

Exa 官方给 ChatGPT 和 Codex 的**推荐路径是插件**，不是先手写 MCP。打开 chatgpt.com/plugins/exa，点安装，按提示登录 Exa。技能只进安装之后新开的会话，旧线程不会自动加载。插件已经带上托管 MCP 以及 search / exa-agent 技能，不必再单独加一次。

本机 CLI、或你就是要自己管 `config.toml` 时，才手工接托管 Streamable HTTP：

```bash
codex mcp add exa --url https://mcp.exa.ai/mcp
```

```toml
[mcp_servers.exa]
url = "https://mcp.exa.ai/mcp"
enabled = true
```

默认工具是 `web_search_exa` 和 `web_fetch_exa`：自然语言搜索会带回页面内容，也可以按 URL 读文档 / changelog / issue。只要部分工具时，把名单写进 `url` 的 `tools` 查询，不要另开第二台：

```toml
[mcp_servers.exa]
url = "https://mcp.exa.ai/mcp?tools=web_search_exa,web_fetch_exa"
enabled = true
```

多步调研、名单、结构化输出才开 `agent_run`。那条按用量计费，必须登录或带自己的 API key。长任务大约 750 秒窗口内没跑完时，工具会回 `status: running` 和 `id`，再用同一个 `runId` 接着等，不要当成失败重开一条。

免费档够随便搜。生产或要抬限额时，官方 JSON 示例把 `x-api-key` 写成字面量，**不要**抄进 Codex。Codex 用 `env_http_headers`，左边是头名，右边是启动 Codex 那个进程里的变量**名**：

```toml
[mcp_servers.exa]
url = "https://mcp.exa.ai/mcp"
enabled = true

[mcp_servers.exa.env_http_headers]
x-api-key = "EXA_API_KEY"
```

不要把密钥拼进 URL，不要写进 `http_headers`。Bearer 表 `bearer_token_env_var` 对这台不对口，Exa 要的是 `x-api-key`。变量缺失时这颗头会被静默丢掉，请求仍会发出去，随后限流或 401。Codex 不读 `.env`。

不要做这些：

- 不要套 `mcp-remote`。Codex 自己会连 Streamable HTTP。
- 不要抄 Claude 的 `claude plugin install exa@claude-plugins-official` 或 `--transport http`。
- 不要抄 `mcpServers` JSON 当 Codex 主路径。
- 不要把 `EXA_API_KEY` 写进 `env` 表或 `args`。
- 不要给它 `required = true` 挂全局。
- 不要一上来 `--yolo`。网页正文会进上下文。

网页 Cloud 不读 `~/.codex/config.toml`。改完新开会话。用 `codex mcp get exa` 看传输是 streamable_http。插件不生效时先确认装完后开了**新**会话。

## 来源

- [Exa · Codex and ChatGPT](https://exa.ai/docs/integrations/chatgpt-codex)
- [Exa · Web Search MCP](https://exa.ai/docs/reference/exa-mcp)
- [OpenAI · Model Context Protocol](https://learn.chatgpt.com/docs/extend/mcp)
