直接回答
MCP entry が設定に存在しても server 起動・protocol negotiation の証明にはなりません。各レイヤーを順に確認します。
このガイドで解決できること
MCP executable、argument、environment、stdio、HTTP、protocol、認証、tool discovery の失敗を修正する。
Codex CLI MCPClaude Code MCPstdio transportHTTP transport
01
症状
client が MCP server の起動、initialize、認証、tool 公開失敗を報告します。
手動 command は動いても client 下では cwd、PATH、environment、stdout、config scope の違いで失敗します。
02
主な原因
- executable、argument、working directory、PATH、必須 environment variable が誤っている。
- stdio server が stdout へ log・banner を出し protocol message を壊す。
- HTTP server が到達不可、未認証、または URL・transport が誤っている。
- client と server が initialize negotiation または tool schema discovery に失敗する。
03
診断手順
- 01境界を確定server 名、config scope、command・URL、argument、cwd、環境変数名を確認します。
- 02基準を作成stdio を機密除去して単独起動し、HTTP は DNS、TCP、TLS、認証に分けて試します。
- 03一項目を比較initialize negotiation と選択 protocol version を保存します。
- 04決定的な証拠を記録tools/list と必要 schema を確認し、read-only tool を一件実行します。
最小診断コマンド言語:bash
codex mcp list --json 2>/dev/null || true
codex doctor --summary 2>/dev/null || true
claude mcp list 2>/dev/null || true
# 次に各クライアントで codex mcp get <name> または claude mcp get <name> を実行します。
# stdio サービスでは信頼できるコマンドの --help だけを実行し、出所不明なインストールパイプラインは実行しません。04
修正
- 01障害レイヤーを修正正式 scope で executable、argument、cwd、environment、URL、transport を修正します。
- 02必要な動作を復元stdio log は stderr へ送り stdout を protocol frame 専用にします。
- 03一時回避策を除去protocol version と認証を整合し、最小 tool permission だけを許可します。
修正例言語:text
1. client list/get が最終設定を読み取れる
2. server process または HTTP endpoint に到達できる
3. initialize と tools/list が成功する
4. 読み取り専用ツールが想定した構造を返す
5. ログに token、プロジェクトの秘密、プロトコルのノイズがない05
検証
- stdio stdout に protocol message 以外が出ない。
- client と server が互換 protocol version を合意する。
- 必要な tool 名と schema が tools/list に現れる。
- write・破壊的 capability より先に read-only tool が成功する。
06
機密情報の扱い
- secret を commit 対象の MCP config に直接記載しない。
- 第三者 MCP server と tool output を untrusted input として扱う。
- read-only filesystem・network scope から開始する。
- version、機密除去した config、stderr、initialize、tool list で共有する。
公式情報と検証範囲
本ガイドはプロトコル仕様とクライアント公式文書を根拠にしています。エラー文、再試行ヘッダー、設定項目はサービスやバージョンで変わるため、参照元を確認し、ログとリクエスト例を秘匿してから共有してください。
ドキュメントの適用範囲を見る