Mcp Rubber Duck について
MCP クライアントから複数の OpenAI 互換 LLM や Claude Code、Codex などのコマンドラインコーディングエージェントに問い合わせ、異なる視点の回答をまとめる MCP サーバーです。複数モデルの回答を比較、投票、議論させたい開発者向けです。
主な機能
- 01任意の OpenAI 互換 API エンドポイントへの対応
- 02Claude Code、Codex、Gemini CLI などのエージェント対応
- 03複数モデルの比較、投票、評価
- 04会話コンテキストの管理と自動フェイルオーバー
- 05ガードレール、使用量の追跡、MCP ブリッジ
活用シーン
- 01同じ質問を複数のモデルに送り回答を比較する
- 02モデル間の議論や反復レビューで提案を改善する
- 03複数モデルの視点から設計上のリスクとトレードオフを分析する
MCP 対応
MCP クライアントに ask_duck や duck_council などのツールと 8 種類のプロンプトテンプレートを公開します。MCP ブリッジにより、設定されたモデルから他の MCP サーバーへアクセスできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y mcp-rubber-duckOPENAI_API_KEYシークレットOpenAI API key (starts with sk-)GEMINI_API_KEYシークレットGoogle Gemini API keyGROQ_API_KEYシークレットGroq API key (starts with gsk_)DEFAULT_PROVIDERDefault LLM provider to useローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Rubber Duck
複数の LLM(OpenAI 互換の HTTP API と CLI コーディングエージェントの両方)への問い合わせを仲介する、MCP(Model Context Protocol)サーバーです。ラバーダックデバッグと同じように、さまざまな AI の「アヒル」に問題を説明して、異なる視点からの回答を得られます。
プロバイダーとの直接統合が採用されている理由は? MCP の
samplingプリミティブ(サーバーがホストのモデルを借用する機能)は、2026-07-28 仕様 RC で廃止され、サーバーが LLM プロバイダーの API と直接統合する方式が採用されました。Rubber Duck は当初からこの方式(独自のアヒルを連れてくる方式)で動作しているため、プロトコルの今後の方向性に沿っており、移行は不要です。
特長
- OpenAI との汎用的な互換性 -- OpenAI 互換の API エンドポイントならどれでも利用できます
- CLI エージェントのサポート -- CLI コーディングエージェント(Claude Code、Codex、Gemini CLI、Grok、Aider)をアヒルとして利用できます
- 複数のアヒル -- 複数の LLM プロバイダーを設定し、同時に問い合わせることができます
- 会話管理 -- 複数のメッセージにわたってコンテキストを維持します
- アヒル評議会 -- 設定したすべての LLM から一度に回答を得られます
- 合意形成の投票 -- 推論と信頼度スコアを含む、複数のアヒルによる投票
- LLM-as-Judge -- アヒルに互いの回答を評価・順位付けさせます
- 反復的な改善 -- 2 羽のアヒルが協力して回答を改善します
- 構造化された議論 -- オックスフォード式、ソクラテス式、敵対的な議論の形式に対応
- MCP プロンプト -- マルチ LLM ワークフロー向けの再利用可能なプロンプトテンプレートを 8 種類用意
- 画像入力 -- プロンプトとともに画像を、画像認識に対応したモデルへ送信できます(ドキュメント)
- 自動フェイルオーバー -- プライマリプロバイダーに障害が発生した場合、ほかのプロバイダーに切り替えます
- ヘルスモニタリング -- すべてのプロバイダーの状態をリアルタイムで確認できます
- 使用状況の追跡 -- プロバイダーごとにリクエスト、トークン、推定コストを追跡できます
- MCP ブリッジ -- アヒルをほかの MCP サーバーに接続し、機能を拡張できます(ドキュメント)
- ガードレール -- レート制限、トークン制限、パターンブロック、個人情報のマスキングを備えた、プラグイン可能な安全レイヤー(ドキュメント)
- きめ細かなセキュリティ -- セッションベースの承認に対応した、サーバーごとの承認制御
- インタラクティブ UI -- 比較、投票、議論、使用状況の各ツール向けに、リッチな HTML パネルを提供(MCP Apps経由)
- ツールアノテーション -- ツールの動作(読み取り専用、破壊的など)に関する MCP 準拠のヒント
- 構造化出力 -- 構造化 JSON を返すツールに
outputSchemaを設定し、クライアント側の検証に対応(Cursor、VS Code/Copilot) - 仕様に沿った設計 -- サーバー側の
samplingが廃止された現在、MCP の2026-07-28仕様で推奨される方法に従い、プロバイダー API に直接接続します(SEP-2577)
対応プロバイダー
HTTP プロバイダー(OpenAI 互換 API)
以下を含む、OpenAI 互換の API エンドポイントを持つすべてのプロバイダーに対応しています。
- OpenAI
- Google Gemini
- Anthropic(OpenAI 互換エンドポイント経由)
- Groq(オープンウェイトモデルの高速推論)
- Together AI(幅広いオープンウェイトモデルのカタログ)
- Perplexity(ウェブ検索に対応したオンラインモデル)
- Anyscale、Azure OpenAI、Ollama、LM Studio、Custom
CLI プロバイダー(コーディングエージェント)
ローカルプロセスとして実行されるコマンドラインのコーディングエージェントです。
- Claude Code (
claude) -- Codex (codex) -- Gemini CLI (gemini) -- Grok CLI (grok) -- Aider (aider) -- カスタム
セットアップと設定の詳細は、CLI プロバイダーを参照してください。
クイックスタート
# Install globally
npm install -g mcp-rubber-duck
# Or use npx directly in Claude Desktop config
npx mcp-rubber-duck
Claude Desktop をお使いですか? Claude Desktop の設定に進んでください。 Cursor、VS Code、Windsurf、またはその他のツールをお使いですか? セットアップガイドを参照してください。
インストール
前提条件
- Node.js 20 以降
- npm または yarn
- HTTP プロバイダー用の API キーが少なくとも 1 つ、または ローカルにインストールされた CLI コーディングエージェント
NPM からインストール
npm install -g mcp-rubber-duck
ソースからインストール
git clone https://github.com/nesquikm/mcp-rubber-duck.git
cd mcp-rubber-duck
npm install
npm run build
npm start
設定
.env ファイルまたは config/config.json を作成します。主な環境変数は次のとおりです。
| 変数 | 説明 |
|---|---|
OPENAI_API_KEY | OpenAI API キー |
GEMINI_API_KEY | Google Gemini API キー |
GROQ_API_KEY | Groq API キー |
DEFAULT_PROVIDER | デフォルトのプロバイダー(例:openai) |
DEFAULT_TEMPERATURE | デフォルトの temperature(例:0.7) |
LOG_LEVEL | debug、info、warn、error |
MCP_SERVER | MCP サーバーモードでは true に設定 |
MCP_BRIDGE_ENABLED | MCP Bridge を有効化(ダックが外部 MCP サーバーにアクセスできるようにします) |
CUSTOM_{NAME}_* | カスタム HTTP プロバイダー |
CLI_{AGENT}_ENABLED | CLI エージェントを有効化(CLAUDE、CODEX、GEMINI、GROK、AIDER) |
詳細なリファレンス:設定ドキュメント
インタラクティブ UI(MCP Apps)
4 つのツール(compare_ducks、duck_vote、duck_debate、get_usage_stats)は、MCP Apps を介して、対応する MCP クライアント内にリッチなインタラクティブ HTML パネルを表示できます。この MCP サーバーを対応クライアントで設定すると、追加のセットアップなしで UI が自動的に表示されます。MCP Apps に対応していないクライアントでも、同じプレーンテキストの出力を受け取れます(機能は失われません)。対応クライアントの最新の一覧は、MCP Apps リポジトリを参照してください。
ダックの比較
複数のモデルの応答を並べて比較できます。レイテンシーの表示、トークン数、モデルバッジ、エラー状態も確認できます。
ダックの投票
複数のダックに選択肢への投票をさせ、その結果を棒グラフによる視覚的な集計として表示します。コンセンサスバッジ、勝者カード、信頼度バー、折りたたみ可能な推論も含まれます。
ダックのディベート
ダック同士の複数ラウンドにわたる構造化されたディベートを、ラウンドごとのビューで表示します。形式バッジ、参加者リスト、折りたたみ可能なラウンド、統合セクションが含まれます。
使用状況の統計
サマリーカード、展開可能な行を含むプロバイダー別の内訳、トークン分布バー、推定コストで使用状況を分析します。
| ツール | 説明 |
|---|---|
ask_duck | 指定した LLM プロバイダーに質問を 1 つ送信します |
chat_with_duck | メッセージ間でコンテキストを維持して会話します |
clear_conversations | すべての会話履歴を消去します |
list_ducks | 設定済みのプロバイダーとヘルスステータスを一覧表示します |
list_models | プロバイダーで利用可能なモデルを一覧表示します |
compare_ducks | 複数のプロバイダーに同じ質問を同時に送信します |
duck_council | 設定済みのすべての duck から回答を取得します |
get_usage_stats | 使用統計と推定コストを取得します |
duck_vote | 推論と確信度を伴う複数の duck による投票を行います |
duck_judge | 1 つの duck に他の duck の回答を評価し、順位付けさせます |
duck_iterate | 2 つの duck 間で回答を反復的に改善します |
duck_debate | duck 間で複数ラウンドの構造化された討論を行います |
mcp_status | MCP Bridge のステータスと接続中のサーバーを表示します |
get_pending_approvals | 保留中の MCP ツール承認リクエストを取得します |
approve_mcp_request | duck の MCP ツールリクエストを承認または拒否します |
入力スキーマを含む完全なリファレンス:ツールドキュメント
利用可能なプロンプト
| プロンプト | 目的 | 必須の引数 |
|---|---|---|
perspectives | 割り当てられた視点による多角的な分析 | problem、perspectives |
assumptions | 計画に潜む前提を明らかにします | plan |
blindspots | 見落とされているリスクや不足点を探します | proposal |
tradeoffs | 選択肢を構造化して比較します | options、criteria |
red_team | 多角的なセキュリティ/リスク分析 | target |
reframe | さまざまなレベルで問題を捉え直します | problem |
architecture | 懸念事項を網羅した設計レビュー | design、workloads、priorities |
diverge_converge | 発散的な検討の後に収束させます | challenge |
例を含む完全なリファレンス:プロンプトドキュメント
開発
npm run dev # Development with watch mode
npm test # Run all tests
npm run lint # ESLint
npm run typecheck # Type check without emit
ドキュメント
| トピック | リンク |
|---|---|
| セットアップガイド(すべてのツール) | docs/setup.md |
| 設定の完全なリファレンス | docs/configuration.md |
| Claude Desktop のセットアップ | docs/claude-desktop.md |
| スキーマ付きのすべてのツール | docs/tools.md |
| プロンプトテンプレート | docs/prompts.md |
| CLI コーディングエージェント | docs/cli-providers.md |
| MCP Bridge | docs/mcp-bridge.md |
| ガードレール | docs/guardrails.md |
| Docker のデプロイ | docs/docker.md |
| プロバイダー別のセットアップ | docs/provider-setup.md |
| 使用例 | docs/usage-examples.md |
| アーキテクチャ | docs/architecture.md |
| ロードマップ | docs/roadmap.md |
トラブルシューティング
プロバイダーが動作しない
- API キーが正しく設定されていることを確認します
- エンドポイント URL が正しいことを確認します
- ヘルスチェックを実行します:
list_ducks({ check_health: true }) - 詳細なエラーメッセージをログで確認します
接続の問題
- ローカルプロバイダー(Ollama、LM Studio)の場合、実行中であることを確認します
- ローカルエンドポイントのファイアウォール設定を確認します
- クラウドプロバイダーへのネットワーク接続を確認します
レート制限
- 代替プロバイダーへのフェイルオーバーを設定します
max_retriesとtimeoutの設定を調整します- レート制限の設定についてはガードレールを参照してください
貢献
__
<(o )___
( ._> /
`---' Quack! Ready to debug!
皆さまからの貢献をお待ちしています!バグの修正、機能の追加、あるいは私たちの duck に新しい芸を教えるなど、ぜひ仲間に加わってください。
始めるには、貢献ガイドをご覧ください。
貢献者向けクイックスタート:
- リポジトリをフォークします
- 機能ブランチを作成します
- Conventional Commits のガイドラインに従います
- 新しい機能のテストを追加します
- プルリクエストを送信します
ライセンス
MIT License - 詳細は LICENSE file をご覧ください。
謝辞
- ラバーダックデバッグ手法に着想を得ています
- Model Context Protocol(MCP)を基盤としています
- HTTP プロバイダーとの互換性のために OpenAI SDK を使用しています
- CLI コーディングエージェント(Claude Code、Codex、Gemini CLI、Grok、Aider)をサポートしています
変更履歴
変更とリリースの詳細な履歴は、CHANGELOG.mdをご覧ください。
レジストリとディレクトリ
- NPM パッケージ: npmjs.com/package/mcp-rubber-duck
- Docker イメージ: ghcr.io/nesquikm/mcp-rubber-duck
- MCP レジストリ: 公式 MCP サーバー
io.github.nesquikm/rubber-duck - Glama ディレクトリ: glama.ai/mcp/servers/@nesquikm/mcp-rubber-duck
- Awesome MCP Servers: コミュニティディレクトリに掲載されています
サポート
- 問題の報告: https://github.com/nesquikm/mcp-rubber-duck/issues
- ドキュメント: https://github.com/nesquikm/mcp-rubber-duck/wiki
- ディスカッション: https://github.com/nesquikm/mcp-rubber-duck/discussions
AI ダックパネルでデバッグをお楽しみください!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。