COROS Codex MCP Bridge
Click on "Install 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., "@COROS Codex MCP BridgeShow me my most recent run summary"
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.
COROS Codex MCP Bridge
Local, read-only stdio bridge for using the COROS MCP gateway from Codex.
Why this bridge exists
The bridge works around a protocol mismatch between the current COROS MCP gateway and the Codex MCP client:
The COROS gateway currently answers
initializeas a stateless JSON-RPC request. In the verified integration, the response does not includeMcp-Session-Id.Codex's remote Streamable HTTP MCP lifecycle expects a session-aware initialization flow. Directly pointing Codex at the COROS endpoint can therefore fail during MCP startup before any sport query is available.
This project gives Codex a normal local stdio MCP server. The bridge translates Codex's stdio lifecycle into stateless, authenticated JSON-RPC calls to COROS.
The bridge does not replace the COROS service or implement a second data store. It is a small local protocol and credential boundary.
Related MCP server: mcp-infra-readonly
Security and scope
Local stdio only. The bridge does not listen on a network port.
Read-only allowlist only. Tools must be in the verified COROS query allowlist and advertise
readOnlyHint: true.FIT download, FIT URL, route URL, export, and other sensitive file-oriented tools are excluded.
No write, delete, upload, or training-plan mutation tools are exposed.
The bridge reads the token cache created by the official
@coros_open/coros-mcp-loginCLI.Access tokens are refreshed when needed and persisted atomically with file mode
0600.Access and refresh tokens are never printed, logged, or committed.
Upstream and OAuth requests, including response-body reads, time out after 30 seconds by default.
There is no telemetry or background daemon.
The allowlist is intentionally conservative. If COROS adds a new read-only tool, it must be reviewed and added explicitly before this bridge exposes it.
Requirements
macOS or another system that can run the official COROS MCP login flow
Node.js 22 or newer
A Codex client with MCP configuration support
A COROS account authorized through the official login CLI
Install
git clone https://github.com/lagrangee/coros-codex-mcp-bridge.git
cd coros-codex-mcp-bridge
npm test
npm run checkThere are no runtime npm dependencies. Use a Node executable that is visible to the Codex process; for desktop applications, an absolute Node path is often more reliable than relying on GUI PATH inheritance.
Authorize COROS
Run the official login command in a terminal:
npx --yes @coros_open/coros-mcp-login loginComplete authentication in the browser. Do not paste a password, authorization code, access token, or refresh token into Codex or an issue.
The bridge discovers the first existing cache at:
~/.coros-mcp-skill-gateway-ts/{cn,eu,us}/token.jsonIf the cache is missing or the refresh token has been revoked, run the official login command again.
Configure Codex
Add or replace the coros entry in ~/.codex/config.toml:
[mcp_servers.coros]
command = "/absolute/path/to/node"
args = ["/absolute/path/to/coros-codex-mcp-bridge/src/cli.mjs"]
startup_timeout_sec = 30For a shell-installed Node, command = "node" may be sufficient. For Codex Desktop, use the absolute path to the Node runtime that the desktop process can execute.
After changing MCP configuration, start a fresh Codex process or task so it reloads the configuration. Verify the entry with:
codex mcp get corosThe bridge is started and stopped by Codex as a stdio child process. You do not need to keep a terminal running or supervise a daemon.
Configuration overrides
All overrides are optional:
Variable | Purpose | Default |
| Explicit token cache path | Regional cache discovery |
| Regional endpoint selector: | Inferred from cache path, then |
| Override the OAuth issuer | Regional COROS issuer |
| Override the upstream MCP URL |
|
| Request and response-body timeout |
|
Example:
COROS_REGION=eu COROS_REQUEST_TIMEOUT_MS=60000 node src/cli.mjsArchitecture
Codex
| JSON-RPC over stdin/stdout
v
coros-codex-mcp-bridge
| token cache discovery and refresh
| read-only tool allowlist
| stateless JSON-RPC translation
v
COROS MCP gatewayThe bridge keeps the upstream implementation details local to the adapter:
src/cli.mjsowns JSONL stdio and environment-based configuration.src/bridge.mjsowns the Codex-facing MCP surface and read-only policy.src/coros-client.mjsowns upstream initialization, pagination, session recovery, SSE parsing, and tool calls.src/token-store.mjsowns token-cache discovery input, refresh, atomic persistence, and file permissions.
Development
npm test
npm run checkTests use fake HTTP responses and temporary token files. They do not require a COROS account and must not contain real credentials.
Run the stdio server directly when debugging protocol integration:
node src/cli.mjsThe process reads newline-delimited JSON-RPC from stdin and writes responses to stdout. Diagnostic messages must stay off stdout because stdout is the MCP protocol channel.
Troubleshooting
COROS authorization is missing
Run:
npx --yes @coros_open/coros-mcp-login loginThen restart the Codex process so the bridge reloads the cache.
Codex shows no coros tools
Check the command and absolute paths in ~/.codex/config.toml, run codex mcp get coros, and start a fresh Codex process. A configuration edit is not necessarily hot-loaded into an already running process.
A newly released COROS read-only tool is not visible
That is intentional. Review its semantics and add it to the allowlist in src/bridge.mjs with a regression test before exposing it.
Contributing
See CONTRIBUTING.md. In particular, do not add credentials, live personal sport data, or unreviewed write-capable tools to tests or fixtures.
Security reports
See SECURITY.md. Do not report token values or other private sport data in public issues.
License
MIT. See LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceStdio MCP server for sandboxed file access — read files, search content, safely edit with checksums, and manage file structure.Last updated7ISC
- Flicense-qualityBmaintenanceA read-only MCP server that gives Claude Code secure, non-invasive access to infrastructure logs, service status, metrics, Ansible facts, and Docker state via SSH, with a strict command allowlist and no write operations.Last updated
- FlicenseBqualityCmaintenanceA read-only MCP server that exposes a local code workspace to AI clients via stdio, providing file browsing and text search capabilities with path safety rules.Last updated1
- Alicense-qualityCmaintenanceA secure, local-first MCP server for read-only inspection and troubleshooting of development environments, exposing narrow, typed, auditable capabilities for repository inspection, log summarization, Docker review, and security scanning without granting unrestricted machine access.Last updatedMIT
Related MCP Connectors
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
MCP server for interacting with the Supabase platform
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lagrangee/coros-codex-mcp-bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server