ComfyUI MCP Server

Integra ComfyUI con MCP, permitiendo el uso de flujos de trabajo personalizados. Requiere un servidor ComfyUI en ejecución.

Documentación

ComfyUI MCP Server

1. Resumen

  • Una implementación de servidor para integrar ComfyUI con MCP.
  • ⚠️ IMPORTANTE: Este servidor requiere un servidor ComfyUI en ejecución.
    • Debes alojar tu propio servidor ComfyUI,
    • o tener acceso a una dirección de servidor ComfyUI existente.
ComfyUI Server MCP server

2. Depuración

2.1 Depuración de ComfyUI

python src/test_comfyui.py

2.2 Depuración de MCP

mcp dev src/server.py

3. Instalación y Configuración

3.1 Configuración de ComfyUI

  • Edita src/.env para configurar el host y el puerto de ComfyUI:

    COMFYUI_HOST=localhost
    COMFYUI_PORT=8188
    

3.2 Agregar Flujos de Trabajo Personalizados

  • Para agregar nuevas herramientas, coloca tus archivos JSON de flujo de trabajo en el directorio workflows y decláralos como nuevas herramientas en el sistema.

4. Herramientas Integradas

  • text_to_image

    • Devuelve solo la URL de la imagen generada.
    • Para obtener la imagen real:
      • Usa la herramienta download_image, o
      • Accede a la URL directamente en tu navegador.
  • download_image

    • Descarga imágenes generadas por otras herramientas (como text_to_image) usando la URL de la imagen.
  • run_workflow_with_file

    • Ejecuta un flujo de trabajo proporcionando la ruta a un archivo JSON de flujo de trabajo.

      # You should ask to agent like this.
      Run comfyui workflow with text_to_image.json
      
    • imagen de ejemplo de CursorAI

  • run_workflow_with_json

    • Ejecuta un flujo de trabajo proporcionando los datos JSON del flujo de trabajo directamente.

      # You should ask to agent like this.
      Run comfyui workflow with this 
      {
        "3": {
            "inputs": {
                "seed": 156680208700286,
                "steps": 20,
          ... (workflow JSON example)
      }
      

5. Cómo Ejecutar

5.1 Usando UV (Recomendado)

  • Ejemplo mcp.json:

    {
      "mcpServers": {
        "comfyui": {
          "command": "uv",
          "args": [
            "--directory",
            "PATH/MCP/comfyui",
            "run",
            "--with",
            "mcp",
            "--with",
            "websocket-client",
            "--with",
            "python-dotenv",
            "mcp",
            "run",
            "src/server.py:mcp"
          ]
        }
      }
    }
    

5.2 Usando Docker

  • Descargar imágenes a una carpeta local con download_image puede ser difícil ya que el contenedor Docker no comparte el sistema de archivos del host.
  • Cuando uses Docker, considera:
    1. Establece RETURN_URL=false en .env para recibir datos de imagen como bytes.
    2. Establece COMFYUI_HOST en .env a la dirección adecuada (por ejemplo, host.docker.internal o la IP de tu servidor).
    3. Nota: Los payloads de imágenes grandes pueden exceder los límites de respuesta al usar datos binarios.

5.2.1 Construir Imagen Docker

# First build image
docker image build -t mcp/comfyui .
{
  "mcpServers": {
    "comfyui": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-p",
        "3001:3000",
        "mcp/comfyui"
      ]
    }
  }
}

5.2.2 Usar Imágenes Existentes

También puedes usar una imagen preconstruida.

{
  "mcpServers": {
    "comfyui": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-p",
        "3001:3000",
        "overseer66/mcp-comfyui"
      ]
    }
  }
}

5.2.3 Usar Transporte SSE

  1. Ejecuta el servidor SSE con Docker:

    docker run -i --rm -p 8001:8000 overseer66/mcp-comfyui-sse
    
  2. Configura mcp.json (cambia localhost a tu IP o dominio si es necesario):

    {
      "mcpServers": {
        "comfyui": {
          "url": "http://localhost:8001/sse" 
        }
      }
    }
    

NOTA: Al agregar nuevos flujos de trabajo como herramientas, necesitas reconstruir y volver a implementar las imágenes Docker para que estén disponibles.