Amazon Nova Reel MCP Server

Amazon Nova Reel MCP Server

An MCP server for generating videos through Amazon Nova Reel 1.1 using AWS Bedrock, providing asynchronous video generation with comprehensive prompting guidelines and multiple transport methods.

Category
访问服务器

README

Amazon Nova Reel 1.1 MCP Server

A Model Context Protocol (MCP) server for Amazon Nova Reel 1.1 video generation using AWS Bedrock. This server provides tools for asynchronous video generation with comprehensive prompting guidelines and both stdio and SSE transport support.

<div align="center">

"Buy Me A Coffee"

</div>

Features

  • Asynchronous Video Generation: Start, monitor, and retrieve video generation jobs
  • Multiple Transport Methods: Support for stdio, Server-Sent Events (SSE), and HTTP Streaming
  • Comprehensive Prompting Guide: Built-in guidelines based on AWS documentation
  • Docker Support: Ready-to-use Docker containers for all transport methods
  • AWS Integration: Full integration with AWS Bedrock and S3

Available Tools

1. start_async_invoke

Start a new video generation job.

Parameters:

  • prompt (required): Text description for video generation
  • duration_seconds (optional): Video duration (12-120 seconds, multiples of 6, default: 12)
  • fps (optional): Frames per second (default: 24)
  • dimension (optional): Video dimensions (default: "1280x720")
  • seed (optional): Random seed for reproducible results
  • task_type (optional): Task type (default: "MULTI_SHOT_AUTOMATED")

Returns: Job details including job_id, invocation_arn, and estimated video URL.

2. list_async_invokes

List all tracked video generation jobs with their current status.

Returns: Summary of all jobs with status counts and individual job details.

3. get_async_invoke

Get detailed information about a specific video generation job.

Parameters:

  • identifier (required): Either job_id or invocation_arn

Returns: Detailed job information including video URL when completed.

4. get_prompting_guide

Get comprehensive prompting guidelines for effective video generation.

Returns: Detailed prompting best practices, examples, and templates.

Installation

Prerequisites

  • Python 3.8+
  • AWS Account with Bedrock access
  • S3 bucket for video output
  • AWS credentials with appropriate permissions

Local Installation

  1. Clone or download the server files
  2. Install dependencies:
pip install -e .

Docker Installation

Using Pre-built Images (Recommended)

Pull multi-architecture images from GitHub Container Registry:

# STDIO version
docker pull ghcr.io/mirecekd/novareel-mcp:latest-stdio

# SSE version  
docker pull ghcr.io/mirecekd/novareel-mcp:latest-sse

# HTTP Streaming version
docker pull ghcr.io/mirecekd/novareel-mcp:latest-http

Building Locally

  1. Build containers using provided scripts:
# Build all versions
./build-all.sh

# Or build individual versions
./build-stdio.sh    # STDIO version
./build-sse.sh      # SSE version
./build-http.sh     # HTTP Streaming version
  1. Or use docker-compose:
docker-compose up -d
  1. Or use the quick start script:
# Build all images
./start.sh build

# Build specific version
./start.sh build-stdio
./start.sh build-sse
./start.sh build-http

Configuration

Environment Variables

  • AWS_ACCESS_KEY_ID: Your AWS access key ID
  • AWS_SECRET_ACCESS_KEY: Your AWS secret access key
  • AWS_REGION: AWS region (default: us-east-1)
  • S3_BUCKET: S3 bucket name for video output

.env File Example

Create a .env file for docker-compose:

AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
AWS_REGION=us-east-1
S3_BUCKET=my-video-generation-bucket

Usage

MCP Client Integration (Cline/Claude Desktop)

Add the server to your MCP client configuration:

Cline Configuration

Add to your Cline MCP settings:

{
  "mcpServers": {
    "Nova Reel Video MCP": {
      "disabled": false,
      "timeout": 60,
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/mirecekd/novareel-mcp:latest-stdio",
        "--aws-access-key-id",
        "YOUR_AWS_ACCESS_KEY_ID",
        "--aws-secret-access-key",
        "YOUR_AWS_SECRET_ACCESS_KEY",
        "--s3-bucket",
        "YOUR_S3_BUCKET_NAME"
      ]
    }
  }
}

