geminiの画像生成mcpを作ってみる
geminiの画像生成mcpを作ってみた話です
作る理由?
- roo_codeで何かしてる時で、ちょっとした仮画像とかを用意するのがめんどくさいときに使いたい
- ちょっと勉強がてらに作ってみようと思った
- 生成画像を圧縮したい。
- geminiで生成する画像はそのままだと1Mぐらいの場合が多い
- 複数画像入力させたい
- 作った複数画像から派生したものを作れるようにしてみたい
もうあるのでは?
- 色々ある
https://github.com/jezweb/gemini-image-generator-mcp
- TS製
- imagen3/imagen4使用(多分無課金API KEY非対応)
https://github.com/aliargun/mcp-server-gemini
- 画像生成はできなさそう?
- @google/generative-ai(非推奨)を使用している
https://github.com/rocksun/gemini-image-mcp-server
- python製
- 画像入力可(一つまで)
gemini-2.0-flash-exp-image-generation
を使用(無課金API KEY対応)
https://github.com/qhdrl12/mcp-server-gemini-image-generator
- python製
- 画像入力可(一つまで)
gemini-2.0-flash-exp-image-generation
を使用(無課金API KEY対応)
https://github.com/sanxfxteam/gemini-mcp-server
- JS製
gemini-2.0-flash-exp-image-generation
を使用(無課金API KEY対応)- READMEの説明と実装があってなさそう
- 画像の生成は行うが、複数画像入力や生成された画像を圧縮するようなものはなさそうだった。
作ったもの
主な特徴
画像圧縮でサイズ縮小
- 生成した画像はjpgに変換して圧縮すれば、1M -> 100K以下にすることが可能
例
- パラメーター
{
"prompt": "A cute cat in realistic style.",
"force_jpeg_conversion": true
}
- 結果
Image successfully converted to JPEG and compressed at output/images/generated_image.jpg.
Original size: 1085.16KB, Final size: 34.21KB
Loading...
複数画像入力
- 複数画像入力で複数の画像を使った新たな画像生成が可能
例
- パラメーター
- 2つの女の子の画像を入力として、2人が渋谷で談笑しながらショッピングしている画像を作らせたい
{
"prompt": "The two girls from the input images are chatting and shopping in Shibuya.",
"input_image_paths": [
"output/images/generated_image (2).jpg",
"output/images/generated_image (3).jpg"
],
"force_jpeg_conversion": true
}
Loading...
Loading...
- 結果
- 何かが若干違うのは気にしない。
Image successfully converted to JPEG and compressed at output/images/generated_image (4).jpg.
Original size: 1491.59KB, Final size: 57.01KB
Loading...
Tips
- @google/genaiと@modelcontextprotocol/sdkを使用
https://www.npmjs.com/package/@google/genai
https://github.com/modelcontextprotocol/typescript-sdk
- @google/generative-aiは非推奨
https://www.npmjs.com/package/@google/generative-ai
- vscodeのgemini code assistはgenerative-aiを使いたがることがある(持ってる情報が古い?)
- 画像生成API(ai.models.generateImages)は有料枠でないと使えない
- これを使って画像生成リクエストすると、「Imagen APIは現在、課金ユーザーのみがアクセスできます。」というメッセージが表示される
- ai.models.generateContentを使った場合は無課金API KEYでも画像生成できる。
- モデルは
gemini-2.0-flash-exp-image-generation
を使って、responseModalitiesにModality.IMAGEを指定する感じ
- モデルは
終わりに
- ほとんどAI任せで作ったが、なんとなくMCPの仕組みを知ることができた。
- 今後はストリーミング処理にして、画像を複数出力できるように対応するかも。
- 生成に時間がかかりそうなのでやっぱりしないかも。
公開日: 2025/6/24