🚀 ナノバナナ - MCP画像生成拡張機能
この拡張機能は、MCP(Model Context Protocol)互換のクライアント(Gemini CLIやCodex CLIを含む)向けのプロフェッショナルな拡張機能で、画像の生成と操作を行うことができます。デフォルトではgoogle/gemini-2.5-flash-imageモデルを使用し、OpenRouterに接続するように事前設定されています。MODEL_*環境変数を調整することで、そのモデルをホストしている任意のプロバイダーを指定することができます。
✨ 主な機能
- 🎨 テキストから画像への生成:説明的なプロンプトから見事な画像を作成します。
- ✏️ 画像編集:自然言語の指示で既存の画像を修正します。
- 🔧 画像修復:古いまたは損傷した写真を修復し、画質を向上させます。
- 📁 スマートなファイル管理:自動的に重複を防ぐ使いやすいファイル名を提供します。
📋 前提条件
- MCP互換のCLIがインストールされ、設定されていること(例:Gemini CLI、Codex CLI)
- Node.js 18+ とnpm
- APIキー:OpenRouterまたは
google/gemini-2.5-flash-imageモデルをホストしている他のプロバイダーからAPIキーが必要です。
デフォルトでは、この拡張機能はOpenRouterと通信します。モデルをホストしている他のプロバイダーをターゲットにする場合、以下のオプションを使用できます。
MODEL_BASE_URL – 代替プロバイダーのエンドポイント(デフォルト: https://openrouter.ai/api/v1)
MODEL_ID – モデルIDを上書き(デフォルト: google/gemini-2.5-flash-image)
MODEL_REFERER / MODEL_TITLE – 必要なプロバイダーの分析ヘッダー
MODEL_GENERATE_PATH – 代替生成エンドポイントパス(デフォルト: /responses)
OpenRouterを使用する場合は、APIキーの生成について 認証ガイド を参照してください。他のプロバイダーの場合は、それぞれのドキュメントを参照してください。
🚀 クイックスタート
📦 インストール
NPMからのインストール(推奨)
ほとんどのユーザーにとって、npxまたはCLIの拡張機能マネージャーを使用してインストールするのが最も簡単な方法です。
Gemini CLI:
拡張機能をインストールすると、APIキーの入力を求められます。
gemini extensions install https://github.com/Aeven-AI/mcp-nanobanana
Codex CLI:
codex mcp add nanobanana --env MODEL_API_KEY="YOUR_API_KEY_HERE" -- npx -y @aeven/nanobanana-mcp@latest
Opencode CLI:
opencode config editを実行するか、opencode.jsonc設定ファイルを手動で開きます。
- 以下のようなエントリでサーバーを登録します。
{
"mcp": {
"nanobanana": {
"type": "local",
"command": ["npx", "-y", "@aeven/nanobanana-mcp@latest"],
"enabled": true,
"environment": {
"MODEL_API_KEY": "{env:MODEL_API_KEY}"
}
}
}
}
- ファイルを保存し、Opencodeを再起動して新しいMCPサーバーを認識させます。
Claude Code:
- Claude Codeを開き、Settings → Model Context Protocol → Add Serverに移動します。
- コマンドを
npxに、引数を-yと@aeven/nanobanana-mcp@latestに設定します。
- 環境変数
MODEL_API_KEYをプロバイダーのキーに設定します。
- サーバー設定を保存し、Claude Codeを再起動するか(またはウィンドウを再読み込み)接続します。
ローカル開発用のインストール
このリポジトリをクローンしてコードを編集する場合は、ローカルバージョンを登録できます。
1. サーバーの依存関係をインストールする(クローンごとに一度):
npm run install-deps
2. サーバーをビルドする:
npm run build
3. CLIに登録する:
Codex CLIの場合:
codex mcp add nanobanana --env MODEL_API_KEY="YOUR_API_KEY_HERE" -- node mcp-server/dist/index.js
🔑 APIキーの設定
この拡張機能は、モデルプロバイダー(例:OpenRouter)との認証にMODEL_API_KEYが必要です。以下は、異なるクライアントでの設定方法です。
Gemini CLI
インストールプロセス中に自動的にAPIキーの入力を求められます。
Codex CLI
codex mcp addコマンドには、これを処理するための専用の--envフラグがあります。「インストール」セクションで提供されているコマンドにはすでにこれが含まれており、推奨されるインストール方法です。
その他のCLI(シェルプロファイル)
他のクライアントの場合、または手動でキーを管理したい場合は、シェルのプロファイルファイル(例:~/.zshrc、~/.bashrc、または~/.profile)でMODEL_API_KEYを環境変数として設定できます。
- ファイルの末尾に以下の行を追加します。
export MODEL_API_KEY="YOUR_API_KEY_HERE"
- ターミナルを再起動して変更を有効にします。
アクティブ化
MCP CLI(Gemini CLI、Codex CLIなど)を再起動します。以下のコマンドが使用可能になります。
/generate - スタイル/バリエーションオプションを使用した単一または複数の画像生成
/edit - 画像編集
/restore - 画像修復
/icon - 複数のサイズのアプリアイコン、ファビコン、およびUI要素を生成
/pattern - 背景用のシームレスなパターンとテクスチャを生成
/story - 視覚的な物語またはプロセスを説明する連続画像を生成
/diagram - 技術図、フローチャート、およびアーキテクチャモックアップを生成
/nanobanana - 自然言語インターフェース
💻 使用例
基本的な使用法
この拡張機能は、さまざまなユースケースに対応する複数のコマンドオプションを提供します。
⚠️ 重要提示
以下の例ではGemini CLIのスラッシュコマンドを使用しています。Codex CLIや他のMCPクライアントでは、クライアントが提供する構文を使用して同じMCPツール(generate_image、edit_imageなど)を呼び出します。
🎯 特定のコマンド(推奨)
画像生成:
/generate "a watercolor painting of a fox in a snowy forest"
/generate "sunset over mountains" --count=3 --preview
画像編集:
/edit my_photo.png "add sunglasses to the person"
/edit portrait.jpg "change background to a beach scene" --preview
画像修復:
/restore old_family_photo.jpg "remove scratches and improve clarity"
アイコン生成:
/icon "coffee cup logo" --sizes="64,128,256" --type="app-icon" --preview
パターン作成:
/pattern "geometric triangles" --type="seamless" --style="geometric" --preview
ストーリー生成:
/story "a seed growing into a tree" --steps=4 --type="process" --preview
ダイアグラム作成:
/diagram "user login process" --type="flowchart" --style="professional" --preview
🌟 自然言語コマンド(柔軟性が高い)
自由形式のプロンプト:
/nanobanana create a logo for my tech startup
/nanobanana I need 5 different versions of a cat illustration in various art styles
/nanobanana fix the lighting in sunset.jpg and make it more vibrant
高度な使用法
高度な生成オプション
/generateコマンドは、さまざまなスタイルとパラメーターで複数のバリエーションを作成するための高度なオプションをサポートしています。
生成オプション
--count=N - バリエーションの数(1 - 8、デフォルト: 1)
--styles="style1,style2" - カンマ区切りのアートスタイル
--variations="var1,var2" - 特定のバリエーションタイプ
--format=grid|separate - 出力形式(デフォルト: separate)
--seed=123 - 再現可能なバリエーションのシード
--preview - 生成された画像をデフォルトのビューアーで自動的に開く
利用可能なスタイル
photorealistic - 写真画質の画像
watercolor - 水彩画スタイル
oil-painting - 油絵技法
sketch - 手描きのスケッチスタイル
pixel-art - レトロピクセルアートスタイル
anime - アニメ/マンガアートスタイル
vintage - ヴィンテージ/レトロな美学
modern - 現代的なスタイル
abstract - 抽象アートスタイル
minimalist - クリーンでミニマルなデザイン
利用可能なバリエーション
lighting - 異なる照明条件(劇的な、柔らかい)
angle - さまざまな視点(上から、近接)
color-palette - 異なる配色(暖色系、冷色系)
composition - 異なるレイアウト(中央配置、三分法)
mood - さまざまな感情的な雰囲気(明るい、劇的な)
season - 異なる季節(春、冬)
time-of-day - 異なる時間(日の出、日の入り)
高度な使用例
スタイルバリエーション:
/generate "mountain landscape" --styles="watercolor,oil-painting,sketch,photorealistic"
複数のバリエーション:
/generate "cozy coffee shop" --variations="lighting,mood" --count=4
アイコン生成
/iconコマンドは、適切なサイズと形式でアプリアイコン、ファビコン、およびUI要素を作成することに特化しています。
アイコンオプション
--sizes="16,32,64" - ピクセル単位のアイコンサイズの配列(一般的なサイズ: 16、32、64、128、256、512、1024)
--type="app-icon|favicon|ui-element" - アイコンのタイプ(デフォルト: app-icon)
--style="flat|skeuomorphic|minimal|modern" - ビジュアルスタイル(デフォルト: modern)
--format="png|jpeg" - 出力形式(デフォルト: png)
--background="transparent|white|black|color" - 背景のタイプ(デフォルト: transparent)
--corners="rounded|sharp" - アプリアイコンの角のスタイル(デフォルト: rounded)
アイコンの使用例
/icon "productivity app with checklist" --sizes="64,128,256,512" --corners="rounded"
/icon "mountain logo" --type="favicon" --sizes="16,32,64" --format="png"
パターンとテクスチャ生成
/patternコマンドは、背景やデザイン要素に最適なシームレスなパターンとテクスチャを作成します。
パターンオプション
--size="256x256" - パターンタイルのサイズ(一般的なサイズ: 128x128、256x256、512x512)
--type="seamless|texture|wallpaper" - パターンのタイプ(デフォルト: seamless)
--style="geometric|organic|abstract|floral|tech" - パターンのスタイル(デフォルト: abstract)
--density="sparse|medium|dense" - 要素の密度(デフォルト: medium)
--colors="mono|duotone|colorful" - 配色(デフォルト: colorful)
--repeat="tile|mirror" - シームレスなパターンのタイリング方法(デフォルト: tile)
パターンの使用例
/pattern "subtle geometric hexagons" --type="seamless" --colors="duotone" --density="sparse"
/pattern "brushed metal surface" --type="texture" --style="tech" --colors="mono"
ビジュアルストーリーテリング
/storyコマンドは、視覚的な物語を語るか、段階的なプロセスを示す連続画像を生成します。
ストーリーオプション
--steps=N - 連続画像の数(2 - 8、デフォルト: 4)
--type="story|process|tutorial|timeline" - シーケンスのタイプ(デフォルト: story)
--style="consistent|evolving" - フレーム間のビジュアルの一貫性(デフォルト: consistent)
--layout="separate|grid|comic" - 出力レイアウト(デフォルト: separate)
--transition="smooth|dramatic|fade" - ステップ間の遷移スタイル(デフォルト: smooth)
--format="storyboard|individual" - 出力形式(デフォルト: individual)
ストーリーの使用例
/story "idea to launched product" --steps=5 --type="process" --style="consistent"
/story "git workflow tutorial" --steps=6 --type="tutorial" --layout="comic"
技術図
/diagramコマンドは、シンプルなテキスト説明からプロフェッショナルな技術図、フローチャート、およびアーキテクチャモックアップを生成します。
ダイアグラムオプション
--type="flowchart|architecture|network|database|wireframe|mindmap|sequence" - ダイアグラムのタイプ(デフォルト: flowchart)
--style="professional|clean|hand-drawn|technical" - ビジュアルスタイル(デフォルト: professional)
--layout="horizontal|vertical|hierarchical|circular" - レイアウトの方向(デフォルト: hierarchical)
--complexity="simple|detailed|comprehensive" - 詳細レベル(デフォルト: detailed)
--colors="mono|accent|categorical" - 配色(デフォルト: accent)
--annotations="minimal|detailed" - ラベルと注釈のレベル(デフォルト: detailed)
ダイアグラムのタイプとユースケース
- flowchart: プロセスフロー、決定木、ワークフロー
- architecture: システムアーキテクチャ、マイクロサービス、インフラストラクチャ
- network: ネットワークトポロジー、サーバー構成
- database: データベーススキーマ、エンティティ関係
- wireframe: UI/UXモックアップ、ページレイアウト
- mindmap: 概念マップ、アイデアの階層構造
- sequence: シーケンス図、APIインタラクション
ダイアグラムの使用例
/diagram "CI/CD pipeline with testing stages" --type="flowchart" --complexity="detailed"
/diagram "chat application architecture" --type="architecture" --style="technical"
📁 ファイル管理
スマートなファイル名生成
画像は、プロンプトに基づいた使いやすい名前で保存されます。
"sunset over mountains" → sunset_over_mountains.png
"abstract art piece" → abstract_art_piece.png
自動重複防止
ファイルがすでに存在する場合、自動的にカウンターが追加されます。
sunset_over_mountains.png
sunset_over_mountains_1.png
sunset_over_mountains_2.png
ファイル検索場所
編集/修復のために、拡張機能は入力画像を以下の場所で検索します。
- 現在の作業ディレクトリ
./images/サブディレクトリ
./input/サブディレクトリ
./nanobanana-output/サブディレクトリ
~/Downloads/
~/Desktop/
出力ディレクトリ
生成された画像は、自動的に作成される./nanobanana-output/に保存されます。
🛠️ 開発
ビルドコマンド
npm run build
npm run install-deps
npm run dev
MCPサーバーコマンド
cd mcp-server && npm run build
cd mcp-server && npm start
cd mcp-server && npm run dev
テスト
cd mcp-server && npm test
cd mcp-server && npm run test:unit
cd mcp-server && npm run test:integration
デフォルトの統合テストは、メモリ内トランスポートとスタブ化された画像生成器を使用するため、オフラインで実行され、APIキーは必要ありません。
実際のOpenRouterワークフローをエンドツーエンドでテストするには、MODEL_API_KEYを設定した後、手動スクリプトを実行します。
cd mcp-server
MODEL_API_KEY="sk-..." node ./tests/manual/openrouter.integration.js
生成されたアセットは、手動で確認するためにmcp-server/nanobanana-output/に配置されます。
npmパッケージングの検証
公開されたnpmバイナリが正しく起動することを確認するために、自動化されたスモークテストを実行します。
npm run verify:npm
このコマンドは、プロジェクトをパックし、一時ディレクトリにtarballをインストールし、npx nanobanana-mcpを起動し、stdioサーバーのバナーが表示されることを確認します。成功メッセージの後に中断しても安全です。
🔧 技術詳細
主要コンポーネント
index.ts: プロフェッショナルなプロトコル処理のために@modelcontextprotocol/sdkを使用するMCPサーバー
imageGenerator.ts: すべてのOpenRouter APIインタラクションとレスポンス処理を担当
fileHandler.ts: ファイルの入出力、スマートなファイル名生成、およびファイル検索を管理
types.ts: 型安全のための共有TypeScriptインターフェース
MCPサーバープロトコル
この拡張機能は、堅牢なクライアント - サーバー通信のために公式のModel Context Protocol (MCP) SDKを使用しています。
- プロトコル: stdioを介したJSON - RPC
- SDK:
@modelcontextprotocol/sdk
- ツール:
generate_image、edit_image、restore_image
API統合
- モデル:
google/gemini-2.5-flash-image(環境変数で構成可能)
- トランスポート: 直接HTTPリクエスト(デフォルトではOpenRouter;
MODEL_BASE_URLを設定して、モデルをホストしている他のプロバイダーをターゲットにすることができます)
- レスポンス処理: 画像データが欠落している場合にも対応できるグレースフルなフォールバックを伴うBase64デコード
- 出力サイズ: すべての画像は1024×1024解像度(モデルの最大値)で返されます。
エラーハンドリング
- デバッグ情報を含む包括的なエラーメッセージ
- APIレスポンスの解析におけるグレースフルなフォールバック
- ファイル検証と検索パスの報告
🐛 トラブルシューティング
一般的な問題
- "Command not recognized": MCPサーバーがCLIに登録されていることを確認し(例:Gemini CLIの場合は
~/.gemini/extensions/nanobanana-extension/、Codex CLIの場合はCodex CLIの設定)、クライアントを再起動します。
- "No API key found": インストール時にAPIキーを正しく入力したことを確認するか、Gemini CLIを使用していない場合は
MODEL_API_KEY環境変数が正しく設定されていることを確認します。
- "Build failed": Node.js 18+がインストールされていることを確認し、
npm run install-deps && npm run buildを実行します。
- "Image not found": 入力ファイルが検索対象のディレクトリのいずれかにあることを確認してください(上記の「ファイル検索場所」を参照)。
npx install errors: ~/.npm/_npxの古いディレクトリがインストール失敗の原因になることがあります。rm -rf ~/.npm/_npx/*でキャッシュを削除し、インストールコマンドを再実行します。
デバッグモード
MCPサーバーには、問題の診断に役立つ詳細なデバッグログがCLIコンソール(Gemini CLI、Codex CLIなど)に表示されます。
📄 ライセンス
- ライセンス: Apache License 2.0
- セキュリティ: Security Policy
🤝 コントリビューション
- リポジトリをフォークします。
- 機能ブランチを作成します。
- モジュール化されたアーキテクチャで変更を加えます。
npm run buildを実行してコンパイルが正常に行われることを確認します。
- MCP CLI(Gemini CLI、Codex CLIなど)でテストします。
- プルリクエストを送信します。