MCP Proxy for Any Client
The Omnodex MCP proxy sits between an agent and its MCP servers. The agent connects to the proxy as a single MCP server; the proxy starts your real MCP servers, forwards every call, and records each one in the Omnodex event log.
Use it for agents that have no hook system, or when you want MCP-level controls such as parameter redaction.
Where the proxy is used
Section titled “Where the proxy is used”| Client | How the proxy is set up |
|---|---|
| Cowork | The Omnodex plugin starts it. See Cowork. |
| OpenAI Codex (ChatGPT Desktop, CLI, IDE) | Registered as an MCP server. See Codex. |
| Google Antigravity | Registered as an omnodex entry in mcp_config.json. See Antigravity. |
| Claude Code | Optional, alongside hooks. See Configuration. |
| Claude Desktop (chat app) | Registered as an MCP server. See below. |
| Any other client that supports stdio MCP servers | Registered as an MCP server. See below. |
Web apps such as claude.ai and ChatGPT on the web do not run MCP servers on your machine, so the local proxy cannot see their tool calls.
Set up the proxy
Section titled “Set up the proxy”-
Install Omnodex from source on the machine where the client runs. See Installation.
-
Create the proxy configuration.
Terminal window omnodex mcp-proxy installThis creates a template
omnodex-proxy.jsonin your Omnodex home if none exists. Move the MCP servers you want Omnodex to see out of the client’s own configuration and intoupstream_servers. See MCP proxy configuration for every field. -
Check it.
Terminal window omnodex mcp-proxy statusLists the configured upstream servers and their redaction settings. To confirm the upstreams start, run the proxy yourself; it waits for input, and Ctrl+C stops it:
Terminal window node /path/to/omnodex/packages/mcp-proxy/dist/bin/omnodex-mcp-proxy.js --config ~/.omnodex/omnodex-proxy.json -
Register the proxy with your client as a stdio MCP server named
omnodex, in place of the servers you moved. Use absolute paths; desktop apps may not share your terminal’sPATHor expand~.Setting Value Command Absolute path to node(node.exeon Windows)Arguments <repo>/packages/mcp-proxy/dist/bin/omnodex-mcp-proxy.js,--config, absolute path toomnodex-proxy.json -
Restart the client and start a new conversation. The proxy’s own tools (
omnodex_status,omnodex_connect,omnodex_connection_status) and your upstream tools appear. Upstream tools are named<server>__<tool>, for examplefilesystem__read_file.
Claude Desktop
Section titled “Claude Desktop”Claude Desktop reads MCP servers from claude_desktop_config.json:
%APPDATA%\Claude\claude_desktop_config.json:
{ "mcpServers": { "omnodex": { "command": "C:\\Program Files\\nodejs\\node.exe", "args": [ "C:\\path\\to\\omnodex\\packages\\mcp-proxy\\dist\\bin\\omnodex-mcp-proxy.js", "--config", "C:\\Users\\<you>\\.omnodex\\omnodex-proxy.json" ] } }}~/Library/Application Support/Claude/claude_desktop_config.json:
{ "mcpServers": { "omnodex": { "command": "/absolute/path/to/node", "args": [ "/path/to/omnodex/packages/mcp-proxy/dist/bin/omnodex-mcp-proxy.js", "--config", "/Users/<you>/.omnodex/omnodex-proxy.json" ] } }}Keep any other keys already in the file, and add omnodex alongside servers you are not routing through Omnodex. Fully quit and reopen Claude Desktop after editing.
What is logged
Section titled “What is logged”The proxy sees everything that passes between the client and your MCP servers. This is what it records:
| Data | Logged | Notes |
|---|---|---|
| Tool name and owning server | Yes | For example filesystem__read_file on filesystem |
| Tool call parameters | Yes, by default | File paths, queries, content to write. Set redact_parameters to replace values with [REDACTED] |
| Tool results | No | Only the response size is recorded |
| Duration and success or error | Yes | Error messages are recorded |
| Proxy session start and end | Yes | With the list of upstream servers |
| Upstream credentials | No | Pass them to upstreams as environment variables; they do not appear in MCP messages |
| MCP handshake and tool discovery | No |
Events stay in your local Omnodex home unless you connect to the hosted dashboard. Once connected, the proxy pushes each event to the live relay as it records it, and refreshes the encrypted blob every 15 minutes and again when the agent disconnects. See Automatic sync.
Limits
Section titled “Limits”- The proxy records only servers routed through it. Servers the client connects to directly are not recorded.
- The agent’s built-in tools (file edits, shell commands) do not go through MCP, so the proxy does not see them. Use hooks where the agent supports them.
- Upstream servers must use the
stdiotransport. - An upstream that is slow to start may miss the first tool listing. Claude Code picks such tools up when they arrive; ChatGPT Desktop, Codex CLI and Cowork do not, and only see them in a later session. See Sizing the discovery window.