
なぜまた MCP サーバーを作ったのか
既存の画像生成用 MCP サーバーのほとんどは、OpenAI の DALL-E か Stability AI をベースにしています。Google Gemini モデルをサポートする MCP サーバーはほぼ存在せず、あったとしても Vertex AI 専用で、GCP プロジェクトのセットアップという高い参入障壁がありました。 そこで、自分で作ることにしました。核心となる目標は二つでした。- API キーだけですぐ使える — GCP プロジェクトなしでも、Google AI Studio で発行した API キーですぐに始められます。
- Flash と Pro のデュアルモデル — 高速で安価な Flash と、最高品質の Pro をランタイムで自由に切り替えられます。
アーキテクチャ:単一ファイルの美学
terrymcpnanobanana のロジック全体は、server.py という単一ファイルに収まっています。FastMCP フレームワークの上に Google GenAI SDK を接続した構造です。terrymcpnanobanana/
├── server.py # MCP 서버 전체 로직 (FastMCP + Google GenAI SDK)
├── requirements.txt # 의존성: fastmcp, google-genai, Pillow
├── README.md # 영문 문서
└── README_ko.md # 한국어 문서
単一ファイル設計を選んだのには理由があります。MCP サーバーは本質的に API ラッパーです。「モデルにリクエストを送り、結果を返す」というシンプルなパイプラインです。ファイルを複数に分けるとコードの追跡が難しくなり、単一ファイルなら セキュリティ監査(audit)も簡単で、全体の動作を一目で把握できます。

内部構造
server.py の内部は、明確なレイヤーに分かれています。- 定数の定義 — モデル ID、有効なパラメータ値、デフォルト値をモジュールの先頭に集約しています。
- クライアントの初期化 —
_get_client()で遅延初期化(lazy init)を行い、Vertex AI と API キーモードを自動で分岐します。 - バリデーション —
_validate_params()で API 呼び出し前にすべてのパラメータをローカルで検証します。 - 設定ビルダー —
_build_config()でモデルごとの設定オブジェクトを一貫して生成します。 - MCP ツール 5 種 — ユーザーが実際に呼び出すツール関数群です。
ImageConfigではなく、GenerateContentConfig.candidate_countにあります。ImageConfig(number_of_images=...)として渡すとExtra inputs are not permittedエラーになります — Google SDKのドキュメントと実際のPydanticモデルのフィールド名は異なる場合があるため、model_fields.keys()で直接確認するのが最も確実ですよ。(出典:ナノバナナプロMCPサーバー)デュアルモデル:Flash vs Pro
このサーバーは、二つの Google Gemini 画像モデルをサポートしています。model パラメータ一つで、ランタイムに切り替えられます。

