Codex
Codex connects over HTTP with a bearer token, so no bridge and no Node.js setup is needed. The one thing that makes it different from Claude Code is where the token lives.
Codex stores only the name of an environment variable — config.toml gets
bearer_token_env_var, never the token itself. The variable has to exist in every shell that starts
Codex. A bare export dies with the terminal, and the failure then looks like a rejected key rather
than a missing variable.
Add the server
Open a terminal on the machine where Codex is installed. The app's snippet does three things at once — exports the token for this session, appends it to your shell profile so future terminals have it, and registers the server:
export AOV_UPSELL_MCP_TOKEN="aov_mcp_YOUR_KEY"
echo 'export AOV_UPSELL_MCP_TOKEN="aov_mcp_YOUR_KEY"' >> "${ZDOTDIR:-$HOME}/.zshrc"
codex mcp add aov-upsell-your-store \
--url https://upsell.avada.io/mcp \
--bearer-token-env-var AOV_UPSELL_MCP_TOKENCopy the block from Settings → MCP connectors rather than typing this — it arrives with your server name and token already filled in.
The profile line targets ~/.zshrc. On bash, add the same export line to ~/.bashrc instead.
Creating a new key appends another line; the last export in the file wins.
If the server name already exists, remove the old entry first:
codex mcp remove aov-upsell-your-storeCheck it worked
Restart the Codex CLI, or the Codex IDE extension. In a chat, type /mcp. You should see
aov-upsell-your-store listed, with a tool count matching the access level you chose — 18 for read
only, 25 with write, 27 with delete.
Then ask something only your store can answer:
What free gift campaigns am I running?
If the server is listed but the question comes back with a refusal, the address is right and the token is not — see Troubleshooting.
Related
- Authentication
- ChatGPT Desktop — same config file, different app
- Troubleshooting