codex-mcp-proxy
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@codex-mcp-proxysearch the codebase for authentication logic"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
codex-mcp-proxy
Use a remote MCP server that you have already authenticated in Codex from Claude Code, without going through the server's OAuth flow a second time.
Some MCP servers only allow OAuth clients that the vendor has registered (Codex, ChatGPT, and so on), so Claude Code's own login fails or is blocked by an admin policy. This tool sidesteps that: Claude Code launches codex-mcp-proxy as a plain stdio MCP server, and the proxy forwards every JSON-RPC message to the remote server using the OAuth tokens Codex stored when you logged in there.
Claude Code --stdio--> codex-mcp-proxy --HTTPS + Bearer <Codex token>--> remote MCP serverHow it works
Server definition comes from Codex's
~/.codex/config.toml([mcp_servers.<name>]with aurl).Tokens come from where Codex keeps them: the macOS Keychain item with service
Codex MCP Credentialsand account<name>|<sha256 prefix>, or the file fallback~/.codex/.credentials.json. The hash input is undocumented, so the proxy enumerates the keychain items by the<name>|prefix when its guess misses, andaddbakes the resolved account into the Claude Code registration so later launches go straight to it.Transport is Streamable HTTP, with automatic fallback to the older SSE transport when the server answers the first POST with 404/405.
Refresh: when the access token is about to expire the proxy refreshes it with the stored refresh token and client id, then writes the new tokens back into Codex's store so both tools stay in sync (disable with
--no-write-back).No interactive login: if refresh fails, the proxy reports a clear error telling you to log in again in Codex.
The proxy is transparent: initialize, tools, prompts, resources, notifications, and server-initiated requests all pass through unchanged.
Related MCP server: ccg-mcp
Requirements
Node.js 20+
Codex installed, with the MCP server already logged in there (run
codex, then/mcp)macOS for keychain access; on other platforms Codex uses the credentials file, which is also supported
Install
cd mcp-proxy
npm install
npm run build
npm link # puts `codex-mcp-proxy` on your PATHUsage
# 1. See which Codex MCP servers can be proxied
codex-mcp-proxy list
# 2. Verify credentials are found and the server answers
codex-mcp-proxy check glean_default
# 3. Register it with Claude Code (runs `claude mcp add` for you)
codex-mcp-proxy add glean_default --name glean --scope userThen restart Claude Code (or run /mcp) and the server's tools appear under the name you chose.
The first time the proxy reads a Codex keychain item, macOS shows a keychain prompt. Choose Always Allow so Claude Code can start the proxy without prompting again. A separate prompt appears for each server's item.
Commands
Command | Purpose |
| Run the stdio proxy. This is what Claude Code executes. |
| List remote MCP servers from Codex's config. |
| Load credentials, connect, and list the server's tools. |
| Register the proxy with Claude Code via |
| Print the keychain account names that will be looked up. |
Options
Option | Meaning |
| Codex home (default |
| Connect to a different URL than the one in Codex's config. |
| Read exactly this keychain account instead of deriving it. |
| Force a transport (default |
| Keep refreshed tokens in memory only. |
| For |
| Debug logging on stderr. |
Manual registration
If you prefer to edit config yourself, the equivalent of add is:
claude mcp add --transport stdio --scope user glean -- codex-mcp-proxy glean_defaultTroubleshooting
"No Codex OAuth credentials found": log in to the server in Codex first with
codex mcp login <server>(or/mcpinside Codex). Runcodex-mcp-proxy key <server>to see which keychain accounts are checked;--accountoverrides the derivation."could not be refreshed": the refresh token was rejected, so Codex's own session is dead too. Run
codex mcp login <server>; the proxy picks up the new tokens on its next start. Confirm withcodex-mcp-proxy check <server>.Keychain prompt every time: choose Always Allow in the macOS prompt, or the proxy has to ask on each launch.
Server-side 4xx after connecting: run
check <server> -vto see the HTTP status and transport used;--transport sseforces the legacy transport.
Development
npm run build # compile to dist/
node scripts/smoke.mjs glean_default # drive the proxy over stdio like an MCP clientThis server cannot be deployed
Maintenance
Related MCP Connectors
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
Connect AI agents to Filepad workspaces through OAuth MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables multi-AI collaborative analysis by proxying requests to existing login-based MCP servers (Gemini CLI and Codex CLI) from Claude Desktop or Claude Code.-
- AlicenseNot gradedqualityCmaintenanceEnables Claude Code Desktop to call OpenAI Codex/GPT-5 and Gemini APIs via stdio MCP, without requiring local CLI tools.MIT
- AlicenseNot gradedqualityAmaintenanceEnables Codex chat to use the Claude Code harness for repository consultation and editing, routing through GPT models via a local proxy.5MIT
- AlicenseAqualityCmaintenanceMCP server that lets Claude Code drive the local Codex CLI as a sub-agent for concurrent queries and optional file/shell actions, using the CLI's existing login and sessions.4491MIT