| 項目 | Flash (Nano Banana 2) | Pro (Nano Banana Pro) |
|---|---|---|
| モデル ID | gemini-3.1-flash-image-preview |
gemini-3-pro-image-preview |
| 速度 | 約 4〜6 秒 | 約 8〜12 秒 |
| 基本コスト(1K) | 約 $0.067 /枚 | 約 $0.134 /枚 |
| 解像度 | 512px、1K、2K、4K | 1K、2K、4K |
| アスペクト比オプション | 14 種類 | 8 種類 |
| 参照画像 | 最大 10 枚 | 最大 14 枚 |
| Thinking Mode | 対応 | 非対応 |
| Search Grounding | 対応 | 非対応 |
API キーモード:GCP プロジェクトなしで始める
このサーバーの最大の特徴の一つが デュアル認証です。環境変数一つで Vertex AI モードと API キーモードを切り替えられます。API キーモード(開発・テスト用)
Google AI Studio で API キーを取得すれば、すぐに始められます。GCP プロジェクトのセットアップ、サービスアカウント、ADC(Application Default Credentials)といった複雑な手順は一切不要です。# 환경 변수 두 개면 끝
export GOOGLE_GENAI_USE_VERTEXAI=false
export GEMINI_API_KEY=your-api-key-here
Vertex AI モード(本番環境用)
# GCP 프로젝트가 있으면 전체 기능 사용 가능
export GOOGLE_GENAI_USE_VERTEXAI=true
export GOOGLE_CLOUD_PROJECT=your-project-id
export GOOGLE_CLOUD_LOCATION=global
API キーモードでは、
person_generation、prominent_people、output_mime_type、output_compression_quality パラメータは使用できません。サーバーが認証モードを検知して、これらのパラメータを自動的にスキップするため、エラーは発生しません。
API キー vs Vertex AI パラメータ比較
| パラメータ | Vertex AI | API キーモード |
|---|---|---|
person_generation |
対応 | 非対応(自動スキップ) |
prominent_people |
対応 | 非対応(自動スキップ) |
output_mime_type |
対応(JPEG/PNG) | 非対応(PNG 固定) |
output_compression_quality |
対応 | 非対応 |
safety_level |
対応 | 対応 |
thinking_level |
対応 | 対応 |
use_search |
対応 | 対応 |
5 つの MCP ツール
サーバーが提供するツールは 5 種類です。Claude Desktop や Claude Code から自然言語で呼び出せます。1. generate_image — テキストから画像を生成
テキストプロンプトを入力すると画像を生成します。最も基本的で頻繁に使われるツールです。# 기본 사용
prompt: "벚꽃이 만개한 일본 정원의 석양 풍경"
model: "flash"
aspect_ratio: "16:9"
image_size: "4K"
# Thinking Mode로 구도 향상 (Flash 전용)
thinking_level: "High"
# Google Search로 실제 장소 정확하게 묘사 (Flash 전용)
use_search: true
2. edit_image — 既存の画像を編集
既存の画像を自然言語の指示で編集します。スタイル変換、背景の削除、色調整などが可能です。image_path: "/home/user/photo.jpg"
instruction: "수채화 스타일로 변환해 주세요"
3. generate_with_references — 参照画像ベースの生成
参照画像を一緒に提供することで、キャラクターの一貫性やスタイルのマッチングを維持できます。Flash は最大 10 枚、Pro は最大 14 枚の参照画像をサポートしています。prompt: "같은 캐릭터가 카페에서 커피를 마시는 장면"
reference_paths: ["/path/to/char_ref1.png", "/path/to/char_ref2.png"]
model: "pro" # Pro는 최대 14장 레퍼런스
4. list_generated_images — 生成履歴の確認
出力ディレクトリに保存された画像の一覧を、最新順に表示します。ファイル名、パス、サイズ、更新日時を確認できます。5. get_supported_options — パラメータリファレンス
両モデルがサポートするすべてのパラメータ、有効な値、デフォルト値を JSON で返します。AI アシスタントがこのツールをまず呼び出して利用可能なオプションを把握してから画像を生成する、というパターンが効果的です。Flash 専用機能:Thinking Mode と Search Grounding
他の画像生成 MCP サーバーにはない機能が二つあります。どちらも Flash モデル専用です。Thinking Mode
thinking_level を "High" に設定すると、モデルが画像を生成する前に構図と構成を推論します。「このシーンでは光はどこから来るのが自然か」「遠近法はどう適用すべきか」といった思考プロセスを経てから画像を作成します。
Thinking トークンには別途課金が発生します。日常的な生成には デフォルト(オフ)のままにして、構図が重要な最終成果物にのみ使用することをおすすめします。
Search Grounding
use_search: true に設定すると、モデルが Google 検索(ウェブ+画像)を参照して画像を生成します。実在の人物、場所、ブランドロゴといった現実世界の対象を正確に描写する必要があるときに特に役立ちます。
2 層の安全システム
画像生成において安全フィルタリングは重要な問題です。このサーバーは 2 層の安全システムを運用しています。
第 1 層:Safety Filter(ユーザーが調整可能)
safety_level パラメータでフィルタリングの強度を調整できます。
BLOCK_LOW_AND_ABOVE— 最も厳格(低レベルの有害コンテンツからブロック)BLOCK_MEDIUM_AND_ABOVE— 中間レベルBLOCK_ONLY_HIGH— 高レベルのみブロック(推奨)BLOCK_NONE— フィルターを無効化
第 2 層:Model Guard(回避不可)
Google モデル内部に組み込まれたガードレールです。safety_level を BLOCK_NONE に設定しても、このガードは機能し続けます。違法なコンテンツや深刻な有害コンテンツは、モデル自体が生成を拒否します。
最適化:PNG から JPEG へ
画像ファイルサイズは、実際の運用では重要な問題です。Google のモデルはデフォルトで PNG として画像を返し、一般的な 1K 画像では約 5.5MB になります。 Vertex AI モードではoutput_mime_type を "image/jpeg" に、output_compression_quality を 85 に設定することで、約 80% のファイルサイズ削減を達成できます(5.5MB から 500〜900KB へ)。目視では品質の差がほとんどわからないレベルです。
API キーモードでは output_mime_type を指定できないため、PNG のみで出力されます。ファイルサイズが重要な本番環境では、Vertex AI モードをおすすめします。
解像度別の料金比較
1 枚あたりのおおよそのコストです(2026 年 2 月時点、プレビュー価格)。| 解像度 | Flash | Pro |
|---|---|---|
| 512px | 約 $0.045 | N/A |
| 1K | 約 $0.067 | 約 $0.134 |
| 2K | 約 $0.101 | 約 $0.134 |
| 4K | 約 $0.151 | 約 $0.240 |
Claude Desktop / Code に接続する
実際に使い始めるには、MCP クライアントの設定ファイルにサーバーを登録するだけです。Claude Desktop(API キーモード)
{
"mcpServers": {
"nanobanana": {
"command": "python",
"args": ["/path/to/terrymcpnanobanana/server.py"],
"env": {
"GOOGLE_GENAI_USE_VERTEXAI": "false",
"GEMINI_API_KEY": "your-api-key-here",
"NANOBANANA_OUTPUT_DIR": "/path/to/output/folder"
}
}
}
}
Claude Desktop(Vertex AI モード)
{
"mcpServers": {
"nanobanana": {
"command": "python",
"args": ["/path/to/terrymcpnanobanana/server.py"],
"env": {
"GOOGLE_CLOUD_PROJECT": "your-project-id",
"GOOGLE_CLOUD_LOCATION": "global",
"GOOGLE_GENAI_USE_VERTEXAI": "true",
"NANOBANANA_OUTPUT_DIR": "/path/to/output/folder"
}
}
}
}
設定が完了したら、Claude に「満開の桜が咲く日本庭園を描いて」と話しかけるだけで、すぐに画像が生成されますよ。
既存の MCP サーバーとの違い
画像生成 MCP サーバーのエコシステムにおける terrymcpnanobanana の差別化ポイントをまとめます。| 機能 | terrymcpnanobanana | 一般的な MCP サーバー |
|---|---|---|
| Thinking Mode | 対応(Flash) | 非対応 |
| Search Grounding | 対応(Flash) | 非対応 |
| デュアル認証 | Vertex AI + API Key | 単一認証 |
| デュアルモデル | Flash + Pro ランタイム切替 | 単一モデル |
| 参照画像ベースの生成 | 最大 14 枚 | ほぼ非対応 |
| ローカルパラメータ検証 | API 呼び出し前に検証 | API エラーに依存 |
| コード構造 | 単一ファイル(監査しやすい) | 複数ファイル |
実際の生成結果を比較:Gemini Flash vs xAI Grok
スペックや価格だけでは、実際の仕上がりの雰囲気はわかりませんよね。そこで、まったく同じプロンプトで Gemini Flash と xAI Grok がどう違う画像を作り出すのか、直接比較してみました。比較 1:アニメスタイル — 「魔法の工房でデジタル絵画を指揮するキャラクター」
プロンプト:“A magical workshop where colorful digital paintings float in the air like holograms. An anime-style young woman with long dark hair stands at the center, conducting the floating artworks with glowing fingertips…”
Gemini Flash — 鮮やかなネオンカラー、はっきりしたアニメのラインワーク、各キャンバスのアートスタイルが明確に区別されています

