tmcproxy
tmcproxy
OpenAI Secure MCP Tunnel / ChatGPT コネクタをレガシーな stdio MCP サーバにブリッジする、最小限の MCP stdio 互換性プロキシ。
これが解決する問題
ChatGPT コネクタ(OpenAI Secure MCP Tunnel 経由)は、MCP 2026-07-28 で導入されたメソッド server/discover を使って stdio MCP サーバをプローブします。codex mcp-server や local-mcp mcp のようなレガシーサーバは 2025-06-18 しか話せず、server/discover に対して method not found を返すため、コネクタの作成に失敗します。
tmcproxy はその間に立ち、ダウンストリームに代わって server/discover に応答し、それ以外のすべてのリクエストをそのまま転送します。
ChatGPT → tunnel-client → tmcproxy → codex mcp-server (or local-mcp mcp)
↑
answers server/discover here,
forwards everything else straight throughRelated MCP server: MCP SSE Proxy
必要条件
Node.js >= 23.6.0(ネイティブ TypeScript ストリップモード実行のため — ビルド手順は不要)
使い方
スタンドアロン
node src/tmcproxy.ts -- codex mcp-server
node src/tmcproxy.ts -- local-mcp mcpまたは環境変数経由:
TMCPROXY_DOWNSTREAM="codex mcp-server" node src/tmcproxy.tstunnel-client と一緒に使う
tunnel-client のプロファイル YAML(例:~/.config/tunnel-client/<profile>.yaml)を編集します:
mcp:
commands:
- channel: main
command: "node /path/to/tmcproxy/src/tmcproxy.ts -- codex mcp-server"その後:
tunnel-client run --profile <profile>ダウンストリームの切り替えは -- の後のコマンドを変更するだけです:
command: "node /path/to/tmcproxy/src/tmcproxy.ts -- local-mcp mcp"動作の仕組み
リクエスト | 動作 |
| プロキシは仕様に沿った |
| そのままダウンストリームに転送されます。プロキシ自身は |
| JSON-RPC id を保持したままそのまま転送されます。 |
通知(id なし) | 転送されます。応答は期待されません。 |
不正な JSON | 上流に |
未知のメソッド | 転送されます。ダウンストリームのエラーがそのまま返ります。 |
supportedVersions に 2026-07-28 を含める理由
ChatGPT は 2026-07-28 でプローブします。応答に 2025-06-18 だけがリストされていると、ChatGPT は「要求されたバージョンがサポートされていない」と判断し、無期限に再試行します — initialize や tools/list に到達することはありません。2026-07-28 をリストすることで、ChatGPT はモダンモードに入り、ステートレスなリクエスト(tools/list, tools/call)を直接送信します。レガシーダウンストリームは事前の initialize なしでこれらに応答するため(codex mcp-server と local-mcp mcp の両方で確認済み)、透過的な転送が機能します。
デバッグ
デバッグログ
TMCPROXY_DEBUG=1 を設定すると、server/discover のリクエストと応答が stderr に記録されます:
TMCPROXY_DEBUG=1 tunnel-client run --profile local-codexstderr への出力(stdout はクリーンなまま — MCP チャネルです):
[tmcproxy] downstream: ["codex","mcp-server"]
[tmcproxy] discover request: {"jsonrpc":"2.0","id":"openai-mcp-discover",...}
[tmcproxy] discover response: {"resultType":"complete","supportedVersions":["2026-07-28","2025-06-18"],...}ローカルエンドツーエンドテスト(API キー不要)
tunnel-client dev proxy は、ChatGPT が使用するのと同じ MCP プローブフローを再現するローカルインメモリコントロールプレーンを実行します:
tunnel-client dev proxy \
--mcp-command "command=node /path/to/tmcproxy/src/tmcproxy.ts -- codex mcp-server,channel=main" \
--url-file /tmp/url.json \
--duration 30s
MCP_URL=$(node -e "console.log(JSON.parse(require('fs').readFileSync('/tmp/url.json','utf8')).mcp_url)")
curl -sS -X POST "$MCP_URL" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2026-07-28' \
-H 'Mcp-Method: server/discover' \
-d '{"jsonrpc":"2.0","id":1,"method":"server/discover","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28"}}}'ベースライン比較
プロキシが必要かどうかを確認するには、ダウンストリームを dev proxy 経由で直接実行し、server/discover の失敗を観察します:
tunnel-client dev proxy \
--mcp-command "command=codex mcp-server,channel=main" \
--url-file /tmp/url.json --duration 30s
# server/discover → -32601 method not foundテスト
pnpm install
pnpm test # unit + integration
pnpm test:unit # mock downstream only
pnpm test:integration # real codex / local-mcp (auto-skipped if not installed)
pnpm typecheck単体テストはモックダウンストリーム(test/fixtures/mock-downstream.js)を使用し、以下をカバーします:discover 応答の形状、機能プローブ、initialize 転送、tools/list、tools/call の id 保持、ping、未知のメソッド、不正な JSON、通知、stderr ミラーリング、ダウンストリーム終了処理、stdout リーク検出。
統合テストは、PATH 上に実際の codex mcp-server および local-mcp mcp バイナリが存在する場合にそれらを起動します。
セキュリティ
診断情報は stderr のみに出力されます。stdout は MCP トラフィック用に予約されています。
認証情報、API キー、シークレットは一切記録されません。
ダウンストリームは argv 経由で起動されます(シェルは使用されません)。
server/discoverのみがプロキシによって処理されます。他のすべてのリクエストは変更されずに通過します。プロキシはダウンストリームの権限を拡張しません。
ライセンス
Apache-2.0
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
- AlicenseBqualityFmaintenanceA lightweight bridge that wraps OpenAI's built-in tools (like web search and code interpreter) as Model Context Protocol servers, enabling their use with Claude and other MCP-compatible models.412MIT
- Flicense-quality-maintenanceBridges STDIO-based MCP clients with SSE-based MCP servers, allowing applications like Claude Desktop to connect to remote MCP servers that use SSE transport.9
- Flicense-qualityDmaintenanceEnables LLMs to use llama.cpp models via MCP protocol by bridging MCP requests to an OpenAI-compatible API.
- AlicenseAqualityBmaintenanceBridges OpenAI Codex CLI to any MCP client, allowing headless Codex sessions via tools like codex and codex-reply.229MIT
Related MCP Connectors
MCP server bridging holepunchto/keet-identity-key to the Hive agentic identity network
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
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/mkusaka/tmcproxy'
If you have feedback or need assistance with the MCP directory API, please join our Discord server