Skip to main content
Glama
mirecekd

Amazon Nova Reel MCP Server

by mirecekd

Amazon Nova Reel 1.1 MCP-Server

Ein Model Context Protocol (MCP)-Server für die Videogenerierung mit Amazon Nova Reel 1.1 über AWS Bedrock. Dieser Server bietet Tools für die asynchrone Videogenerierung mit umfassenden Prompting-Richtlinien sowie Unterstützung für stdio- und SSE-Transporte.

"Buy Me A Coffee" "PayPal.me"

Funktionen

  • Asynchrone Videogenerierung: Starten, Überwachen und Abrufen von Videogenerierungs-Jobs

  • Mehrere Transportmethoden: Unterstützung für stdio, Server-Sent Events (SSE) und HTTP-Streaming

  • Umfassender Prompting-Leitfaden: Integrierte Richtlinien basierend auf der AWS-Dokumentation

  • Docker-Unterstützung: Sofort einsatzbereite Docker-Container für alle Transportmethoden

  • AWS-Integration: Vollständige Integration mit AWS Bedrock und S3

Related MCP server: bedrock-image-mcp-server

Verfügbare Tools

1. start_async_invoke

Startet einen neuen Videogenerierungs-Job.

Parameter:

  • prompt (erforderlich): Textbeschreibung für die Videogenerierung

  • duration_seconds (optional): Videodauer (12-120 Sekunden, Vielfache von 6, Standard: 12)

  • fps (optional): Bilder pro Sekunde (Standard: 24)

  • dimension (optional): Videodimensionen (Standard: "1280x720")

  • seed (optional): Zufälliger Seed für reproduzierbare Ergebnisse

  • task_type (optional): Aufgabentyp (Standard: "MULTI_SHOT_AUTOMATED")

Rückgabe: Job-Details einschließlich job_id, invocation_arn und geschätzter Video-URL.

2. list_async_invokes

Listet alle verfolgten Videogenerierungs-Jobs mit ihrem aktuellen Status auf.

Rückgabe: Zusammenfassung aller Jobs mit Statuszählungen und individuellen Job-Details.

3. get_async_invoke

Ruft detaillierte Informationen zu einem bestimmten Videogenerierungs-Job ab.

Parameter:

  • identifier (erforderlich): Entweder job_id oder invocation_arn

Rückgabe: Detaillierte Job-Informationen einschließlich der Video-URL nach Abschluss.

4. get_prompting_guide

Ruft umfassende Prompting-Richtlinien für eine effektive Videogenerierung ab.

Rückgabe: Detaillierte Best Practices für Prompts, Beispiele und Vorlagen.

Installation

Voraussetzungen

  • Python 3.8+

  • AWS-Konto mit Bedrock-Zugriff

  • S3-Bucket für die Videoausgabe

  • AWS-Anmeldeinformationen mit entsprechenden Berechtigungen

Lokale Installation

  1. Server-Dateien klonen oder herunterladen

  2. Abhängigkeiten installieren:

pip install -e .

Docker-Installation

Verwendung vorgefertigter Images (Empfohlen)

Multi-Architektur-Images aus der GitHub Container Registry abrufen:

# 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

Lokal bauen

  1. Container mit den bereitgestellten Skripten bauen:

# 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. Oder docker-compose verwenden:

docker-compose up -d
  1. Oder das Quick-Start-Skript verwenden:

# Build all images
./start.sh build

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

Konfiguration

Umgebungsvariablen

  • AWS_ACCESS_KEY_ID: Ihre AWS Access Key ID

  • AWS_SECRET_ACCESS_KEY: Ihr AWS Secret Access Key

  • AWS_REGION: AWS-Region (Standard: us-east-1)

  • S3_BUCKET: S3-Bucket-Name für die Videoausgabe

.env-Datei-Beispiel

Erstellen Sie eine .env-Datei für 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

Verwendung

MCP-Client-Integration (Cline/Claude Desktop)

Fügen Sie den Server zu Ihrer MCP-Client-Konfiguration hinzu:

Cline-Konfiguration

Zu Ihren Cline MCP-Einstellungen hinzufügen:

{
  "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-Konfiguration

Zu Ihrer claude_desktop_config.json in Claude Desktop hinzufügen:

{
  "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: Lokale Python-Installation

Wenn Sie den Server lieber ohne Docker ausführen möchten:

{
  "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"
      ]
    }
  }
}

Wichtig: Ersetzen Sie die Platzhalterwerte durch Ihre tatsächlichen AWS-Anmeldeinformationen und den S3-Bucket-Namen.

Ausführung mit uvx (Empfohlen)

# 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 (Direkter 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-Schnittstelle)

# 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