Claude Desktop Configuration

Add to your Claude Desktop claude_desktop_config.json:

{
  "mcpServers": {
    "novareel-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i", 
        "--rm",
        "ghcr.io/mirecekd/novareel-mcp:latest-stdio",
        "--aws-access-key-id",
        "YOUR_AWS_ACCESS_KEY_ID",
        "--aws-secret-access-key",
        "YOUR_AWS_SECRET_ACCESS_KEY",
        "--s3-bucket",
        "YOUR_S3_BUCKET_NAME"
      ]
    }
  }
}

Alternative: Local Python Installation

If you prefer running without Docker:

{
  "mcpServers": {
    "novareel-mcp": {
      "command": "uvx",
      "args": [
        "--from", "git+https://github.com/mirecekd/novareel-mcp.git",
        "novareel-mcp-server",
        "--aws-access-key-id", "YOUR_AWS_ACCESS_KEY_ID",
        "--aws-secret-access-key", "YOUR_AWS_SECRET_ACCESS_KEY",
        "--s3-bucket", "YOUR_S3_BUCKET_NAME"
      ]
    }
  }
}

Important: Replace the placeholder values with your actual AWS credentials and S3 bucket name.

Running with uvx (Recommended)

# First build the package
./build.sh

# Then run from wheel file
uvx --from ./dist/novareel_mcp-1.0.0-py3-none-any.whl novareel-mcp-server --aws-access-key-id YOUR_KEY --aws-secret-access-key YOUR_SECRET --s3-bucket YOUR_BUCKET

# Or from current directory during development (without build)
uvx --from . novareel-mcp-server --aws-access-key-id YOUR_KEY --aws-secret-access-key YOUR_SECRET --s3-bucket YOUR_BUCKET

# Or using start script
./start.sh build-package  # Build wheel

Stdio Version (Direct MCP Client)

# Local execution
python main.py --aws-access-key-id YOUR_KEY --aws-secret-access-key YOUR_SECRET --s3-bucket YOUR_BUCKET

# Docker execution
docker run --rm -i mirecekd/novareel-mcp-server:stdio --aws-access-key-id YOUR_KEY --aws-secret-access-key YOUR_SECRET --s3-bucket YOUR_BUCKET

SSE Version (Web Interface)

# Local execution
python -m novareel_mcp_server.server_sse --aws-access-key-id YOUR_KEY --aws-secret-access-key YOUR_SECRET --s3-bucket YOUR_BUCKET --host 0.0.0.0 --port 8000

# Docker execution
docker run -p 8000:8000 -e AWS_ACCESS_KEY_ID=YOUR_KEY -e AWS_SECRET_ACCESS_KEY=YOUR_SECRET -e S3_BUCKET=YOUR_BUCKET mirecekd/novareel-mcp-server:sse

Then access http://localhost:8000/sse/ for the SSE endpoint.

HTTP Streaming Version (Bidirectional Transport)

# Local execution
python -m novareel_mcp_server.server_http --aws-access-key-id YOUR_KEY --aws-secret-access-key YOUR_SECRET --s3-bucket YOUR_BUCKET --host 0.0.0.0 --port 8001

# Docker execution
docker run -p 8001:8001 -e AWS_ACCESS_KEY_ID=YOUR_KEY -e AWS_SECRET_ACCESS_KEY=YOUR_SECRET -e S3_BUCKET=YOUR_BUCKET ghcr.io/mirecekd/novareel-mcp:latest-http

Then access http://localhost:8001 for the HTTP streaming transport.

Package Build

To create a distribution package:

# Install build tools
pip install build

# Create package
python3 -m build

# Output files will be in dist/

Example Usage

Basic Video Generation

# Start a video generation job
result = start_async_invoke(
    prompt="A majestic eagle soars over a mountain valley, camera tracking its flight as it circles above a pristine lake",
    duration_seconds=24,
    fps=24,
    dimension="1920x1080"
)

job_id = result["job_id"]
print(f"Started job: {job_id}")

# Check job status
status = get_async_invoke(job_id)
print(f"Status: {status['status']}")

# When completed, get video URL
if status["status"] == "Completed":
    print(f"Video URL: {status['video_url']}")

