概要
本ガイドでは、OpenAI Codex CLI を Responses API(英語)経由で SambaNova ホストのモデルに接続し、ライブラリの最新ドキュメントを取得する MCP サーバーを使う例を含む、3 つの実践的なデモを解説します。仕組み
Codex CLI は 2 つの考え方を軸に設計されています。[model_providers.*] で任意の OpenAI 互換エンドポイントに接続でき、--profile でフラグ 1 つでアクティブなモデルとプロバイダーを切り替えられます。この 2 つを組み合わせると、SambaNova のブログで紹介したプランナー / エグゼキューターパターンをネイティブに実現できます。フロンティアプランナー (gpt-5、o3 など) 用のプロファイルと、低コストで高速なエグゼキューターとしての MiniMax-M2.7 用のプロファイルを用意するだけです。SambaNova は Codex の wire_api = "responses" に完全に一致する /v1/responses エンドポイントを公開しているため、LiteLLM プロキシは不要です。
前提条件
- Node.js 18 以上が PATH 上にあること。
- Codex CLI のインストール:
npm i -g @openai/codex(またはbrew install --cask codex)。 - SambaNova API キーを
SAMBANOVA_API_KEYとしてエクスポートしておくこと。 - (デモ 2 と 3 用) フロンティアプランナーのプロファイル用に、Codex に登録した OpenAI API キー (後述)。
フロンティアプランナー用の OpenAI キーの登録 (デモ 2 と 3)
plan プロファイルは Codex 組み込みの openai プロバイダーを使用し、認証情報を ~/.codex/auth.json から読み込みます。キーをエクスポートして codex login にパイプすることで、このファイルの作成を Codex に任せられます。
過去のログインで保存された古いキーで Codex にログインしたままの場合は、まずcodex logoutを実行し、OpenAI API キーを設定した後で上記のcodex login --with-api-keyコマンドを再実行してください。
フロンティアプランナーをまったく使わない場合 (plan-snを使用する場合) は、plan-snは SambaNova プロバイダーを経由するため、OpenAI キーは一切不要です。
SambaNova の接続
Codex は~/.codex/config.toml を読み込みます。SambaNova プロバイダーと、計画用・実行用の 2 つのプロファイルを追加します。
~/.codex/config.toml (追記してください。既存のブロックを置き換えないでください):
この構成が直接動作する鍵は次に、3 つのデモすべてで使い回すデモ用ワークスペースを 1 つ作成します。wire_api = "responses"です。SambaNova の/v1/responsesエンドポイントは、Codex が送信する OpenAI Responses API の形式に一致します。古いガイドで LiteLLM をプロキシとして推奨しているものを見かけても、それは不要です。
デモ 1: SambaNova エンドツーエンド
ペットフレンドリーな「hello world」ランディングページを、execute-sn プロファイル経由で MiniMax-M2.7 だけで構築・検証します。
プロンプト例の日本語訳
プロンプト例の日本語訳
このディレクトリに、ミニマルでペットフレンドリーな「Hello World」ランディングページを作成してください。
index.html と style.css を 1 つずつ、JS フレームワークは使用しません。柔らかいパステルカラー、親しみやすい肉球の絵文字、短いタグライン (「Hello, friend」)、そして 1 つの CTA ボタンを含めてください。HTML+CSS 合計で 80 行以内に収めてください。完了したらファイルを開いて、プレビューできるようにしてください。デモ 2: フロンティアモデルが計画し、SambaNova が実行
アーキテクトとビルダーの分業です。plan プロファイル (フロンティアモデル) が精密な PLAN.md を作成し、execute-sn (MiniMax-M2.7) がそれを実行します。境界を越えるアーティファクトが PLAN.md であり、再現・差し替え・レビューが可能です。
ステップ 1. フロンティアモデルで計画を作成します。
プロンプト例の日本語訳
プロンプト例の日本語訳
このディレクトリにある
index.html と style.css を読み込み、このランディングページを「ペット里親探し」デモへ拡張する方法を記述した PLAN.md を作成してください:- CSS グリッドによる、プレースホルダーのペットカード 6 枚分のギャラリー (名前、種類、一言プロフィール)
- 名前でカードを絞り込む検索入力欄 (フレームワークなしのバニラ JS)
- localStorage に保存されるダークモード切り替え
PLAN.md を開いてレビューします。自由に編集して構いません。計画をファイルとして具体化する目的はまさにそこにあります。
ステップ 2. PLAN.md を SambaNova に引き渡します。
プロンプト例の日本語訳
プロンプト例の日本語訳
PLAN.md を読み込み、すべてのステップを実行してください。各ステップの後に、計画のどの受け入れ基準が満たされたかを記載してください。最後に index.html を開いて、ブラウザで確認できるようにしてください。PLAN.md が仕様のすべてです。PLAN.md を修正して同じ --profile execute-sn コマンドを再実行することも、計画を書き直さずにプランナーのプロファイルを plan-sn (フロンティアなし) に差し替えることもできます。
計画と実行の両方を SambaNova で行いたい場合は、プランナーにcodex --profile plan-sn …を使うと、OpenAI の代わりにgpt-oss-120bが使用されます。フロンティアモデルへの依存を避けたい場合に便利です。
デモ 3: MCP を活用した、最新ライブラリドキュメントに基づく計画
デモ 2 に MCP サーバーを追加します。プランナーが Context7 を使ってライブラリの「最新」ドキュメントを取得し、それをPLAN.md に織り込み、MiniMax が実行します。カスタムの検索処理を書かずに、「モデルが古いドキュメントで学習している」問題を解決できます。
MCP サーバーとしての Context7 のインストール
context7.com/dashboard から無料の API キーを取得し、エクスポートします。~/.codex/config.toml に Context7 を登録します。
無料ティアはキーなしでも動作します。env の行を削除すると、レート制限が低くなるだけです。
これで MCP サーバーはすべてのプロファイルから利用可能になります。以下で確認します。
プロンプト例の日本語訳
プロンプト例の日本語訳
context7 MCP サーバーから呼び出せるツールを一覧表示してください。
resolve-library-id と query-docs が表示されるはずです。
タスク内容
デモ 2 の各ペットカードに、date-fns のformatDistanceToNow を使ってページ読み込み時に計算する、人が読みやすい「Added X days ago」ラベルを付けます。date-fns は Context7 の好例です。v2 から v3 への書き直しでインポート方法が変わり (ツリーシェイキング可能な名前付きエクスポート、新しい UMD の cdn.min.js ビルド)、v4 ではタイムゾーンサポートが追加されたため、モデルは動作しない古いデフォルトインポートのパターンを頻繁に出力します。
ステップ 1: plan プロファイルが最新ドキュメントを取得して計画を作成
プロンプト例の日本語訳
プロンプト例の日本語訳
context7 MCP サーバーを使って
date-fns ライブラリの最新ドキュメントを調べてください — 具体的には addSuffix オプション付きの formatDistanceToNow、そして UMD CDN ビルド (dateFns グローバル) 経由で date-fns を素の HTML ページに読み込む方法と、ESM の名前付きインポートとの違いです。その上で PLAN.md に「フェーズ 2: 相対日付ラベル」のセクションを追記し、各ペットカードに固定の data-added ISO 日付を持たせ、読み込み時にそこから「X 日前に追加」のラベルを描画する方法を記述してください。記憶に頼らず、Context7 から得た最新の API を使用してください。<script> の CDN タグ、グローバル関数の呼び出し、addSuffix の使い方をドキュメントからそのまま正確に引用し、検証手順も含めてください。resolve-library-id → query-docs を呼び出して最新の API を取得し、現行ドキュメントに基づいた計画を作成します。
ステップ 2: SambaNova への引き渡し
プロンプト例の日本語訳
プロンプト例の日本語訳
PLAN.md の「フェーズ 2」の部分を読み込んで実行してください。完了したら index.html を開き、各カードに「X 日前に追加」(Added X days ago) のラベルが表示されることを確認してください。PLAN.md にはすでに解決済みの API が含まれています。MCP アクセスは (より高コストな) プランナー側にとどめることで、その価値を最大化できます。
ステップ 3: 動作確認
この構成が重要な理由
これは MCP を活用した計画の具体例です。フロンティアのプランナーには適切なコンテキストが与えられ、SambaNova のエグゼキューターは低コストかつツール依存の少ない状態に保たれ、PLAN.md が両者の境界となります。
ヒント
- 切り替えはすべて
--profileで行います。 CLI で--modelや--providerを上書きしないでください。プロファイルが迂回され、再現性が損なわれます。 - 1 リポジトリに複数プロファイル。
trust_level = "trusted"を指定した[projects."/abs/path/to/repo"]ブロックを追加すると、既知のディレクトリで「trust this folder?」プロンプトをスキップできます。 approval_policy = "on-request"はエグゼキューターに適したデフォルトです。破壊的なシェル呼び出しの前にモデルが確認を求めるためです。"never"に下げるのは、使い捨てのサンドボックス内だけにしてください。- エグゼキューターに検証を指示する (「
index.htmlを開いて確認して」等)。指示しないと、編集しただけで止まります。
トラブルシューティング
SambaNova で401 Unauthorized が発生する。 env_key = "SAMBANOVA_API_KEY" は Codex が HTTP クライアントを起動する時点で解決されるため、この変数は .env に書くだけでなく、codex を起動するシェルでエクスポートされている必要があります。実行前に echo $SAMBANOVA_API_KEY で確認してください。
plan プロファイルで Quota exceeded. Check your plan and billing details. が発生する。 openai プロバイダーは $OPENAI_API_KEY ではなく ~/.codex/auth.json から認証します。環境変数のキーで curl が成功しても、ここでは何の証明にもなりません。Codex は auth.json に保存されているキー (または ChatGPT ログイン) を送信しており、それが古かったりクレジット切れだったりする可能性があります。修正方法: codex logout の後に printenv OPENAI_API_KEY | codex login --with-api-key を実行し、codex doctor で保存された認証情報が課金に使いたいキーと一致していることを確認してください。
wire_api は responses である必要があります。 Codex は wire_api = "responses" のみをサポートします。古い wire_api = "chat" は削除され、現在は起動時にエラーになります。SambaNova の /v1/responses エンドポイントは Codex が送信する形式に一致します。特定のモデルが /v1/responses で 404 を返す場合、そのモデルは Responses API 経由で提供されていないため、wire_api を変更するのではなく、対応しているモデル (MiniMax-M2.7、gpt-oss-120b) に切り替えてください。
model not found が発生する。 SambaNova のモデル ID をプレフィックスなしで使用してください (MiniMax-M2.7、DeepSeek-V3.1、gpt-oss-120b)。Codex は何も付加しません。opencode や AI SDK の設定で見かける sambanova/ プレフィックスは、ここでは使用しません。
Context7 のツールが見つからない。 mcp_servers は起動時に一度だけ読み込まれます。セッションの途中で config.toml を編集した場合は、終了して再実行してください。
MCP サーバーとの組み合わせ
Codex のプロファイルと MCP サーバーは、きれいに組み合わせられます。プロファイルが切り替えるのは「モデル」だけで、ツール面は変わらないため、すべてのプロファイルが登録済みのすべての MCP サーバーを参照できます。
これにより、3 つのパターンが導かれます。
1. MCP を活用した計画。 フロンティアのプランナーが外部コンテキスト (ドキュメント、Atlassian MCP サーバー経由の Jira、GitHub Issues) を取得し、
PLAN.md に織り込んで execute-sn に引き渡します。
2. MCP による後続処理。 execute-sn の完了後、GitHub や Slack の MCP サーバーを使う --profile plan の呼び出しを追加で実行し、PR の作成やサマリーの投稿を行います。エグゼキューターにそれらの認証情報は不要です。
3. エグゼキューター内でのシェル CLI ツール。 execute-sn は sandbox_mode = "workspace-write" のもとでシェルにアクセスできます。PATH 上の任意の CLI (gh、git、aws など) を利用できるので、プロンプトで指示してください。
例: codex --profile execute-sn "Implement PLAN.md, run npm test, then run 'gh pr create --fill' to open a draft PR."