Greifen Sie dann auf http://localhost:8000/sse/ für den SSE-Endpunkt zu.

HTTP-Streaming-Version (Bidirektionaler 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

Greifen Sie dann auf http://localhost:8001 für den HTTP-Streaming-Transport zu.

Paket-Build

Um ein Distributionspaket zu erstellen:

# Install build tools
pip install build

# Create package
python3 -m build

# Output files will be in dist/

Anwendungsbeispiele

Einfache Videogenerierung

# 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']}")

Alle Jobs auflisten

# 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-Richtlinien

Der Server enthält umfassende Prompting-Richtlinien basierend auf der AWS-Dokumentation. Rufen Sie diese ab mit:

guide = get_prompting_guide()

Wichtige Prompting-Tipps

  1. Seien Sie spezifisch: Verwenden Sie detaillierte, beschreibende Sprache

    • Gut: "Ein roter Kardinal auf einem schneebedeckten Kiefernzweig, morgendliches Sonnenlicht filtert durch die Bäume"

    • Schlecht: "Ein Vogel auf einem Baum"

  2. Verwenden Sie Kameraterminologie: Steuern Sie die Bildkomposition

    • "Nahaufnahme von Händen beim Holzschnitzen"

    • "Weitwinkelaufnahme, die die Berglandschaft etabliert"

    • "Kamera schwenkt nach links über das Tal"

  3. Beziehen Sie Lichtdetails ein: Spezifizieren Sie die Atmosphäre

    • "Goldene Stunde Licht wirft lange Schatten"

    • "Sanfte blaue Stunde Dämmerung"

    • "Dramatische Gewitterwolken am Himmel"

  4. Struktur für die Dauer: Passen Sie die Komplexität an die Videolänge an

    • 12-24 Sekunden: Einzelne Aktion oder Moment

    • 30-60 Sekunden: 2-3 deutliche Aktionen

    • 60-120 Sekunden: Vollständige Erzählung mit mehreren Szenen

Beispiel-Prompts nach Kategorie

Natur (Kurz - 12s):

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

Urban (Mittel - 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

Porträt (Lang - 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-Berechtigungen

Ihre AWS-Anmeldeinformationen benötigen die folgenden Berechtigungen:

{
    "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/*"
            ]
        }
    ]
}

Videoausgabe

Generierte Videos werden in Ihrem S3-Bucket mit der folgenden Struktur gespeichert:

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

Videos sind über HTTPS-URLs zugänglich:

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

Unterstützte Videospezifikationen

  • Dauer: 12-120 Sekunden (muss ein Vielfaches von 6 sein)

  • Bildrate: 24 fps (empfohlen)

  • Dimensionen:

    • 1280x720 (HD)

  • Format: MP4

  • Modell: amazon.nova-reel-v1:1

Fehlerbehebung

Häufige Probleme

  1. AWS-Anmeldefehler

    • Überprüfen Sie, ob Ihre AWS-Anmeldeinformationen korrekt sind

    • Stellen Sie sicher, dass Ihr Konto für Bedrock freigeschaltet ist

    • Überprüfen Sie die IAM-Berechtigungen

  2. S3-Bucket-Zugriff

    • Überprüfen Sie, ob der Bucket existiert und zugänglich ist

    • Überprüfen Sie die Bucket-Berechtigungen

    • Stellen Sie sicher, dass sich der Bucket in derselben Region wie Bedrock befindet

  3. Dauer-Validierung

    • Die Dauer muss 12-120 Sekunden betragen

    • Muss ein Vielfaches von 6 sein

    • Gültige Werte: 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120

  4. Job nicht gefunden

    • Verwenden Sie list_async_invokes, um alle verfolgten Jobs zu sehen

    • Jobs werden im Arbeitsspeicher gespeichert und gehen bei einem Serverneustart verloren

    • Implementieren Sie für die Produktion einen persistenten Speicher

Debug-Modus

Aktivieren Sie das Debug-Logging durch Setzen der Umgebungsvariable:

export PYTHONUNBUFFERED=1

Entwicklung

Projektstruktur

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

Mitwirken

  1. Forken Sie das Repository

  2. Erstellen Sie einen Feature-Branch

  3. Führen Sie Ihre Änderungen durch

  4. Testen Sie mit allen Transportversionen (stdio, SSE, HTTP-Streaming)

  5. Senden Sie einen Pull Request

Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe die LICENSE-Datei für Details.

Support

Bei Problemen und Fragen:

  1. Überprüfen Sie den Abschnitt zur Fehlerbehebung

  2. Lesen Sie die AWS Bedrock-Dokumentation

  3. Öffnen Sie ein Issue im Repository

Related MCP Connectors

Related MCP Servers