xAI Grok — 柔らかいラベンダー / パープルトーン、よりフォトリアルなレンダリング、夢幻的な雰囲気が強いです
比較 2:実写スタイル — 「桜カフェで抹茶ラテを飲む女性」
プロンプト:“A young woman with long dark hair sitting in a cozy Japanese cafe by the window. She is holding a warm cup of matcha latte, looking out at cherry blossom trees in full bloom outside…”
Gemini Flash — 自然光のドキュメンタリー風、ディテールがリアルで色味もナチュラルです

xAI Grok — ドラマチックなライティング、桜の花びらが舞い散る演出、よりスタイライズされた雰囲気です
比較から見えるインサイト
| 項目 | Gemini Flash | xAI Grok |
|---|---|---|
| アニメ傾向 | 伝統的アニメスタイルに忠実 | セミリアリスティック寄り |
| 実写傾向 | ナチュラルなスナップショット感 | スタジオポートレート感 |
| 色彩 | プロンプトの色指示に忠実 | 独自のカラーコレクション傾向が強い |
| ディテール | 背景ディテールが豊富 | 人物中心のディテール重視 |
| コスト(1K) | 約 $0.067 /枚 | 無料(API 制限あり) |
まとめ
terrymcpnanobanana は、Google Gemini のネイティブ画像生成機能を MCP プロトコルでラップしたサーバーです。要点をまとめると次のとおりです。- API キー一つで始められる — GCP プロジェクト不要。Google AI Studio の API キーだけですぐ使えます。
- Flash + Pro デュアルモデル — 高速・低コストな Flash(約 $0.067 /枚)と高品質な Pro(約 $0.134 /枚)をランタイムで切り替えられます。
- Thinking Mode + Search Grounding — 他の画像 MCP サーバーではなかなか見つからない独自機能です。
- 単一ファイル設計 — すべてのロジックが server.py 一つに収まっており、理解しやすく監査も簡単です。
- 5 種類のツール — 生成、編集、参照画像ベースの生成、履歴確認、オプション確認をすべてカバーしています。