mcp-sage
MCP(モデルコンテキストプロトコル)サーバーは、トークン数に基づいてOpenAIのO3モデルまたはGoogleのGemini 2.5 Proにプロンプトを送信するためのツールを提供します。これらのツールは、参照されているすべてのファイルパス(フォルダの場合は再帰的に)をプロンプトに埋め込みます。これは、大量のコンテキストを正確に処理できるモデルからセカンドオピニオンや詳細なコードレビューを得るのに役立ちます。
根拠
Claude Codeを頻繁に使用しています。私のワークフローに非常によく合う素晴らしい製品です。大容量のコンテキストを備えた新しいモデルは、より多くのコンテキストが必要となる複雑なコードベースを扱う際に非常に便利です。これにより、Claude Codeを開発ツールとして使い続けながら、O3とGemini 2.5 Proの大容量コンテキスト機能を活用して、Claude Codeの限られたコンテキストを補うことができます。
Related MCP server: Gemini Thinking MCP Server
モデル選択
サーバーは、トークン数と利用可能な API キーに基づいて適切なモデルを自動的に選択します。
小さいコンテキスト(20万トークン以下)の場合:OpenAIのO3モデルを使用します(OPENAI_API_KEYが設定されている場合)
より大きなコンテキスト(200K以上100万トークン以下)の場合:GoogleのGemini 2.5 Proを使用します(GEMINI_API_KEYが設定されている場合)
コンテンツが100万トークンを超える場合: 情報エラーを返します
フォールバック動作:
APIキーフォールバック:
OPENAI_API_KEY がない場合、100万トークン制限内のすべてのコンテキストで Gemini が使用されます。
GEMINI_API_KEY がない場合、O3 では小さいコンテキスト (≤ 200K トークン) のみを処理できます。
両方のAPIキーが欠落している場合は、情報エラーが返されます。
ネットワーク接続フォールバック:
OpenAI APIにアクセスできない場合(ネットワークエラー)、システムは自動的にGeminiにフォールバックします。
これにより、1つのプロバイダによる一時的なネットワーク問題に対する耐性が強化されます。
フォールバックが機能するには GEMINI_API_KEY を設定する必要があります
インスピレーション
このプロジェクトは、他の 2 つのオープン ソース プロジェクトからインスピレーションを得ています。
simonw/files-to-prompt でファイル圧縮を要求
アイデアを提供してくれたasadm/vibemode さん、そしてリポジトリ全体を Gemini に送信して編集の提案をまとめてもらえるよう促してくれた
PhialsBasement/Chain-of-Recursive-Thoughts は、 sage-plan ツールのインスピレーションとなりました。
概要
このプロジェクトでは、次の 3 つのツールを公開する MCP サーバーを実装します。
sage-opinion
プロンプトとファイル/ディレクトリパスのリストを入力として受け取ります
ファイルを構造化されたXML形式にパックします
トークン数を測定し、適切なモデルを選択します。
20万トークン以下の場合はO3
20万トークン以上100万トークン以下のGemini 2.5 Pro
選択したモデルにプロンプトとコンテキストの組み合わせを送信します
モデルの応答を返す
sage-review
コード変更の指示とファイル/ディレクトリパスのリストを入力として受け取ります
ファイルを構造化されたXML形式にパックします
トークン数を測定し、適切なモデルを選択します。
20万トークン以下の場合はO3
20万トークン以上100万トークン以下のGemini 2.5 Pro
SEARCH/REPLACEブロックを使用してモデルに応答をフォーマットするように指示する特別なプロンプトを作成します。
選択したモデルにコンテキストと指示の組み合わせを送信します
簡単に実装できるように、SEARCH/REPLACE ブロックとしてフォーマットされた編集候補を返します。
sage-plan
実装計画とファイル/ディレクトリパスのリストを要求するプロンプトを入力として受け取ります
ファイルを構造化されたXML形式にパックします
複数のモデルに関する議論を調整し、高品質の実装計画を作成します。
モデルは複数のラウンドを通じて互いの計画を批評し、改良する
詳細な手順を含む、成功した実装計画を返します
sage-plan - マルチモデルと自己討論ワークフロー
sage-planツールは、単一のモデルにプランを求めるのではなく、1ラウンド以上にわたる構造化されたディベートを編成し、その後、別の審査員モデル(またはCoRTモードの同じモデル)に勝者を選んでもらいます。
1. マルチモデル討論フロー
マルチモデルに関する議論の重要な段階:
セットアップフェーズ
システムは利用可能なモデルを決定し、審査員を選択し、トークン予算を割り当てます
第1ラウンド
生成フェーズ- 利用可能なすべてのモデル(A、B、Cなど)が独自の実装計画を並行して作成します。
批評段階- 各モデルは他のすべての計画(自身の計画ではない)をレビューし、並行して構造化された批評を作成します。
2 から N までラウンドします(N のデフォルトは 3)
統合フェーズ- 各モデルは受け取った批評を使用して以前の計画を改善します(モデルは並行して動作します)
コンセンサスチェック- ジャッジモデルは、現在のすべての計画間の類似性を評価します
スコアが0.9以上の場合、議論は早期に終了し、判定に進みます。
批評段階- 合意に至らず、最終ラウンドにも進まない場合は、各モデルが他のすべての計画を再度(並行して)批評します。
判定フェーズ
すべてのラウンドを完了した後(または早期に合意に達した後)、審査員モデル(デフォルトでは O3)は次のようになります。
最適なプランを1つ選択するか、複数のプランを1つの優れたプランに統合します
選択/合成の信頼スコアを提供する
2. 自己討論フロー - 単一モデルのみ利用可能
利用できるモデルが 1 つしかない場合は、 Chain of Recursive Thoughts (CoRT)アプローチが使用されます。
初期バースト- モデルは3つの異なる計画を生成し、それぞれ異なるアプローチを採用します。
改良ラウンド- 後続の各ラウンド (2 ~ N、デフォルト N = 3):
モデルは過去の計画をすべて見直す
内部的に批評し、強みと弱みを特定する
以前の計画の限界を克服した新しい改善計画を1つ作成する
最終選択- 最後に生成された計画が最終的な実装計画になります
コード内で実際に何が起こるか(クイックリファレンス)
フェーズ/機能 | コードの場所 | 注記 |
生成プロンプト | プロンプト/debatePrompts.generatePrompt | 「# 実装計画 (モデル X)」という見出しを追加します |
批評のきっかけ | プロンプト/debatePrompts.critiquePrompt | 「## プラン {ID} の批評」セクションを使用します |
合成プロンプト | プロンプト/debatePrompts.synthesizePrompt | モデルは独自の計画を修正 |
コンセンサスチェック | debateOrchestrator.checkConsensus | ジャッジモデルは
を含むJSONを返します |
判定 | プロンプト/debatePrompts.judgePrompt | 裁判官は「#最終実施計画」+自信を返した |
自己討論のきっかけ | プロンプト/ディベートPrompts.selfDebatePrompt | ループ |
パフォーマンスとコストの考慮
⚠️ 重要: sage-plan ツールでは次のことが可能です。
完了するまでにかなりの時間がかかります(複数のモデルの場合は 5 ~ 10 分)
複数回の議論により大量のAPIトークンを消費する
単一モデルのアプローチよりもコストが高くなる
一般的なリソース使用量:
マルチモデルの議論:単一モデルアプローチよりも2~4倍多くのトークン
処理時間: 複雑さとモデルの可用性に応じて 5~10 分
API コスト: プラン生成ごとに 0.30 ~ 1.50 ドル (使用するモデルとプランの複雑さによって異なります)
前提条件
Node.js (v18以降)
Google Gemini API キー(大規模なコンテキスト向け)
OpenAI API キー(小規模なコンテキスト用)
インストール
環境変数
次の環境変数を設定します。
OPENAI_API_KEY: OpenAI API キー (O3 モデルの場合)GEMINI_API_KEY: Google Gemini API キー (Gemini 2.5 Pro 用)
使用法
npm run buildでビルドした後、MCP 構成に以下を追加します。
シェル プロファイルなど、他の場所で設定された環境変数を使用することもできます。
促す
何かについてセカンドオピニオンを得るには、セカンドオピニオンを求めてください。
コードレビューを受けるには、コードレビューまたは専門家によるレビューを依頼してください。
これらは両方とも、コンテキストに含めるファイルのパスを提供することでメリットを得られますが、省略すると、ホスト LLM が何を含めるかを推測する可能性があります。
デバッグと監視
サーバーはMCPログ機能を通じて詳細な監視情報を提供します。これらのログには以下が含まれます。
トークンの使用統計とモデルの選択
リクエストに含まれるファイルと文書の数
リクエスト処理時間のメトリクス
トークン制限を超えた場合のエラー情報
ログはMCPプロトコルのnotifications/message方式を介して送信されるため、JSON-RPC通信に干渉することはありません。ログ機能をサポートするMCPクライアントは、これらのログを適切に表示します。
ログエントリの例:
ツールの使用
sage-opinionツール
sage-opinionツールは次のパラメータを受け入れます。
prompt(文字列、必須): 選択したモデルに送信するプロンプトpaths(文字列の配列、必須): コンテキストとして含めるファイルパスのリスト
MCP ツール呼び出しの例 (JSON-RPC 2.0 を使用):
sage-reviewツール
sage-reviewツールは次のパラメータを受け入れます。
instruction(文字列、必須): 必要な具体的な変更または改善paths(文字列の配列、必須): コンテキストとして含めるファイルパスのリスト
MCP ツール呼び出しの例 (JSON-RPC 2.0 を使用):
応答には、提案された変更を実装するために使用できる SEARCH/REPLACE ブロックが含まれます。
sage-planツール
sage-planツールは次のパラメータを受け入れます。
prompt(文字列、必須): 実装計画が必要な内容の説明paths(文字列の配列、必須): コンテキストとして含めるファイルパスのリスト
MCP ツール呼び出しの例 (JSON-RPC 2.0 を使用):
回答には、次の内容を含む詳細な実装計画が含まれています。
高レベルアーキテクチャの概要
具体的な実施手順
ファイルの変更が必要
テスト戦略
潜在的な課題と緩和策
このプランは、複数の AI モデルの集合知 (または単一のモデルによる徹底した自己レビュー) の恩恵を受けており、通常、単一パスのアプローチよりも堅牢で思慮深く詳細な推奨事項が含まれています。
テストの実行
ツールをテストするには:
注: sage-plan テストは、複数のモデルの議論を調整するため、実行に 5 ~ 15 分かかる場合があります。
プロジェクト構造
src/index.ts: ツール定義を含むメインのMCPサーバー実装src/pack.ts: ファイルを構造化されたXML形式にパックするためのツールsrc/tokenCounter.ts: プロンプト内のトークンをカウントするためのユーティリティsrc/gemini.ts: Gemini API クライアント実装src/openai.ts: O3 モデル用の OpenAI API クライアント実装src/debateOrchestrator.ts: sage-plan のマルチモデルディベートオーケストレーションsrc/prompts/debatePrompts.ts: ディベートのプロンプトと指示のテンプレートtest/run-test.js: sage-opinion ツールのテストtest/test-expert.js: sage-review ツールのテストtest/run-sage-plan.js: sage-plan ツールのテストtest/test-o3.js: モデル選択ロジックのテスト
ライセンス
ISC