RunwayML + Luma AI
Interaja com as APIs do RunwayML e Luma AI para tarefas de geração de vídeo e imagem.
Documentação
Servidor MCP RunwayML + Luma AI
Este servidor MCP fornece ferramentas para interagir com as APIs RunwayML e Luma AI para tarefas de geração de vídeo e imagem.
Recursos
- Gere vídeos a partir de prompts de texto (RunwayML ou Luma AI).
- Gere vídeos a partir de imagens (RunwayML ou Luma AI).
- Gere imagens a partir de prompts de texto (Luma AI).
- Gerencie gerações do Luma AI (listar, obter, excluir).
- Adicione áudio a gerações do Luma AI.
- Aumente a resolução de gerações do Luma AI.
- Aprimore prompts usando LLMs do OpenRouter antes da geração.
Pré-requisitos
- Node.js (v18 LTS ou posterior recomendado)
- npm (geralmente incluído com Node.js)
- Chaves de API:
- Segredo da API RunwayML
- Chave da API Luma AI
- Chave da API OpenRouter (para a ferramenta
enhance_prompt)
Instalação
- Clone ou Baixe: Obtenha o código do servidor.
- Navegue até o Diretório: Abra um terminal no diretório raiz do servidor (
runwayml-mcp-server). - Instale as Dependências:
npm install
Configuração
- Crie o arquivo
.env: No diretório raiz do servidor, crie um arquivo chamado.env. - Adicione as Chaves de API: Adicione suas chaves de API ao arquivo
.env:
Substitua os valores de espaço reservado pelas suas chaves reais.RUNWAYML_API_SECRET=your_runwayml_api_secret_here LUMAAI_API_KEY=your_luma_api_key_here OPENROUTER_API_KEY=your_openrouter_api_key_here
Executando o Servidor
- Compile o Servidor: Compile o código TypeScript:
npm run build - Inicie o Servidor:
Você deve ver uma mensagem comonpm startRunwayML MCP server running on stdiona saída de erro do seu terminal (stderr).
Configuração do Cliente MCP (ex.: Claude Desktop App, Cline)
Configure seu cliente MCP para conectar a este servidor. Os passos exatos dependem do cliente, mas normalmente você precisará fornecer:
- Nome: Um nome descritivo (ex.:
runway-luma-server) - Comando:
node - Argumentos: O caminho completo para o arquivo index do servidor compilado (ex.:
/path/to/your/runwayml-mcp-server/build/server-index.js) - Variáveis de Ambiente:
RUNWAYML_API_SECRET: Seu segredo da API RunwayMLLUMAAI_API_KEY: Sua chave da API Luma AIOPENROUTER_API_KEY: Sua chave da API OpenRouter
Exemplo de Configuração (Conceitual):
{
"mcpServers": {
"runway-luma-server": {
"command": "node",
"args": ["/full/path/to/runwayml-mcp-server/build/server-index.js"],
"env": {
"RUNWAYML_API_SECRET": "your_runwayml_api_secret_here",
"LUMAAI_API_KEY": "your_luma_api_key_here",
"OPENROUTER_API_KEY": "your_openrouter_api_key_here"
},
"disabled": false,
"autoApprove": []
}
}
}
(Lembre-se de substituir /full/path/to/ pelo caminho real no seu sistema)
Ferramentas Disponíveis
generate_text_to_video: Gera vídeo a partir de texto.provider: (Opcional)runwayml(padrão) oulumaai.promptText: (Obrigatório) O prompt de texto.runway_model: (Opcional) Modelo Runway (ex.: "gen-2").runway_resolution: (Opcional) Resolução Runway (1280:768ou768:1280).runway_watermark: (Opcional) Booleano, padrãofalse.luma_model: (Opcional) Modelo Luma (ray-flash-2,ray-2(padrão),ray-1-6).luma_aspect_ratio: (Opcional) Proporção de aspecto Luma (ex.:16:9(padrão),1:1).luma_loop: (Opcional) Booleano.duration: (Opcional) Duração do vídeo em segundos (número).seed: (Opcional) Semente de geração (número).
generate_image_to_video: Gera vídeo a partir de uma imagem.provider: (Opcional)runwayml(padrão) oulumaai.promptImage: (Obrigatório) URL da imagem de entrada, ou para Runway, um array[{uri: "url", position: "first" | "last"}].promptText: (Opcional) Prompt de texto para acompanhar a imagem.runway_model: (Opcional) Modelo Runway (gen3a_turbo(padrão)).runway_duration: (Opcional) Duração Runway (5(padrão) ou10).runway_ratio: (Opcional) Resolução Runway (1280:768ou768:1280).runway_watermark: (Opcional) Booleano, padrãofalse.luma_model: (Opcional) Modelo Luma (ray-flash-2,ray-2(padrão),ray-1-6).luma_aspect_ratio: (Opcional) Proporção de aspecto Luma (ex.:16:9(padrão)).luma_loop: (Opcional) Booleano.seed: (Opcional) Semente de geração (número).
enhance_prompt: Refina um prompt usando OpenRouter.original_prompt: (Obrigatório) O prompt a ser aprimorado.model: (Opcional) Nome do modelo OpenRouter (padrão é um modelo capaz comoanthropic/claude-3.5-sonnet).instructions: (Opcional) Instruções específicas para o aprimoramento.
luma_generate_image: Gera uma imagem usando Luma AI.prompt: (Obrigatório) Prompt de texto.aspect_ratio: (Opcional) Proporção de aspecto Luma (16:9(padrão)).model: (Opcional) Modelo de imagem Luma (photon-1(padrão),photon-flash-1).image_ref: (Opcional) Array de objetos de referência de imagem ({url: string, weight?: number}). Máx. 4.style_ref: (Opcional) Array de objetos de referência de estilo ({url: string, weight?: number}). Máx. 1.character_ref: (Opcional) Objeto de referência de personagem ({ identity0: { images: [url1, ...] } }).modify_image_ref: (Opcional) Objeto de referência de modificação de imagem ({url: string, weight?: number}).
luma_list_generations: Lista gerações anteriores do Luma AI.limit: (Opcional) Número de resultados (padrão 10).offset: (Opcional) Deslocamento para paginação (padrão 0).
luma_get_generation: Obtém detalhes de uma geração específica do Luma AI.generation_id: (Obrigatório) UUID da geração.
luma_delete_generation: Exclui uma geração específica do Luma AI.generation_id: (Obrigatório) UUID da geração.
luma_get_camera_motions: Lista movimentos de câmera suportados para prompts do Luma AI. (Sem parâmetros).luma_add_audio: Adiciona áudio a uma geração Luma.generation_id: (Obrigatório) UUID da geração.prompt: (Obrigatório) Prompt para o áudio.negative_prompt: (Opcional) Prompt negativo para áudio.
luma_upscale: Aumenta a resolução de uma geração Luma.generation_id: (Obrigatório) UUID da geração.resolution: (Opcional) Resolução alvo (1080p(padrão) ou4k).
(Nota: Para ferramentas que envolvem geração (generate_*, luma_upscale), o servidor inicia a tarefa e retorna imediatamente. Atualizações de progresso e a URL do resultado final serão enviadas via notificações de progresso do MCP.)
Exemplos de Fluxos de Trabalho
Aqui estão exemplos de como combinar as ferramentas do servidor para casos de uso comuns:
1. Trecho de Videoclipe (Cyberpunk Noir)
Objetivo: Criar um clipe de vídeo cyberpunk noir de 5 segundos para a letra "Neon rivers flowing through a city of chrome".
Passos:
-
Gere a Imagem Base (Luma):
{ "tool_name": "luma_generate_image", "arguments": { "prompt": "Overhead shot of a dark, rainy cyberpunk city street at night. Bright neon signs reflect on wet pavement, resembling rivers of light flowing between towering chrome skyscrapers. Film noir aesthetic, photorealistic.", "aspect_ratio": "16:9" } }(Aguarde a conclusão da geração da imagem e obtenha a URL da imagem)
-
Anime a Imagem (Luma):
{ "tool_name": "generate_image_to_video", "arguments": { "provider": "lumaai", "promptImage": "{IMAGE_URL_FROM_STEP_1}", "promptText": "Slow pan left across the rainy cyberpunk cityscape, neon lights flickering subtly.", "luma_aspect_ratio": "16:9", "duration": 5 } }(Aguarde a conclusão da geração do vídeo)
2. Conceito de Anúncio de Produto (Fone Flutuante)
Objetivo: Criar um vídeo de 5 segundos mostrando um fone futurista flutuando em um ambiente minimalista.
Passos:
-
Gere a Cena com Referência do Produto (Luma):
{ "tool_name": "luma_generate_image", "arguments": { "prompt": "A single, sleek futuristic wireless earbud floats weightlessly in the center of a bright, minimalist white room with soft, diffused ambient light. Zero gravity effect.", "aspect_ratio": "1:1", "image_ref": [{ "url": "{PRODUCT_IMAGE_URL}", "weight": 0.8 }] } }(Aguarde a conclusão da geração da imagem e obtenha a URL da imagem)
-
Anime a Cena (Luma):
{ "tool_name": "generate_image_to_video", "arguments": { "provider": "lumaai", "promptImage": "{IMAGE_URL_FROM_STEP_1}", "promptText": "The earbud slowly rotates and drifts gently in zero gravity.", "luma_aspect_ratio": "1:1", "duration": 5 } }(Aguarde a conclusão da geração do vídeo)
3. Animação de Imagem (RunwayML Gen3a)
Objetivo: Animar uma imagem existente usando o modelo Gen3a do RunwayML.
Passos:
- (Opcional) Gere a Imagem Base (Luma): Use
luma_generate_imagese você não tiver uma imagem. - Anime a Imagem (RunwayML):
(Aguarde a conclusão da geração do vídeo){ "tool_name": "generate_image_to_video", "arguments": { "provider": "runwayml", "promptImage": "{YOUR_IMAGE_URL}", "promptText": "Subtle zoom in, cinematic lighting.", "runway_model": "gen3a_turbo", "runway_duration": "5", "runway_ratio": "1280:768" // Or "768:1280" } }
