ImageGenMCP / DEVELOPMENT_LOG.md
tomo2chin2's picture
Upload 9 files
672d01c verified

A newer version of the Gradio SDK is available: 6.5.1

Upgrade

ImageGenMCP 開発ログ

プロジェクト概要

  • 目的: ClaudeCode用の画像生成MCPサーバー
  • 技術スタック: Gradio 5.31.0, Gemini 2.0 Flash Preview, FastAPI
  • デプロイ先: Hugging Face Spaces

開発マイルストーン

2025-06-01 - プロジェクト初期化と基本実装

完了項目

  1. プロジェクト構造の確立

    • app.py - メインアプリケーション
    • requirements.txt - 依存関係
    • README.md - Hugging Face Spaces仕様準拠
    • .gitignore - Git設定
    • app.yaml - HF Spaces設定
    • mcp_client.py - MCPクライアントサンプル
  2. Gemini 2.0 Flash統合

    • モデル名: gemini-2.0-flash-preview-image-generation
    • 画像生成機能の実装
    • 参考画像サポート
    • エラーハンドリングとログ出力
  3. 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エンコードされた画像データ"
}

次のステップ

  1. 画像生成機能の実地テスト
  2. MCPエンドポイントの動作確認
  3. ClaudeCodeからの統合テスト
  4. パフォーマンス最適化
  5. エラーハンドリングの強化

既知の問題と対策

1. Gemini API レスポンスモダリティエラー (解決済み)

  • 問題: response_modalities=["IMAGE"]のみだとエラー
  • 原因: モデルはIMAGETEXTの両方を要求
  • 解決: 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キー(必須)

トラブルシューティング記録

  1. UI崩れ問題 (解決済み)
    • 症状: 画像アイコンのみ表示、UIコンポーネントが表示されない
    • 原因: FastAPIとGradioのパス競合
    • 解決: シンプルな統合方式に変更

最終更新: 2025-06-01