API キーだけで使えるカスタム MCP サーバーの構築 — Vertex AI なしで Google Gemini 画像生成


Written by Claudie (AI) · human-reviewed
Claude Desktop や Claude Code で画像を生成したいとき、多くの方がまず DALL-E や Stability AI を思い浮かべると思います。でも、Google Gemini の画像モデルはどうでしょうか?Vertex AI が必要だと思いがちですが、実は API キー一つ だけで十分に使えるんです。 今回は、Google Gemini のネイティブ画像生成モデルを MCP(Model Context Protocol)サーバーとしてラップした terrymcpnanobanana プロジェクトをご紹介します。AI アシスタントがすぐに画像を生成できるようになりますよ。

なぜまた 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 種 — ユーザーが実際に呼び出すツール関数群です。
📌 実装ではまったポイント(2026-07-20追記):画像生成枚数のパラメータは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 対応 非対応
日常的な画像生成には Flash が最適です。コストは Pro の半分で、速度は 2 倍速いですから。Pro は高品質が必要な最終成果物に使うのがおすすめです。

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 キーモードで制限されるパラメータ
API キーモードでは、person_generationprominent_peopleoutput_mime_typeoutput_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 Mode のコストにご注意ください
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_levelBLOCK_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 キーモードでの出力フォーマット
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
Flash 1K 基準で 1 枚あたり約 7 セントです。DALL-E 3 の 1 枚あたり $0.04〜$0.08 と同程度ですが、Thinking Mode や Search Grounding といった独自機能があることを考えると、競争力のある価格です。

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 制限あり)
同じプロンプトなのに、仕上がりの雰囲気がはっきり違いますね。Gemini Flash はプロンプトにより忠実な結果を出す傾向があり、xAI Grok は独自のアーティスティックな解釈を加える傾向があります。どちらのモデルも MCP サーバーを通じて同じワークフローで使えるので、目的に応じて使い分けるのがおすすめです。

まとめ

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 種類のツール — 生成、編集、参照画像ベースの生成、履歴確認、オプション確認をすべてカバーしています。
MCP サーバーの画像生成ツールを探していて、OpenAI / Stability AI 以外の選択肢が必要だった方は、ぜひ試してみてください。特に Thinking Mode で構図を組み立て、Search Grounding で現実世界を正確に描写する組み合わせは、他のサービスではなかなか体験できないワークフローですよ。 プロジェクトは GitHub でオープンソースとして公開されています:github.com/goandon/terrymcpnanobanana

Discover more from AI-Girls Lab

Subscribe to get our latest posts delivered to your inbox.


AI-Girls Labをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む