List All Jobs

# Get overview of all jobs
jobs = list_async_invokes()
print(f"Total jobs: {jobs['total_invocations']}")
print(f"Completed: {jobs['summary']['completed']}")
print(f"In progress: {jobs['summary']['in_progress']}")

Prompting Guidelines

The server includes comprehensive prompting guidelines based on AWS documentation. Access them using:

guide = get_prompting_guide()

Key Prompting Tips

  1. Be Specific: Use detailed, descriptive language

    • Good: "A red cardinal perched on a snow-covered pine branch, morning sunlight filtering through the trees"
    • Bad: "A bird on a tree"
  2. Use Camera Terminology: Control shot composition

    • "Close-up shot of hands carving wood"
    • "Wide shot establishing the mountain landscape"
    • "Camera pans left across the valley"
  3. Include Lighting Details: Specify atmosphere

    • "Golden hour lighting casting long shadows"
    • "Soft blue hour twilight"
    • "Dramatic storm clouds overhead"
  4. Structure for Duration: Match complexity to video length

    • 12-24 seconds: Single action or moment
    • 30-60 seconds: 2-3 distinct actions
    • 60-120 seconds: Full narrative with multiple scenes

Example Prompts by Category

Nature (Short - 12s):

Close-up of morning dew drops on a spider web, with soft sunrise lighting creating rainbow reflections

Urban (Medium - 30s):

A street musician plays violin in a subway station, commuters pause to listen, coins drop into his case, camera slowly pulls back to reveal the bustling underground scene

Portrait (Long - 60s):

Portrait of a chef preparing a signature dish: selecting fresh ingredients at market, returning to kitchen, methodically preparing each component, plating with artistic precision, and presenting the finished masterpiece

AWS Permissions

Your AWS credentials need the following permissions:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:StartAsyncInvoke",
                "bedrock:GetAsyncInvoke",
                "bedrock:ListFoundationModels"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::your-bucket-name",
                "arn:aws:s3:::your-bucket-name/*"
            ]
        }
    ]
}

Video Output

Generated videos are stored in your S3 bucket with the following structure:

s3://your-bucket/
├── job-id-1/
│   └── output.mp4
├── job-id-2/
│   └── output.mp4
└── ...

Videos are accessible via HTTPS URLs:

https://your-bucket.s3.region.amazonaws.com/job-id/output.mp4

Supported Video Specifications

  • Duration: 12-120 seconds (must be multiples of 6)
  • Frame Rate: 24 fps (recommended)
  • Dimensions:
    • 1280x720 (HD)
  • Format: MP4
  • Model: amazon.nova-reel-v1:1

Troubleshooting

Common Issues

  1. AWS Credentials Error

    • Verify your AWS credentials are correct
    • Ensure your account has Bedrock access enabled
    • Check IAM permissions
  2. S3 Bucket Access

    • Verify bucket exists and is accessible
    • Check bucket permissions
    • Ensure bucket is in the same region as Bedrock
  3. Duration Validation

    • Duration must be 12-120 seconds
    • Must be a multiple of 6
    • Valid values: 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120
  4. Job Not Found

    • Use list_async_invokes to see all tracked jobs
    • Jobs are stored in memory and lost on server restart
    • For production, implement persistent storage

Debug Mode

Enable debug logging by setting environment variable:

export PYTHONUNBUFFERED=1

Development

Project Structure

novareel-mcp-server/
├── main.py              # Main MCP server (stdio)
├── main_sse.py          # SSE version of MCP server
├── main_http.py         # HTTP Streaming version of MCP server
├── prompting_guide.py   # AWS prompting guidelines
├── pyproject.toml       # Python dependencies
├── Dockerfile.stdio     # Docker for stdio version
├── Dockerfile.sse       # Docker for SSE version
├── Dockerfile.http      # Docker for HTTP streaming version
├── docker-compose.yml   # Container orchestration
└── README.md           # This documentation

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test with all transport versions (stdio, SSE, HTTP streaming)
  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For issues and questions:

  1. Check the troubleshooting section
  2. Review AWS Bedrock documentation
  3. Open an issue in the repository

Related Links

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选