Spaces:
Paused
Paused
A newer version of the Gradio SDK is available:
6.5.1
ImageGenMCP 開発ログ
プロジェクト概要
- 目的: ClaudeCode用の画像生成MCPサーバー
- 技術スタック: Gradio 5.31.0, Gemini 2.0 Flash Preview, FastAPI
- デプロイ先: Hugging Face Spaces
開発マイルストーン
2025-06-01 - プロジェクト初期化と基本実装
完了項目
プロジェクト構造の確立
app.py- メインアプリケーションrequirements.txt- 依存関係README.md- Hugging Face Spaces仕様準拠.gitignore- Git設定app.yaml- HF Spaces設定mcp_client.py- MCPクライアントサンプル
Gemini 2.0 Flash統合
- モデル名:
gemini-2.0-flash-preview-image-generation - 画像生成機能の実装
- 参考画像サポート
- エラーハンドリングとログ出力
- モデル名:
UI崩れ問題の解決
- 問題: FastAPIとGradioの統合でUI崩れが発生
- 試行錯誤:
- FastAPI root_path設定
- gr.mount_gradio_app()の使用
- パスマウント最適化
- 最終解決策: Gradioの内部FastAPIアプリに直接ルートを追加するシンプルな構成
技術的な学び
- Hugging Face SpacesでのFastAPI/Gradio統合は複雑になりがち
- Gradio 5.31.0は内部でFastAPIを使用しており、
demo.appでアクセス可能 demo.queue()とdemo.launch()のシンプルな構成が最も安定
現在のステータス
- ✅ 基本的なUI表示が正常動作
- ✅ 画像生成機能の実装完了
- ✅ MCPエンドポイントの定義完了
- ⏳ 実際の画像生成テスト待ち
- ⏳ MCPエンドポイントの動作確認待ち
APIエンドポイント仕様
MCPエンドポイント
POST /api/mcp/list_tools- ツール一覧取得POST /api/mcp/call_tool- 画像生成実行GET /api/health- ヘルスチェック
リクエスト/レスポンス形式
// リクエスト (call_tool)
{
"name": "generate_image",
"arguments": {
"prompt": "生成したい画像の説明"
}
}
// レスポンス
{
"success": true,
"message": "画像生成に成功しました!",
"image_base64": "base64エンコードされた画像データ"
}
次のステップ
- 画像生成機能の実地テスト
- MCPエンドポイントの動作確認
- ClaudeCodeからの統合テスト
- パフォーマンス最適化
- エラーハンドリングの強化
既知の問題と対策
1. Gemini API レスポンスモダリティエラー (解決済み)
- 問題:
response_modalities=["IMAGE"]のみだとエラー - 原因: モデルは
IMAGEとTEXTの両方を要求 - 解決:
response_modalities=["IMAGE", "TEXT"]に変更
2. 画像生成の不安定性 (部分的解決)
- 症状: 1回目は成功するが、2回目以降は画像データが含まれない
- 対策実施:
- レスポンスのパーツを全て検査するように改善
- テキストコンテンツも収集してエラー理由を把握
- システムインストラクションを追加して画像生成を強制
- 推測される原因:
- レート制限
- コンテンツフィルタリング
- プロンプトの内容による拒否
3. MCPエンドポイント認識問題 (調査中)
- 症状:
/api/health,/api/mcp/*エンドポイントがGradio UIを返す - 原因: Gradio 5.31.0内部FastAPIでのルート追加が正しく動作していない
- 対策検討:
- FastAPIとGradioを完全分離
- プロキシ型アーキテクチャ
- Gradio External APIの利用
環境設定メモ
- Hugging Face Spaces Secrets:
GEMINI_API_KEY- Gemini APIキー(必須)
トラブルシューティング記録
- UI崩れ問題 (解決済み)
- 症状: 画像アイコンのみ表示、UIコンポーネントが表示されない
- 原因: FastAPIとGradioのパス競合
- 解決: シンプルな統合方式に変更
最終更新: 2025-06-01