Amazon Nova Canvas との MCP 統合
このリポジトリは、画像生成のための Model Context Protocol と Amazon Nova Canvas の統合に関する基本的な実装を概説します。
概要
この実装には 2 つのパートがあります。
user_interfaces/image_generator_st.pyファイル。画像生成のための Streamlit/ユーザーインターフェースを処理します。client_server.pyファイル。MCP クライアントとサーバーの実装を処理します。
実際に利用される MCP サーバーのコードは、src/nova-canvas-mcp-server フォルダーにあります。
アーキテクチャ
この実装は次のフローに従います。
- Streamlit UI が画像生成用のユーザーインターフェースを提供します。
- UI は FastAPI サーバーと通信します。
- FastAPI サーバーは MCP クライアントを使用して Nova Canvas MCP サーバーと通信します。
- Nova Canvas MCP サーバーは Amazon Bedrock とやり取りして画像を生成します。
- 生成された画像は表示用に UI へ返されます。
セットアップ
前提条件
- uv パッケージマネージャー
- Bedrock アクセスと適切な IAM 権限を持つ AWS アカウント - Amazon Bedrock の使用開始
- Bedrock における Amazon Nova Canvas および Amazon Nova Micro モデル(プロンプト改善用、オプション)へのアクセス
インストール
- リポジトリをクローンします。
git clone https://github.com/awslabs/mcp.git
- サンプルディレクトリに移動し、.env.example ファイルを .env にコピーして AWS 認証情報を追加します。
cd mcp/samples/mcp-integration-with-nova-canvas
cp .env.example .env
- 2 つの異なるターミナルを開き、それぞれで依存関係をインストールします。
uv sync
続いて仮想環境を有効化します。
source .venv/bin/activate
- 一方のターミナルで FastAPI サーバーを実行します。
uvicorn clients.client_server:app --reload
- もう一方のターミナルで Streamlit アプリを実行します。
streamlit run user_interfaces/image_generator_st.py
- これで画像生成ツールが http://localhost:8501/ で実行されているはずです。
使い方
- 生成したい画像を説明するテキストプロンプトを入力します。
- オプションで、画像に含めたくないものを指定するネガティブプロンプトを追加します。
- 画像パラメータ(寸法、品質など)をカスタマイズします。
- 色を指定した生成を行う場合は、カラーピッカーから色を選択します。
- "Generate Image" をクリックして画像を作成します。
- 生成された画像を表示し、必要に応じて保存します。
トラブルシューティング
ログは FastAPI サーバーを実行したターミナルで確認でき、サーバーが実行したさまざまなステップやアクションが記載されます。
boto3 または streamlit が見つからないというエラーが表示される場合、仮想環境を有効化していないことが原因である可能性が高いです。
uv sync
source .venv/bin/activate