自动化工作流工具

n8n是一个可视化自动化工作流工具,支持Docker容器化部署和与AI工具的集成,适用于数据处理、API调用和任务自动化。

  • by 0drdev
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 0drdev/first-steps-mcp

使用说明

🚀 Mi Ruta de Aprendizaje: n8n, Docker y MCP

📦 Módulo 1: n8n (Automatización Visual)

  • Nodos Básicos: Los flujos nacen en un Trigger y se procesan en nodos Action.
  • Estructura de Datos: n8n siempre transporta la información en un array de Items. La data real debe ir dentro de la propiedad raíz json: [{ json: { data } }].
  • Lógica Condicional: El nodo If evalúa el payload entrante para enrutar visualmente (True/False).
  • Consumo y Creación de APIs:
    • HTTP Request: Nodo para consumir APIs de terceros.
    • Webhook: Nodo para escuchar peticiones externas y exponer n8n como una API REST.
    • Expressions: Uso de {{ }} para inyectar variables dinámicas, como Query Parameters ($json.query.parametro).

🐳 Módulo 2: Docker y Orquestación

  • Imagen vs Contenedor: La Imagen es el molde inmutable (la Clase); el Contenedor es el servidor vivo y efímero (la Instancia).
  • Puertos: Mapeo de tráfico entre tu máquina y el contenedor (ej. 5678:5678).
  • Volúmenes (Bind Mounts): El puente vital (./n8n_data:/home/node/.n8n) para que el contenedor escriba la base de datos (SQLite) directamente en tu disco de WSL y no se pierda nada al reiniciar.
  • Docker Compose: Archivo declarativo (docker-compose.yml) para orquestar la infraestructura, usar archivos .env y mapear permisos (user: "1000:1000").
  • Dockerfile Personalizado: Modificar la imagen oficial para instalar paquetes NPM globales (uuid) y permitir su uso en n8n alterando la variable NODE_FUNCTION_ALLOW_EXTERNAL.

🤖 Módulo 3: Model Context Protocol (MCP)

  • Tools (Herramientas): Acciones activas que la IA puede ejecutar (ej. hacer fetch a una API o disparar un Webhook de n8n). Se definen con ListToolsRequestSchema y CallToolRequestSchema.
  • Resources (Recursos): Datos pasivos que la IA puede leer para obtener contexto (ej. leer un archivo .log o un esquema de base de datos). Se definen con ListResourcesRequestSchema y ReadResourceRequestSchema, usando URIs (file:///...).
  • El Inspector: Herramienta visual (npx @modelcontextprotocol/inspector node index.js) para simular a la IA, testear inputs y validar schemas sin escribir comandos crudos.
  • La Arquitectura Definitiva: La IA razona -> El Servidor MCP comunica -> El contenedor Docker de n8n ejecuta.

Comando para ejecutar el servidor de mcp

npx @modelcontextprotocol/inspector node index.js

Comando para ejecutar la lista de tools del mcp

echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | node index.js

Comando para ejecutar llamar una tool especifica del mcp

echo '{"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "obtener_clima_local", "arguments": {"ciudad": "Medellín"}}}' | node index.js

🔌 Módulo 4: Integración End-to-End (Claude + WSL + n8n)

  • El Reto WSL-Windows: Los clientes de IA en Windows (como Claude Desktop) necesitan cruzar a Linux para ejecutar Node.js.
  • La Solución de Configuración: En %APPDATA%\Claude\claude_desktop_config.json, definimos el servidor usando el binario nativo de Node.js de WSL para evitar que la terminal de Linux (bash) imprima texto basura y rompa la comunicación de JSON-RPC.
    • Comando: wsl.exe
    • Argumentos: ["/ruta/absoluta/a/node", "/ruta/absoluta/a/index.js"]
  • Ejecución Autónoma: Una vez conectado correctamente, el cliente de IA lee el ListToolsRequestSchema, decide cuándo invocar CallToolRequestSchema y el servidor MCP de Node.js orquesta todo, desde consultas HTTP hasta la activación de Webhooks en nuestro Docker de n8n.
  • Resultado: Un Agente de IA 100% funcional y local con acceso a bases de datos, APIs de terceros y flujos de automatización visuales.

Otro paso al momento de configurar el MCP con claude

Debemos agregar en el codigo de configuracion de claude_desktop_config.json lo siguiente:

"mcpServers": { "mi-orquestador-n8n": { "command": "wsl.exe", "args": [ "/home/linuxbrew/.linuxbrew/bin/node", "/datosDev/first-mcp/index.js" ] } }