Replicate Flux MCP
Genera imágenes y gráficos vectoriales de alta calidad utilizando la API de Replicate.
Documentación
Replicate Flux MCP
Replicate Flux MCP es un servidor avanzado del Protocolo de Contexto de Modelos (MCP) que permite a los asistentes de IA generar imágenes de alta calidad y gráficos vectoriales. Por defecto utiliza black-forest-labs/flux-schnell para imágenes rasterizadas y recraft-ai/recraft-v3-svg para salida SVG. Puedes sobrescribir los modelos de imagen/SVG seleccionados mediante variables de entorno, y las herramientas de imagen también aceptan una sobrescritura de model_id por llamada desde la lista de permitidos integrada.
📑 Tabla de Contenidos
- Primeros Pasos e Integración
- Integración con Glama.ai
- Integración con Codex
- Características
- Documentación
- Desarrollo
- Detalles Técnicos
- Solución de Problemas
- Contribuciones
- Licencia
- Recursos
- Ejemplos
🚀 Primeros Pasos e Integración
Proceso de Configuración
-
Obtén un Token de API de Replicate
- Regístrate en Replicate
- Crea un token de API en la configuración de tu cuenta
-
Elige tu Método de Integración
- Sigue una de las opciones de integración a continuación según tu cliente MCP preferido
-
Pide a tu Asistente de IA que Genere una Imagen
- Simplemente pregunta de forma natural: "¿Puedes generar una imagen de un paisaje montañoso sereno al atardecer?"
- O sé más específico: "Por favor, crea una imagen que muestre una escena montañosa pacífica con un lago que refleje los colores del atardecer en primer plano"
-
Explora Funciones Avanzadas
- Prueba diferentes configuraciones de parámetros para obtener resultados personalizados
- Experimenta con la generación de SVG usando
generate_svg - Usa las funciones de generación de imágenes por lotes o de variantes
Integración con Cursor
Método 1: Usando mcp.json
- Crea o edita el archivo
.cursor/mcp.jsonen el directorio de tu proyecto:
{
"mcpServers": {
"replicate-flux-mcp": {
"command": "env REPLICATE_API_TOKEN=YOUR_TOKEN npx",
"args": ["-y", "replicate-flux-mcp"]
}
}
}
- Reemplaza
YOUR_TOKENcon tu token real de API de Replicate - Reinicia Cursor para aplicar los cambios
Método 2: Modo Manual
- Abre Cursor y ve a Configuración
- Navega a la sección "MCP" o "Model Context Protocol"
- Haz clic en "Agregar Servidor" o equivalente
- Ingresa el siguiente comando en el campo correspondiente:
env REPLICATE_API_TOKEN=YOUR_TOKEN npx -y replicate-flux-mcp
- Reemplaza
YOUR_TOKENcon tu token real de API de Replicate - Guarda la configuración y reinicia Cursor si es necesario
Integración con Claude Desktop
- Crea o edita el archivo
mcp.jsonen tu directorio de configuración:
{
"mcpServers": {
"replicate-flux-mcp": {
"command": "npx",
"args": ["-y", "replicate-flux-mcp"],
"env": {
"REPLICATE_API_TOKEN": "YOUR TOKEN"
}
}
}
}
- Reemplaza
YOUR_TOKENcon tu token real de API de Replicate - Reinicia Claude Desktop para aplicar los cambios
Integración con Smithery
Este servidor MCP está disponible como servicio alojado en Smithery, lo que te permite usarlo sin configurar tu propio servidor.
- Visita Smithery y crea una cuenta si no tienes una
- Navega a la página del servidor Replicate Flux MCP
- Haz clic en "Agregar al Espacio de Trabajo" para añadir el servidor a tu espacio de trabajo de Smithery
- Configura tu cliente MCP (Cursor, Claude Desktop, etc.) para usar la URL de tu espacio de trabajo de Smithery
Para más información sobre el uso de Smithery con tus clientes MCP, visita la documentación de Smithery.
Integración con Glama.ai
Este servidor MCP también está disponible como servicio alojado en Glama.ai, ofreciendo otra opción para usarlo sin configuración local.
- Visita Glama.ai y crea una cuenta si no tienes una
- Ve a la página del servidor Replicate Flux MCP
- Haz clic en "Instalar Servidor" para añadir el servidor a tu espacio de trabajo
- Configura tu cliente MCP para usar tu espacio de trabajo de Glama.ai
Para más información, visita la documentación de servidores MCP de Glama.ai.
Integración con Codex
Añade el servidor a ~/.codex/config.toml:
[mcp_servers.replicate]
command = "npx"
args = ["-y", "replicate-flux-mcp"]
env = { REPLICATE_API_TOKEN = "your-replicate-api-token", REPLICATE_IMAGE_MODEL_ID = "your-image-model-id", REPLICATE_SVG_MODEL_ID = "your-svg-model-id" }
startup_timeout_sec = 30_000
Reemplaza los valores de env según sea necesario. Si omites REPLICATE_IMAGE_MODEL_ID / REPLICATE_SVG_MODEL_ID, el servidor usa black-forest-labs/flux-schnell para imágenes y recraft-ai/recraft-v3-svg para SVGs.
Las herramientas seleccionadas validan las sobrescrituras de modelos contra las listas de permitidos integradas:
- Generación de imágenes:
black-forest-labs/flux-schnell,google/imagen-4,black-forest-labs/flux-kontext-pro,ideogram-ai/ideogram-v3-turbo,black-forest-labs/flux-1.1-pro,black-forest-labs/flux-dev - Generación de SVG:
recraft-ai/recraft-v3-svg - Extras heredados de
run_model:minimax/video-01,luma/reframe-video,topazlabs/video-upscale,topazlabs/image-upscale,szcho/codeformer,tencentarc/gfpgan
🌟 Características
- 🖼️ Generación de Imágenes de Alta Calidad — Imágenes rasterizadas Flux Schnell por defecto, con sobrescrituras de modelo de imagen mediante variables de entorno y por herramienta.
- 🎨 Gráficos Vectoriales — Recraft V3 SVG para logotipos, iconos y diagramas.
- 📊 Lotes + Variantes — Genera N imágenes a partir de N prompts o N variantes de un solo prompt (basadas en semilla o en modificadores de prompt).
- 🧩 Modelos Arbitrarios de Replicate — La vía de escape
run_replicate_modelacepta cualquier referenciaowner/name[:version], con introspecciónget_model_schemapara el esquema de entrada OpenAPI. Lista de permitidos opcional medianteREPLICATE_MODEL_ALLOWLIST. - 📦 Salida Estructurada — Cada herramienta
generate_*devuelvestructuredContentlegible por máquina junto con contenido legible por humanos, coincidiendo con unoutputSchemapor herramienta (URL, prompt, formato, relación de aspecto, semilla por variante, etc.). - ⏳ Notificaciones de Progreso — La generación por lotes y de variantes emite
notifications/progresspara clientes que opten por ello medianteprogressToken, de modo que las ejecuciones largas no sean una caja negra. - 💬 Prompts Seleccionados — 5 plantillas de prompt listas para usar (
logo,portrait,svg-icon,product-shot,isometric-diagram) disponibles en la paleta de barras de Claude Desktop y en el menú@de Cursor. - 🏷️ Anotaciones de Herramienta Adecuadas —
readOnlyHint/destructiveHint/openWorldHint/idempotentHintconfigurados correctamente para que los clientes puedan razonar sobre seguridad y coste. - 🪵 Registro Estructurado — Los errores del lado del servidor viajan a través de
notifications/messageen lugar de stderr. - 🔌 Compatibilidad Universal con MCP — Protocolo MCP 2025-11-25; funciona con Claude Desktop, Cursor, Cline, Zed y cualquier cliente que cumpla con la especificación.
- 🔍 Historial de Generación — Explora ejecuciones anteriores a través de los recursos
imagelist,svglistypredictionlist.
📚 Documentación
Herramientas Disponibles
generate_image
Genera una imagen basada en un prompt de texto usando el modelo de imagen configurado (solo lista de permitidos).
{
prompt: string; // Required: Text description of the image to generate
model_id?: string; // Optional: Override image model (allowlist only)
seed?: number; // Optional: Random seed for reproducible generation
go_fast?: boolean; // Optional: Run faster predictions with optimized model (default: true)
megapixels?: "1" | "0.25"; // Optional: Image resolution (default: "1")
num_outputs?: number; // Optional: Number of images to generate (1-4) (default: 1)
aspect_ratio?: string; // Optional: Aspect ratio (e.g., "16:9", "4:3") (default: "1:1")
output_format?: string; // Optional: Output format ("webp", "jpg", "png") (default: "webp")
output_quality?: number; // Optional: Image quality (0-100) (default: 80)
num_inference_steps?: number; // Optional: Number of denoising steps (1-4) (default: 4)
disable_safety_checker?: boolean; // Optional: Disable safety filter (default: false)
support_image_mcp_response_type?: boolean; // Optional: Return embedded image content when supported (default: true)
}
generate_multiple_images
Genera múltiples imágenes basadas en un array de prompts usando el modelo de imagen configurado (solo lista de permitidos).
{
prompts: string[]; // Required: Array of text descriptions for images to generate (1-10 prompts)
model_id?: string; // Optional: Override image model (allowlist only)
seed?: number; // Optional: Random seed for reproducible generation
go_fast?: boolean; // Optional: Run faster predictions with optimized model (default: true)
megapixels?: "1" | "0.25"; // Optional: Image resolution (default: "1")
aspect_ratio?: string; // Optional: Aspect ratio (e.g., "16:9", "4:3") (default: "1:1")
output_format?: string; // Optional: Output format ("webp", "jpg", "png") (default: "webp")
output_quality?: number; // Optional: Image quality (0-100) (default: 80)
num_inference_steps?: number; // Optional: Number of denoising steps (1-4) (default: 4)
disable_safety_checker?: boolean; // Optional: Disable safety filter (default: false)
support_image_mcp_response_type?: boolean; // Optional: Return embedded image content when supported (default: true)
}
generate_image_variants
Genera múltiples variantes de la misma imagen a partir de un solo prompt usando el modelo de imagen configurado (solo lista de permitidos).
{
prompt: string; // Required: Text description for the image to generate variants of
model_id?: string; // Optional: Override image model (allowlist only)
num_variants: number; // Required: Number of image variants to generate (2-10, default: 4)
prompt_variations?: string[]; // Optional: List of prompt modifiers to apply to variants (e.g., ["in watercolor style", "in oil painting style"])
variation_mode?: "append" | "replace"; // Optional: How to apply variations - 'append' adds to base prompt, 'replace' uses variations directly (default: "append")
seed?: number; // Optional: Base random seed. Each variant will use seed+variant_index
go_fast?: boolean; // Optional: Run faster predictions with optimized model (default: true)
megapixels?: "1" | "0.25"; // Optional: Image resolution (default: "1")
aspect_ratio?: string; // Optional: Aspect ratio (e.g., "16:9", "4:3") (default: "1:1")
output_format?: string; // Optional: Output format ("webp", "jpg", "png") (default: "webp")
output_quality?: number; // Optional: Image quality (0-100) (default: 80)
num_inference_steps?: number; // Optional: Number of denoising steps (1-4) (default: 4)
disable_safety_checker?: boolean; // Optional: Disable safety filter (default: false)
support_image_mcp_response_type?: boolean; // Optional: Return embedded image content when supported (default: true)
}
generate_svg
Genera salida SVG/vectorial basada en un prompt de texto usando el modelo SVG configurado (solo lista de permitidos).
{
prompt: string; // Required: Text description of the SVG to generate
size?: string; // Optional: Size of the generated SVG (default: "1024x1024")
style?: string; // Optional: Style of the generated image (default: "any")
// Options: "any", "engraving", "line_art", "line_circuit", "linocut"
}
prediction_list
Recupera una lista de tus predicciones recientes de Replicate.
{
limit?: number; // Optional: Maximum number of predictions to return (1-100) (default: 50)
}
get_prediction
Obtiene información detallada sobre una predicción específica.
{
predictionId: string; // Required: ID of the prediction to retrieve
}
run_model
Ejecuta un modelo de Replicate en la lista blanca con una carga útil de entrada sin procesar (útil para modelos de video o restauración).
{
model_id: string; // Required: Replicate model id (allowlist only)
input?: Record<string, unknown>; // Optional: Raw input payload for the model
}
run_replicate_model
Ejecuta cualquier modelo alojado en Replicate mediante su referencia owner/name[:version]. Úsalo como vía de escape cuando ninguna de las herramientas seleccionadas se ajuste. Llama a get_model_schema primero si no conoces la forma de la entrada.
{
model: string; // Required: 'owner/name' or 'owner/name:version'
input: Record<string, unknown>; // Required: Model input parameters
prefer_wait?: number; // Optional: Seconds to block waiting for sync output (1-60, default 60)
return_as?: "url" | "base64" | "both"; // Optional: How to return file outputs (default "url")
}
Configura la variable de entorno REPLICATE_MODEL_ALLOWLIST (entradas owner/name separadas por comas) para restringir qué modelos pueden invocarse. Sin configurar = cualquier modelo permitido. Configurada pero vacía = denegar todo (el servidor falla de forma segura en lugar de permitir silenciosamente todo).
get_model_schema
Obtiene el esquema de entrada OpenAPI y la descripción de un modelo de Replicate para que puedas pasar los parámetros correctos a run_replicate_model.
{
model: string; // Required: Replicate model reference in 'owner/name' form
}
Recursos Disponibles
imagelist
Explora tu historial de imágenes generadas creadas con el modelo de imagen configurado.
svglist
Explora tu historial de salidas SVG generadas con el modelo SVG configurado.
predictionlist
Explora todo tu historial de predicciones de Replicate.
Prompts Disponibles
Plantillas seleccionadas disponibles en el menú de barras de Claude Desktop y en la paleta @ de Cursor. Cada una completa valores predeterminados sensatos y luego delega en la herramienta de generación correspondiente.
| Prompt | Descripción | Argumentos |
|---|---|---|
logo | Logotipo de marca/producto | brand, style?, palette? |
portrait | Retrato fotorrealista | subject, mood?, lens? |
svg-icon | Icono vectorial de concepto único | concept, style? |
product-shot | Fotografía de producto de estudio | product, surface? |
isometric-diagram | Ilustración técnica isométrica | subject, emphasis? |
Salida Estructurada
Cada herramienta generate_* devuelve tanto content legible por humanos (bloques de texto e imagen) como structuredContent legible por máquina que coincide con el outputSchema de la herramienta.
| Herramienta | Forma de structuredContent |
|---|---|
generate_image | { url, prompt, format, aspect_ratio, seed? } |
generate_svg | { url, prompt, size, style, svg? } |
generate_multiple_images | { images: [{ url, prompt }], format, aspect_ratio } |
generate_image_variants | { base_prompt, variation_mode, variants: [{ variant_index, url, prompt_used, seed? }], format, aspect_ratio } |
Los clientes que entienden la salida estructurada de MCP pueden consumir URLs y metadatos directamente sin analizar texto.
Variables de Entorno
| Variable | Requerida | Propósito |
|---|---|---|
REPLICATE_API_TOKEN | sí | Token de API para Replicate. El servidor se cierra inmediatamente si falta. |
REPLICATE_IMAGE_MODEL_ID | no | Sobrescribe el modelo de imagen seleccionado por defecto usado por generate_image, generate_multiple_images, generate_image_variants y create_prediction. El valor debe estar en la lista de permitidos de imágenes integrada. |
REPLICATE_SVG_MODEL_ID | no | Sobrescribe el modelo SVG por defecto usado por generate_svg. El valor debe estar en la lista de permitidos de SVG integrada. |
REPLICATE_MODEL_ALLOWLIST | no | Entradas owner/name separadas por comas que controlan run_replicate_model. Sin configurar = cualquier modelo permitido. Configurada pero vacía = denegar todo (fallo seguro). Se evalúa una vez al inicio del proceso, así que configúrala en el bloque env de tu cliente MCP (no mediante un dotenv cargado más tarde). |
💻 Desarrollo
- Clona el repositorio:
git clone https://github.com/awkoy/replicate-flux-mcp.git
cd replicate-flux-mcp
- Instala las dependencias:
npm install
- Inicia el observador de TypeScript:
npm run watch
- Compila el proyecto:
npm run build
- Prueba el servidor con el MCP Inspector:
npm run inspector
- Conéctate al Cliente:
{
"mcpServers": {
"image-generation-mcp": {
"command": "npx",
"args": [
"/Users/{USERNAME}/{PATH_TO}/replicate-flux-mcp/build/index.js"
],
"env": {
"REPLICATE_API_TOKEN": "YOUR REPLICATE API TOKEN"
}
}
}
}
Pruebas
Este proyecto actualmente no tiene un conjunto de pruebas automatizadas. La verificación se realiza mediante:
npm run build— La verificación de tipos de TypeScript detecta la mayoría de las regresiones.npm run inspector— Ejecuta el binario compilado a través del MCP Inspector oficial para pruebas de humo de extremo a extremo de herramientas, recursos y prompts.
Se agradecen contribuciones que añadan un marco de pruebas adecuado (por ejemplo, Vitest + un cliente stdio de MCP).
⚙️ Detalles Técnicos
Stack
- Model Context Protocol SDK - Funcionalidad central de MCP para la gestión de herramientas y recursos
- Replicate API - Proporciona acceso a modelos de generación de imágenes con IA de última generación
- TypeScript - Garantiza la seguridad de tipos y aprovecha las características modernas de JavaScript
- Zod - Implementa la validación de tipos en tiempo de ejecución para interacciones robustas con la API
Configuración
El servidor se puede configurar modificando el objeto CONFIG en src/config/index.ts o estableciendo las variables de entorno REPLICATE_IMAGE_MODEL_ID / REPLICATE_SVG_MODEL_ID para sobrescribir los valores predeterminados:
export const CONFIG = {
serverName: "replicate-flux-mcp",
serverVersion: "0.4.0",
imageModelId: process.env.REPLICATE_IMAGE_MODEL_ID ?? "black-forest-labs/flux-schnell",
svgModelId: process.env.REPLICATE_SVG_MODEL_ID ?? "recraft-ai/recraft-v3-svg",
pollingAttempts: 25,
pollingInterval: 2000, // ms
modelAllowlistConfigured: process.env.REPLICATE_MODEL_ALLOWLIST !== undefined,
modelAllowlist: (process.env.REPLICATE_MODEL_ALLOWLIST ?? "")
.split(",")
.map((s) => s.trim())
.filter(Boolean),
};
Cambio de modelos (sin cambios de código)
Usa variables de entorno al iniciar el servidor (funciona con npx, Cursor, Claude Desktop, etc.). Las anulaciones de herramientas de imagen/SVG seleccionadas deben estar en las listas de permitidos integradas:
# Stay on defaults:
REPLICATE_API_TOKEN=YOUR_TOKEN npx -y replicate-flux-mcp
# Switch to other allowlisted models
REPLICATE_IMAGE_MODEL_ID="google/imagen-4" \
REPLICATE_SVG_MODEL_ID="recraft-ai/recraft-v3-svg" \
REPLICATE_API_TOKEN=YOUR_TOKEN \
npx -y replicate-flux-mcp
modelAllowlist se evalúa una vez al inicio del proceso desde REPLICATE_MODEL_ALLOWLIST. Reinicia el servidor después de cambiarlo.
🔍 Solución de problemas
Problemas comunes
Error de autenticación
- Asegúrate de que tu
REPLICATE_API_TOKENesté configurada correctamente en el entorno - Verifica que tu token sea válido probándolo directamente con la API de Replicate
Filtro de seguridad activado
- El modelo tiene un filtro de seguridad integrado que puede bloquear ciertos mensajes
- Intenta modificar tu mensaje para evitar contenido potencialmente problemático
Error de tiempo de espera
- Para imágenes más grandes o servidores ocupados, es posible que necesites aumentar
pollingAttemptsopollingIntervalen la configuración - La configuración predeterminada debería funcionar para la mayoría de los casos de uso
🤝 Contribuciones
¡Las contribuciones son bienvenidas! Sigue estos pasos para contribuir:
- Haz un fork del repositorio
- Crea tu rama de características (
git checkout -b feature/amazing-feature) - Realiza tus cambios (
git commit -m 'Add some amazing feature') - Envía los cambios a la rama (
git push origin feature/amazing-feature) - Abre una solicitud de extracción
Para solicitudes de funciones o informes de errores, crea un problema en GitHub. Si te gusta este proyecto, ¡considera darle una estrella al repositorio!
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT: consulta el archivo LICENSE para más detalles.
🔗 Recursos
- Documentación del Protocolo de Contexto de Modelo
- Documentación de la API de Replicate
- Colección Prueba Gratis
- Modelo Flux Schnell
- Modelo Recraft V3 SVG
- SDK de TypeScript de MCP
- Documentación de Smithery
- Servidores MCP de Glama.ai
🎨 Ejemplos
| Múltiples mensajes | Variantes de mensajes |
|---|---|
Aquí hay algunos ejemplos de cómo usar las herramientas:
Generación de imágenes por lotes con generate_multiple_images
Crea múltiples imágenes distintas a la vez con diferentes mensajes:
{
"prompts": [
"A red sports car on a mountain road",
"A blue sports car on a beach",
"A vintage sports car in a city street"
]
}
Variantes de imágenes con generate_image_variants
Crea diferentes interpretaciones del mismo concepto usando semillas:
{
"prompt": "A futuristic city skyline at night",
"num_variants": 4,
"seed": 42
}
O explora variaciones de estilo con modificadores de mensajes:
{
"prompt": "A character portrait",
"prompt_variations": [
"in anime style",
"in watercolor style",
"in oil painting style",
"as a 3D render"
]
}
Hecho con ❤️ por Yaroslav Boiko
