codex-upwork-mcp-bridge
Enables Upwork's MCP server to work with OpenAI Codex and ChatGPT by normalizing protocol incompatibilities, allowing their tools to be listed and used.
README
Codex ↔ Upwork MCP Bridge
An unofficial compatibility bridge for using Upwork's MCP server with OpenAI Codex and the ChatGPT desktop application.
The Upwork MCP server can authenticate and work in some MCP clients while Codex
fails to expose its tools or reports an Unexpected response type error. This
small stdio bridge runs mcp-remote,
answers Upwork's server-to-client ping requests locally, and removes two cache
hints observed on tools/list responses before forwarding them to Codex.
This is a community workaround, not an official Upwork or OpenAI project. Try Upwork's MCP endpoint directly first. The compatibility issue may be fixed upstream at any time.
Status
Tested on macOS with Codex CLI 0.149.0, Bun, and
https://mcp.upwork.com/mcp. The same Codex MCP configuration is also available
to the ChatGPT desktop application when both use the shared Codex configuration.
The exact failing field has not yet been isolated with a minimal upstream reproduction. The bridge normalizes both protocol differences observed during the failing exchange:
- It answers JSON-RPC
pingrequests sent from the server to the client. - It removes
ttlMsandcacheScopecache hints from tool-list results.
Those cache hints exist in newer MCP drafts; the interoperability concern is that they were returned while an older protocol revision was negotiated, not that the fields are universally invalid.
Install
Prerequisites:
- Bun 1.2 or newer
- Codex CLI
- A web browser for Upwork OAuth
Clone and install dependencies:
git clone https://github.com/drharunyuksel/codex-upwork-mcp-bridge.git
cd codex-upwork-mcp-bridge
bun install --frozen-lockfile
Register the bridge with Codex, replacing the example path with the absolute path to your clone:
codex mcp add upwork -- bun run /absolute/path/to/codex-upwork-mcp-bridge/src/index.ts
If you already have an MCP server named upwork, remove or rename that entry
before running the command. Restart Codex and ChatGPT after changing MCP
configuration. On first use, mcp-remote opens Upwork's OAuth authorization in
your browser.
You can also add it manually to ~/.codex/config.toml:
[mcp_servers.upwork]
command = "/absolute/path/to/bun"
args = ["run", "/absolute/path/to/codex-upwork-mcp-bridge/src/index.ts"]
startup_timeout_sec = 60
Find Bun's absolute path with command -v bun.
Verify
codex mcp list
codex mcp get upwork
Then ask Codex to list the available Upwork tools or perform a read-only action, such as showing your Upwork profile. Avoid posting private tool output when reporting an issue.
Remove
codex mcp remove upwork
Removing the Codex entry does not remove mcp-remote's local OAuth session.
Consult the mcp-remote documentation if you also want to clear that session.
How it works
Codex / ChatGPT <-- stdio JSON-RPC --> this bridge
|
v
mcp-remote
|
v
https://mcp.upwork.com/mcp
The bridge only changes the two observed compatibility points. Other JSON-RPC messages pass through. Protocol traffic stays on stdout; diagnostics go to stderr so they cannot corrupt the MCP stream.
Related Codex reports
This repository addresses the Upwork case, but similar reports describe Codex rejecting or failing to surface MCP tool results that work in other clients:
- Valid MCP results decoded as an unexpected response type
- Spec-valid annotations rejected by Codex
- MCP server connects but tools are not listed
- Request for better MCP diagnostics
Development
bun install --frozen-lockfile
bun test
License
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.