🚀 Image Gen MCP Server
AIチャットボット向けの汎用的な画像生成を可能にする
従来のAIチャットボットのインターフェースは、基盤となる言語モデルがどれほど強力であっても、テキストのみの対話に限定されています。Image Gen MCP Serverは、標準化されたモデルコンテキストプロトコル(MCP)を通じて、任意のLLMベースのチャットボットクライアントが専門的な品質の画像を生成できるようにすることで、このギャップを埋めます。
Claude Desktop、カスタムChatGPTインターフェース、Llamaベースのアプリケーション、またはMCPをサポートする他の任意のLLMクライアントを使用している場合でも、このサーバーは、OpenAIのgpt - image - 1、dall - e - 3、dall - e - 2、およびGoogleのImagenシリーズ(imagen - 4、imagen - 4 - ultra、imagen - 3)を含む複数のAI画像生成モデルへのアクセスを民主化し、テキストのみの会話を豊かな視覚体験に変えます。
📦 パッケージマネージャー: このプロジェクトでは、高速で信頼性の高いPythonパッケージ管理のためにUVを使用しています。UVは、従来のpip/venvワークフローと比較して、より良い依存関係解決、より高速なインストール、および適切な環境分離を提供します。
🚀 クイックスタート
前提条件
- Python 3.10以上
- UVパッケージマネージャー
- OpenAI APIキー(OpenAIモデル用)
- Google Gemini APIキー(Geminiモデル用、オプション)
インストール
-
クローンとセットアップ:
git clone <repository-url>
cd image-gen-mcp
uv sync
注意: このプロジェクトでは、高速で信頼性の高いPythonパッケージ管理のためにUVを使用しています。UVは、pipと比較して、より良い依存関係解決とより高速なインストールを提供します。
-
環境の設定:
cp .env.example .env
-
セットアップのテスト:
uv run python scripts/dev.py setup
uv run python scripts/dev.py test
サーバーの起動
開発モード
./run.sh dev
./run.sh dev --tools
./run.sh stdio
./run.sh prod
手動実行
uv run python -m gpt_image_mcp.server
uv run python -m gpt_image_mcp.server --transport streamable-http --port 3001
uv run python -m gpt_image_mcp.server --transport sse --port 8080
uv run python -m gpt_image_mcp.server --config /path/to/.env --log-level DEBUG
uv run python -m gpt_image_mcp.server --transport streamable-http --cors
コマンドラインオプション
uv run python -m gpt_image_mcp.server --help
Image Gen MCP Server - OpenAIのgpt-image-1モデルを使用して画像を生成および編集します
オプション:
--config PATH 設定ファイルのパス(.env形式)
--log-level LEVEL ログレベルを設定します(DEBUG、INFO、WARNING、ERROR、CRITICAL)
--transport TYPE トランスポート方法(stdio、sse、streamable-http)
--port PORT HTTPトランスポート用のポート(デフォルト: 3001)
--host HOST HTTPトランスポート用のホストアドレス(デフォルト: 127.0.0.1)
--cors ウェブデプロイ用にCORSを有効にします
--version バージョン情報を表示します
--help ヘルプメッセージを表示します
例:
uv run python -m gpt_image_mcp.server
uv run python -m gpt_image_mcp.server --transport streamable-http --port 3001
uv run python -m gpt_image_mcp.server --log-level DEBUG --cors
MCPクライアントの統合
このサーバーは、任意のMCP互換チャットボットクライアントと動作します。以下は設定例です。
Claude Desktop (Anthropic)
{
"mcpServers": {
"image-gen-mcp": {
"command": "uv",
"args": [
"--directory",
"/path/to/image-gen-mcp",
"run",
"image-gen-mcp"
],
"env": {
"OPENAI_API_KEY": "your-api-key-here"
}
}
}
}
Continue.dev (VS Code拡張機能)
{
"mcpServers": {
"gpt-image": {
"command": "uv",
"args": ["--directory", "/path/to/image-gen-mcp", "run", "image-gen-mcp"],
"env": {
"OPENAI_API_KEY": "your-api-key-here"
}
}
}
}
カスタムMCPクライアント
他のMCP互換アプリケーションでは、標準のMCP STDIOトランスポートを使用します。
uv run python -m gpt_image_mcp.server
汎用互換性: このサーバーは標準のMCPプロトコルに従っており、AIエコシステム全体の現在および将来のMCP対応クライアントとの互換性を保証します。
✨ 主な機能
🎨 複数プロバイダーに対応した画像生成
- 複数のAIモデル: OpenAI(gpt-image-1、dall-e-3、dall-e-2)およびGoogle Gemini(imagen-4、imagen-4-ultra、imagen-3)をサポート
- テキストから画像への変換: テキスト記述から高品質の画像を生成
- 画像編集: テキスト指示で既存の画像を編集(OpenAIモデル)
- 複数のフォーマット: PNG、JPEG、WebP出力フォーマットをサポート
- 品質コントロール: 自動、高、中、低の品質設定
- 背景コントロール: 自動、透明、不透明の背景オプション
- 動的モデル検出: 実行時に利用可能なモデルと機能を照会
🔗 MCP統合
- FastMCPフレームワーク: 最新のMCP Python SDKを使用して構築
- 複数のトランスポート: STDIO、HTTP、SSEトランスポートをサポート
- 構造化出力: 適切なスキーマを持つ検証済みのツール応答
- リソースアクセス: 画像の取得と管理のためのMCPリソース
- プロンプトテンプレート: 一般的なユースケース用の10以上の組み込みテンプレート
💾 ストレージとキャッシュ
- ローカルストレージ: メタデータ付きの整理されたディレクトリ構造
- URLベースのアクセス: 画像用のトランスポート対応URL生成
- 二重アクセス: 即時のbase64データ + 永続的なリソースURI
- スマートキャッシュ: TTLとRedisサポート付きのメモリベースのキャッシュ
- 自動クリーンアップ: 設定可能なファイル保持ポリシー
🚀 本番デプロイ
- Dockerサポート: 本番環境に対応したDockerコンテナ
- 複数のトランスポート: Claude Desktop用のSTDIO、ウェブデプロイ用のHTTP
- リバースプロキシ: レート制限付きのNginx設定
- モニタリング: GrafanaとPrometheusの統合
- SSL/TLS: Certbotによる自動証明書管理
🛠️ 開発機能
- 型安全性: Pydanticモデルによる完全な型ヒント
- エラーハンドリング: 包括的なエラーハンドリングとロギング
- 設定管理: 環境ベースの設定管理
- テスト: 非同期サポート付きのPytestベースのテストスイート
- 開発ツール: ホットリロード、Redis Commander、デバッグログ
💻 使用例
基本的な使用法
result = await session.call_tool(
"generate_image",
arguments={
"prompt": "A beautiful sunset over mountains, digital art style",
"quality": "high",
"size": "1536x1024",
"style": "vivid"
}
)
高度な使用法
プロンプトテンプレートの使用
prompt_result = await session.get_prompt(
"social_media_prompt",
arguments={
"platform": "instagram",
"content_type": "product announcement",
"brand_style": "modern minimalist"
}
)
生成された画像へのアクセス
image_data = await session.read_resource("generated-images://img_20250630143022_abc123")
history = await session.read_resource("image-history://recent?limit=5")
stats = await session.read_resource("storage-stats://overview")
📚 ドキュメント
利用可能なツール
list_available_models
利用可能なすべての画像生成モデルとその機能をリストします。
戻り値: モデル情報、機能、およびプロバイダー詳細を含む辞書。
generate_image
サポートされている任意のモデルを使用して、テキスト記述から画像を生成します。
パラメーター:
prompt
(必須): 目的の画像のテキスト記述
model
(オプション): 使用するモデル(例: "gpt-image-1"、"dall-e-3"、"imagen-4")
quality
: "auto" | "high" | "medium" | "low" (デフォルト: "auto")
size
: "1024x1024" | "1536x1024" | "1024x1536" (デフォルト: "1536x1024")
style
: "vivid" | "natural" (デフォルト: "vivid")
output_format
: "png" | "jpeg" | "webp" (デフォルト: "png")
background
: "auto" | "transparent" | "opaque" (デフォルト: "auto")
注意: パラメーターの可用性は選択したモデルに依存します。機能を確認するには、list_available_models
を使用してください。
edit_image
テキスト指示で既存の画像を編集します。
パラメーター:
image_data
(必須): Base64エンコードされた画像またはデータURL
prompt
(必須): 編集指示
mask_data
: ターゲット編集用のオプションマスク
size
, quality
, output_format
: generate_image
と同じ
利用可能なリソース
generated-images://{image_id}
- 特定の生成された画像にアクセス
image-history://recent
- 最近の生成履歴を閲覧
storage-stats://overview
- ストレージ使用状況と統計情報
model-info://gpt-image-1
- モデルの機能と価格
プロンプトテンプレート
一般的なユースケース用の組み込みテンプレートが用意されています。
- クリエイティブ画像: アート的な画像生成
- 商品写真: 商業用の商品画像
- ソーシャルメディアグラフィックス: プラットフォーム最適化された投稿
- ブログヘッダー: 記事のヘッダー画像
- OG画像: ソーシャルメディアのプレビュー画像
- ヒーローバナー: ウェブサイトのヒーローセクション
- メールヘッダー: ニュースレターのヘッダー
- ビデオサムネイル: YouTube/ビデオのサムネイル
- インフォグラフィック: データ可視化画像
- アートスタイル: 特定のアート運動のスタイル
設定
環境変数または.env
ファイルを介して設定できます。
PROVIDERS__OPENAI__API_KEY=sk-your-openai-api-key-here
PROVIDERS__OPENAI__BASE_URL=https://api.openai.com/v1
PROVIDERS__OPENAI__ORGANIZATION=org-your-org-id
PROVIDERS__OPENAI__TIMEOUT=300.0
PROVIDERS__OPENAI__MAX_RETRIES=3
PROVIDERS__OPENAI__ENABLED=true
PROVIDERS__GEMINI__API_KEY=your-gemini-api-key-here
PROVIDERS__GEMINI__BASE_URL=https://generativelanguage.googleapis.com/v1beta/
PROVIDERS__GEMINI__TIMEOUT=300.0
PROVIDERS__GEMINI__MAX_RETRIES=3
PROVIDERS__GEMINI__ENABLED=false
PROVIDERS__GEMINI__DEFAULT_MODEL=imagen-4
IMAGES__DEFAULT_MODEL=gpt-image-1
IMAGES__DEFAULT_QUALITY=auto
IMAGES__DEFAULT_SIZE=1536x1024
IMAGES__DEFAULT_STYLE=vivid
IMAGES__DEFAULT_MODERATION=auto
IMAGES__DEFAULT_OUTPUT_FORMAT=png
IMAGES__BASE_HOST=
SERVER__NAME=Image Gen MCP Server
SERVER__VERSION=0.1.0
SERVER__PORT=3001
SERVER__HOST=127.0.0.1
SERVER__LOG_LEVEL=INFO
SERVER__RATE_LIMIT_RPM=50
STORAGE__BASE_PATH=./storage
STORAGE__RETENTION_DAYS=30
STORAGE__MAX_SIZE_GB=10.0
STORAGE__CLEANUP_INTERVAL_HOURS=24
CACHE__ENABLED=true
CACHE__TTL_HOURS=24
CACHE__BACKEND=memory
CACHE__MAX_SIZE_MB=500
🔧 技術詳細
アーキテクチャ
このサーバーは、モジュール化された本番対応のアーキテクチャに従っています。
コアコンポーネント:
- サーバーレイヤー (
server.py
): 複数のトランスポートをサポートするFastMCPベースのMCPサーバー
- 設定 (
config/
): 検証付きの環境ベースの設定管理
- ツールレイヤー (
tools/
): 画像生成と編集機能
- リソースレイヤー (
resources/
): データアクセスとモデル登録用のMCPリソース
- ストレージマネージャー (
storage/
): クリーンアップ機能付きの整理されたローカル画像ストレージ
- キャッシュマネージャー (
utils/cache.py
): メモリとRedisベースのキャッシュシステム
複数プロバイダーアーキテクチャ:
- プロバイダーレジストリ (
providers/registry.py
): プロバイダーとモデルの集中管理
- プロバイダーベース (
providers/base.py
): すべてのプロバイダーの抽象基底クラス
- OpenAIプロバイダー (
providers/openai.py
): リトライロジック付きのOpenAI API統合
- Geminiプロバイダー (
providers/gemini.py
): Google Gemini API統合
- 型システム (
types/
): 型安全性のためのPydanticモデル
- 検証 (
utils/validators.py
): 入力検証とサニタイズ
インフラストラクチャ:
- プロンプトテンプレート (
prompts/
): 最適化されたプロンプトのテンプレートシステム
- 動的モデル検出: 実行時のモデル機能検出
- パラメーター変換: プロバイダー間の自動パラメーターマッピング
デプロイメント:
- Dockerサポート: 開発と本番用のコンテナ
- 複数のトランスポート: STDIO、HTTP、SSEトランスポートレイヤー
- モニタリング: PrometheusメトリクスとGrafanaダッシュボード
- リバースプロキシ: SSLとレート制限付きのNginx設定
コスト見積もり
このサーバーは、操作のコスト見積もりを提供します。
- テキスト入力: 約100万トークンあたり$5
- 画像出力: 約100万トークンあたり$40(画像あたり約1750トークン)
- 典型的なコスト: 画像生成1回あたり約$0.07
エラーハンドリング
包括的なエラーハンドリングには以下が含まれます。
- APIレート制限とリトライ
- 無効なパラメーターの検証
- ストレージエラーの回復
- キャッシュ障害時のフォールバック
- 詳細なエラーログ
セキュリティ
セキュリティ機能には以下が含まれます。
- OpenAI APIキーの保護
- 入力検証とサニタイズ
- ファイルシステムアクセス制御
- レート制限保護
- ログにおける資格情報の露出防止
📄 ライセンス
MITライセンス - 詳細についてはLICENSEファイルを参照してください。
貢献方法
- リポジトリをフォークします。
- 機能ブランチを作成します。
- 変更を加えます。
- 新機能に対するテストを追加します。
- テストスイートを実行します。
- プルリクエストを送信します。
サポート
問題や質問については、以下の手順を試してください。
- トラブルシューティングガイドを確認します。
- 一般的な問題を確認します。
- GitHubで問題を報告します。
Model Context ProtocolとOpenAIのgpt-image-1を使って❤️ で作られました
AI統合の未来
モデルコンテキストプロトコルは、標準化されたAIツール統合へのパラダイムシフトを表しています。より多くのLLMクライアントがMCPサポートを採用するにつれ、このようなサーバーは、エコシステム全体にわたって汎用的な機能を提供することでますます価値が高まります。
現在のMCP採用状況:
- ✅ Claude Desktop (Anthropic) - 完全なMCPサポート
- ✅ Continue.dev - MCP統合付きのVS Code拡張機能
- ✅ Zed Editor - コーディングワークフロー用の組み込みMCPサポート
- 🚀 成長するエコシステム - 新しいクライアントが定期的にMCPを採用しています。
ビジョン: AI機能がモジュール化され、相互運用可能で、ユーザーが制御できる、特定のプラットフォームにロックインされない未来。
🌟 汎用的なAIエコシステムの構築
モデルコンテキストプロトコルの力を通じて、すべてのプラットフォームで高度なAI機能を民主化します。1つのサーバーで無限の可能性を実現します。