Skip to main content

MCP Integration with Amazon Nova Canvas

MCP Integration with Amazon Nova Canvas

This repository outlines a basic implementation of the Model Context Protocol integration with Amazon Nova Canvas for image generation

Overview

There are two parts to this implementation:

  1. The user_interfaces/image_generator_st.py file, which handles the Streamlit/User Interface for the image generator
  2. The client_server.py file, which handles the MCP client and server implementation

The exact MCP server code leveraged can be found in the src/nova-canvas-mcp-server folder.

Architecture

The implementation follows this flow:

  1. A Streamlit UI provides the user interface for image generation
  2. The UI communicates with a FastAPI server
  3. The FastAPI server uses the MCP client to communicate with the Nova Canvas MCP server
  4. The Nova Canvas MCP server interacts with Amazon Bedrock to generate images
  5. The generated images are returned to the UI for display

Setup

Prerequisites

  • The uv package manager
  • AWS Account with Bedrock access and proper IAM permissions - Getting Started with Amazon Bedrock
  • Access to the Amazon Nova Canvas and Amazon Nova Micro model (optional for prompt improvement) in Bedrock

Installation

  1. Clone the repository.
git clone https://github.com/awslabs/mcp.git
  1. Navigate to the sample directory and copy the .env.example file to .env and add your AWS credentials.
cd mcp/samples/mcp-integration-with-nova-canvas
cp .env.example .env
  1. Open two different terminals and install the dependencies in each.
uv sync

then activate the virtual environment

source .venv/bin/activate
  1. In one of the terminals, run the FastAPI server
uvicorn clients.client_server:app --reload
  1. In the other terminal, run the Streamlit app
streamlit run user_interfaces/image_generator_st.py
  1. The image generator should now be running on http://localhost:8501/

Usage

  1. Enter a text prompt describing the image you want to generate
  2. Optionally, add a negative prompt to specify what you don't want in the image
  3. Customize image parameters (dimensions, quality, etc.)
  4. For color-guided generation, select colors from the color picker
  5. Click "Generate Image" to create your image
  6. View the generated image and save it if desired

Troubleshooting

Logs are available in the terminal where you ran the FastAPI server, outlining various steps and actions taken by the server.

If you see an error about boto3 or streamlit not being found, it is likely because you did not activate the virtual environment:

uv sync
source .venv/bin/activate