@tasopen/mcp-alphabanana 1.2.1 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.ja.md CHANGED
@@ -1,19 +1,20 @@
1
1
  # mcp-alphabanana
2
2
 
3
- English | [日本語](README.ja.md)
3
+ [English](README.md) | 日本語
4
4
 
5
- Google Gemini AI を使って画像アセットを生成する Model Context Protocol (MCP) サーバー。
5
+ Google Gemini AI(Gemini 3.1 Flash / Nano Banana 2 対応)で画像アセットを生成する Model Context Protocol (MCP) サーバーです。
6
6
 
7
- [FastMCP 3](https://www.npmjs.com/package/fastmcp) で構築され、シンプルなコードベースと柔軟な出力オプションを提供します。
7
+ [FastMCP 3](https://www.npmjs.com/package/fastmcp) で構築されており、シンプルなコードベースと柔軟な出力オプションを提供します。
8
8
 
9
- ## 機能
9
+ ## 主な機能
10
10
 
11
- - **Google Gemini AI による汎用画像生成**
12
- - **カラーキー後処理による透過 PNG 出力**
13
- - **複数の出力形式**: ファイル、base64、または両方
14
- - **スタイル参照のための参照画像サポート**
15
- - **柔軟なリサイズモード**: crop、stretch、letterbox、contain
16
- - **複数のモデルティア**: flash (Gemini 2.5 Flash) または pro (Gemini 3 Pro)
11
+ - **超高速画像生成**(Gemini 3.1 Flash、0.5K/1K/2K/4K)
12
+ - **高度なマルチ画像推論**(参照画像を最大 14 枚)
13
+ - **Thinking / Grounding 対応**(Flash3.1 のみ)
14
+ - **透過 PNG / WebP 出力**(カラーキー後処理 + デスピル)
15
+ - **複数の出力形式**: file / base64 / combine
16
+ - **柔軟なリサイズモード**: crop / stretch / letterbox / contain
17
+ - **複数モデルティア**: Flash3.1 / Flash2.5 / Pro3 / 互換エイリアス
17
18
 
18
19
  ## インストール
19
20
 
@@ -21,11 +22,11 @@ Google Gemini AI を使って画像アセットを生成する Model Context Pro
21
22
 
22
23
  ## 設定
23
24
 
24
- `GEMINI_API_KEY` を MCP 設定(例: `mcp.json`)で設定します。一部のエージェント環境では OS 環境変数にアクセスできないため、`mcp.json` で OS 環境変数を参照するか、直接キーを記載できます。
25
+ `GEMINI_API_KEY` を MCP 設定(例: `mcp.json`)で指定します。
25
26
 
26
27
  例:
27
28
 
28
- - `mcp.json` で OS 環境変数を参照:
29
+ - `mcp.json` で OS 環境変数を参照する場合
29
30
 
30
31
  ```json
31
32
  {
@@ -35,7 +36,7 @@ Google Gemini AI を使って画像アセットを生成する Model Context Pro
35
36
  }
36
37
  ```
37
38
 
38
- - `mcp.json` に直接キーを記載(エージェントが OS 環境変数を参照できない場合に有用):
39
+ - `mcp.json` に直接キーを記載する場合
39
40
 
40
41
  ```json
41
42
  {
@@ -45,11 +46,9 @@ Google Gemini AI を使って画像アセットを生成する Model Context Pro
45
46
  }
46
47
  ```
47
48
 
48
- 運用に合わせて選択してください(可能であれば環境参照を推奨)。
49
+ ## VS Code 連携
49
50
 
50
- ## VS Code 統合
51
-
52
- VS Code 設定(`.vscode/settings.json` またはユーザー設定)に追加し、サーバー `env` を `mcp.json` または VS Code MCP 設定で設定します。OS 環境変数参照または直接キー記載の両方に対応:
51
+ VS Code 設定(`.vscode/settings.json` またはユーザー設定)に追加してください。`env` は `mcp.json` もしくは VS Code MCP 設定経由で指定できます。
53
52
 
54
53
  ```json
55
54
  {
@@ -57,9 +56,9 @@ VS Code 設定(`.vscode/settings.json` またはユーザー設定)に追加
57
56
  "servers": {
58
57
  "mcp-alphabanana": {
59
58
  "command": "npx",
60
- "args":["-y", "@tasopen/mcp-alphabanana"],
59
+ "args": ["-y", "@tasopen/mcp-alphabanana"],
61
60
  "env": {
62
- "GEMINI_API_KEY": "${env:GEMINI_API_KEY}" // or "your_api_key_here"
61
+ "GEMINI_API_KEY": "${env:GEMINI_API_KEY}"
63
62
  }
64
63
  }
65
64
  }
@@ -67,115 +66,43 @@ VS Code 設定(`.vscode/settings.json` またはユーザー設定)に追加
67
66
  }
68
67
  ```
69
68
 
70
- **オプション:** 書き込み失敗時のカスタムフォールバックディレクトリを指定する場合は `MCP_FALLBACK_OUTPUT` `env` に追加してください。
71
-
72
- ## Antigravity (mcp_config.json)
73
-
74
- Antigravity ではグローバルな `mcp_config.json` で MCP サーバーを登録します。例:
75
-
76
- ```json
77
- {
78
- "mcpServers": {
79
- "mcp-alphabanana": {
80
- "command": "npx",
81
- "args": ["-y", "@tasopen/mcp-alphabanana"],
82
- "env": {
83
- "GEMINI_API_KEY": "your_api_key_here"
84
- }
85
- }
86
- }
87
- }
88
- ```
89
-
90
- 注: このリポジトリでは `mcp_config.json` に `mcp-alphabanana` エントリ(Antigravity)を追加し、サーバー起動と画像生成の動作を確認しています。
91
-
92
- ## Claude Desktop
93
-
94
- Claude Desktop で MCP サーバーを動かす場合は `claude_desktop_config.json` にエントリを追加:
95
-
96
- ```json
97
- {
98
- "mcpServers": {
99
- "mcp-alphabanana": {
100
- "command": "npx",
101
- "args": ["-y", "@tasopen/mcp-alphabanana"],
102
- "env": {
103
- "GEMINI_API_KEY": "your_api_key_here"
104
- }
105
- }
106
- }
107
- }
108
- ```
109
-
110
- テスト済み: 上記エントリを Claude Desktop に追加しサーバーを起動すると、MCP サーバーが起動し画像生成が動作しました。
111
-
112
- ### 環境変数
69
+ **任意:** 書き込み失敗時の保存先を変更したい場合は、`env` `MCP_FALLBACK_OUTPUT` を追加してください。
113
70
 
114
- | 変数 | 必須 | 説明 |
115
- |----------|----------|-------------|
116
- | `GEMINI_API_KEY` | Yes | Google AI Studio APIキー。`mcp.json` で OS 環境変数参照(`${env:GEMINI_API_KEY}`)または直接キー記載(エージェントが OS 環境変数にアクセス不可な場合) |
117
- | `MCP_FALLBACK_OUTPUT` | No | 書き込み失敗時のフォールバックディレクトリ(デフォルト: `<install-dir>/fallback-output`) |
71
+ ## モデル選択とパラメータ
118
72
 
119
- ### 出力パスのベストプラクティス
73
+ | 入力モデルID | 内部モデルID | 説明 |
74
+ | --- | --- | --- |
75
+ | `Flash3.1` | `gemini-3.1-flash-image-preview` | 超高速。Thinking / Grounding 対応。 |
76
+ | `Flash2.5` | `gemini-2.5-flash-image` | 旧 Flash 系。安定性高め。低コスト。 |
77
+ | `Pro3` | `gemini-3.0-pro-image-preview` | 高品質な Pro モデル。 |
78
+ | `flash` | `gemini-3.1-flash-image-preview` | 後方互換エイリアス。 |
79
+ | `pro` | `gemini-3.0-pro-image-preview` | 後方互換エイリアス。 |
120
80
 
121
- **常に `outputPath` には絶対パスを使ってください:**
81
+ ### パラメータ(v2.0)
122
82
 
123
- 良い例: "C:/Users/you/project/assets", "/home/user/images"
124
- ❌ 悪い例: `"./"`, `"output/"`, `"../images"`
125
-
126
- 相対パスは MCP サーバーの作業ディレクトリから解決されるため、サービス実行時に予期しない場所にファイルが作成される可能性があります。
127
-
128
- **フォールバック動作:**
129
- - 指定した `outputPath` が書き込み可能 通常通り画像を保存
130
- - 書き込み不可(パーミッション拒否など) フォールバックディレクトリに保存しレスポンスに `warning` を含める
131
- - フォールバックも失敗した場合 エラーを返す
132
-
133
- ## 開発
134
-
135
- ```bash
136
- # 開発モード(MCP CLI)
137
- npm run dev
138
-
139
- # MCP Inspector (Web UI)
140
- npm run inspect
141
-
142
- # 本番用ビルド
143
- npm run build
144
- ```
145
-
146
- ## ツール: generate_image
83
+ | パラメータ | 型 | 既定値 | 説明 |
84
+ |-----------|------|---------|-------------|
85
+ | `prompt` | string | 必須 | 生成したい画像の説明 |
86
+ | `model` | enum | `Flash3.1` | `Flash3.1` / `Flash2.5` / `Pro3` / `flash` / `pro` |
87
+ | `output_resolution` | enum | `1K` | `0.5K` / `1K` / `2K` / `4K`(0.5K/2K/4K は Flash3.1 のみ) |
88
+ | `output_format` | enum | `png` | `png` / `jpg` / `webp`(WebP はアルファ対応) |
89
+ | `transparent` | boolean | `false` | 背景透過(PNG / WebP のみ) |
90
+ | `grounding_type` | enum | `none` | `none` / `text` / `image` / `both`(Flash3.1 のみ) |
91
+ | `thinking_mode` | enum | `minimal` | `minimal` / `high`(Flash3.1 のみ) |
92
+ | `include_thoughts` | boolean | `false` | モデルの思考データを返却(Flash3.1 のみ) |
93
+ | `include_metadata` | boolean | `false` | JSON 出力に grounding / reasoning メタデータを含める |
94
+ | `reference_images` | array | `[]` | 最大 14 枚(Flash3.1/Pro3)、Flash2.5 は 3 枚 |
147
95
 
148
- Gemini AI で画像アセットを生成(オプションで透過・参照画像対応)。
96
+ ---
149
97
 
150
- ### パラメータ
98
+ ## 使用例
151
99
 
152
- | パラメータ | 型 | デフォルト | 説明 |
153
- |-----------|------|---------|-------------|
154
- | `prompt` | string | *必須* | 生成する画像の説明 |
155
- | `outputFileName` | string | *必須* | 出力ファイル名(拡張子がない場合は自動追加) |
156
- | `outputType` | enum | `combine` | 出力形式: `file`、`base64`、または`combine` |
157
- | `modelTier` | enum | *必須* | モデル: `flash` (Gemini 2.5 Flash, 最大3参照) または `pro` (Gemini 3 Pro, 最大14参照) |
158
- | `sourceResolution` | enum | `1K` | Gemini生成解像度: `1K`、`2K`、または`4K` (2K/4Kはproのみ) |
159
- | `outputWidth` | number | `1024` | 出力幅(ピクセル、8-4096) |
160
- | `outputHeight` | number | `1024` | 出力高さ(ピクセル、8-4096) |
161
- | `outputFormat` | enum | `png` | 出力形式: `png`または`jpg` |
162
- | `outputPath` | string | *任意* | 絶対パスの出力ディレクトリ(ファイル保存時は必須) |
163
- | `transparent` | boolean | `false` | 透過背景をリクエスト(PNGのみ) |
164
- | `transparentColor` | string | `null` | 透過にする色(例: `#FF00FF`、未指定時は #FF00FF) |
165
- | `colorTolerance` | number | `30` | 透過色マッチングの許容範囲(0-255) |
166
- | `fringeMode` | enum | `auto` | フリンジ処理: `auto`、`crisp`、`hd`(autoは128px以下で`crisp`、それ以外は`hd`) |
167
- | `resizeMode` | enum | `crop` | リサイズモード: `crop`、`stretch`、`letterbox`、または`contain` |
168
- | `referenceImages` | array | `[]` | スタイルガイダンス用の参照画像(ファイルパス) |
169
- | `debug` | boolean | `false` | デバッグモード: 中間画像を出力 |
170
-
171
- ### 使用例
172
-
173
- #### 基本的な生成
100
+ #### 基本生成
174
101
 
175
102
  ```json
176
103
  {
177
- "prompt": "ピクセルアートの宝箱、金の装飾、木の質感",
178
- "modelTier": "flash",
104
+ "prompt": "金の縁取りがある木製のピクセルアート宝箱",
105
+ "model": "Flash3.1",
179
106
  "outputFileName": "chest",
180
107
  "outputWidth": 64,
181
108
  "outputHeight": 64,
@@ -183,110 +110,82 @@ Gemini AI で画像アセットを生成(オプションで透過・参照画
183
110
  }
184
111
  ```
185
112
 
186
- #### 透過スプライト
113
+ #### 応用例(WebP + Thinking + Grounding)
187
114
 
188
115
  ```json
189
116
  {
190
- "prompt": "レトロゲーム風の宇宙戦闘機スプライト、青みがかった銀色、輪郭がはっきり、背景なし、文字・数字・ロゴを含めない",
191
- "modelTier": "flash",
192
- "outputFileName": "space_fighter",
193
- "outputWidth": 64,
194
- "outputHeight": 64,
195
- "transparent": true
117
+ "prompt": "ヨーロッパの田園風景の上を飛ぶ翼のある少女、フォトリアル",
118
+ "model": "Flash3.1",
119
+ "outputFileName": "girl_wings",
120
+ "outputWidth": 632,
121
+ "outputHeight": 424,
122
+ "output_format": "webp",
123
+ "thinking_mode": "high",
124
+ "grounding_type": "both",
125
+ "include_thoughts": true
196
126
  }
197
127
  ```
198
128
 
199
- #### 透過 + フリンジ制御
129
+ #### Grounding サンプル(検索連携)
200
130
 
201
131
  ```json
202
132
  {
203
- "prompt": "アニメ調 自転車に乗った少女",
204
- "modelTier": "flash",
205
- "outputFileName": "bicycle_girl",
133
+ "prompt": "クアラルンプールの今日の天気と主要スカイラインを盛り込んだモダンな旅行ポスター",
134
+ "model": "Flash3.1",
135
+ "outputFileName": "kl_travel_poster",
206
136
  "outputWidth": 1024,
207
- "outputHeight": 576,
208
- "transparent": true,
209
- "colorTolerance": 30,
210
- "fringeMode": "crisp"
137
+ "outputHeight": 1024,
138
+ "grounding_type": "text",
139
+ "thinking_mode": "high",
140
+ "include_metadata": true,
141
+ "include_thoughts": true
211
142
  }
212
143
  ```
213
144
 
214
- #### 高解像度背景
145
+ このサンプルでは Google Search Grounding を有効化し、JSON に grounding / reasoning メタデータを返します。
215
146
 
216
- ```json
217
- {
218
- "prompt": "夕暮れのファンタジーの森、光る茸",
219
- "outputFileName": "forest_bg",
220
- "modelTier": "pro",
221
- "sourceResolution": "4K",
222
- "outputWidth": 3840,
223
- "outputHeight": 2160,
224
- "outputFormat": "jpg",
225
- "outputPath": "C:/Users/you/project/assets/backgrounds"
226
- }
227
- ```
228
-
229
- #### 参照画像を使用
147
+ #### 参照画像つき生成
230
148
 
231
149
  ```json
232
150
  {
233
- "prompt": "同じピクセルアートスタイルで、開いた状態の宝箱",
234
- "modelTier": "flash",
151
+ "prompt": "参照画像と同じピクセルアート調で、開いた状態の宝箱",
152
+ "model": "Pro3",
235
153
  "outputFileName": "chest_open",
236
154
  "outputWidth": 64,
237
155
  "outputHeight": 64,
238
156
  "transparent": true,
239
- "referenceImages": [
157
+ "reference_images": [
240
158
  {
241
- "description": "スタイル参照用の閉じた宝箱",
242
- "filePath": "C:/Users/you/project/assets/references/chest_closed.png"
159
+ "description": "Closed chest for style reference",
160
+ "data": "...base64..."
243
161
  }
244
162
  ]
245
163
  }
246
164
  ```
247
165
 
248
- ## 出力タイプ
249
-
250
- | タイプ | ファイル保存 | Base64返却 | MCP画像コンテンツ |
251
- |------|-----------|----------------|-------------------|
252
- | `file` | ✓ | ✗ | ✗ |
253
- | `base64` | ✗ | ✓ | ✓ |
254
- | `combine` | ✓ | ✓ | ✓ |
166
+ ---
255
167
 
256
- ## 透過処理
168
+ ## 透過と出力形式
257
169
 
258
- サーバーはヒストグラム分析と色相近接により背景色を推定し、RGB距離でキー抜きを行いデスピルします。候補がなければ最も近い色相のコーナーカラーを使用します。
170
+ - **PNG**: 完全アルファ対応、カラーキー + デスピル
171
+ - **WebP**: 完全アルファ対応、より高い圧縮効率
172
+ - **JPEG**: 透過非対応(不透明背景にフォールバック)
259
173
 
260
- ### モデルメモ
174
+ ---
261
175
 
262
- - 透過 PNG 出力は通常 flash で十分です。
263
- - `colorTolerance` は 30 前後が最も安定しました。高すぎると誤検出が増えます。
264
-
265
- ### 推奨背景色
176
+ ## 開発
266
177
 
267
- | 色 | 16進数 | 最適な用途 |
268
- |-------|-----|----------|
269
- | マゼンタ | `#FF00FF` | ほとんどのスプライト(デフォルト、両モデルで動作) |
270
- | 緑 | `#00FF00` | 紫/ピンクのオブジェクト |
271
- | シアン | `#00FFFF` | 赤/オレンジのオブジェクト |
272
- | 青 | `#0000FF` | 黄/緑のオブジェクト |
178
+ ```bash
179
+ # 開発モード(MCP CLI)
180
+ npm run dev
273
181
 
274
- ###
182
+ # MCP Inspector(Web UI)
183
+ npm run inspect
275
184
 
276
- ```json
277
- {
278
- "transparent": true,
279
- "transparentColor": "#00FF00",
280
- "colorTolerance": 30
281
- }
185
+ # 本番ビルド
186
+ npm run build
282
187
  ```
283
188
 
284
- ### Fringe Mode ガイド
285
-
286
- - 細い線が消えやすい場合(ドット絵、スポーク、ワイヤーメッシュ等)は `crisp`
287
- - 高解像度画像でフリンジが目立つ場合は `hd`
288
- - `auto` はサイズで自動切替(128px 以下は `crisp`、それ以外は `hd`)
289
-
290
189
  ## ライセンス
291
190
 
292
191
  MIT