codex-upwork-mcp-bridge

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.

Category
Visit Server

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 ping requests sent from the server to the client.
  • It removes ttlMs and cacheScope cache 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:

Development

bun install --frozen-lockfile
bun test

License

MIT

Recommended Servers

playwright-mcp

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured