ByDomuDevelopers

Agentes en n8n y LangChain

Dale a un agente las herramientas de ByDomu por MCP, o la API como herramienta propia.

Guían8n · LangChain · LangGraphClave secreta
Antes de empezar. Un agente que corre sin una persona mirando necesita una clave secreta de solo lectura propia, con los permisos justos, guardada en las credenciales de n8n o en una variable de entorno.

Un agente en n8n

Al nodo AI Agent conéctale como herramienta un MCP Client Tool con la URL del servidor y autenticación Bearer. Usa una versión de n8n que ofrezca el transporte HTTP Streamable: el servidor no habla SSE (GET responde 405), así que el modo SSE no conecta.

AI Agent
 └─ Tool: MCP Client Tool
      Endpoint        https://mcp.bydomu.com/mcp
      Server Transport  HTTP Streamable   (en versiones recientes; SSE no conecta)
      Authentication  Bearer  →  credencial con domu_sk_live_… (solo lectura)
      Tools to Include  Selected → search_properties, get_property, list_appointments

Para pasos fijos (sin que el modelo decida), el nodo HTTP Request contra la API REST con X-API-Key es más simple y predecible.

LangChain y LangGraph

Con los adaptadores MCP de LangChain, las nueve herramientas llegan como herramientas normales del agente (create_agent corre sobre LangGraph). LangChain está pasando estos adaptadores a langchain.mcp; la configuración del servidor (URL y encabezado) es la misma.

# pip install langchain langchain-mcp-adapters langchain-anthropic
import asyncio, os
from langchain.agents import create_agent
from langchain_mcp_adapters.client import MultiServerMCPClient

async def main():
    client = MultiServerMCPClient({
        "bydomu": {
            "transport": "streamable_http",
            "url": "https://mcp.bydomu.com/mcp",
            "headers": {"Authorization": f"Bearer {os.environ['BYDOMU_API_KEY']}"},
        }
    })
    tools = await client.get_tools()
    agent = create_agent("anthropic:claude-opus-5", tools)
    result = await agent.ainvoke(
        {"messages": [{"role": "user", "content": "¿Qué tareas vencidas tiene el equipo?"}]}
    )
    print(result["messages"][-1].content)

asyncio.run(main())

¿MCP o API?

  • MCP: el modelo elige entre nueve herramientas de lectura ya pensadas para conversar (resultados cortos y paginados). Es lo más rápido para un asistente.
  • API REST: todo lo demás, incluidas las escrituras con su permiso aprobado. Envuelve cada endpoint como una herramienta propia, manda Idempotency-Key y pide confirmación humana antes de escribir.

Prompts listos para agentes de código

Qué puede hacer, cómo se revoca y buenas prácticas

El servidor es de solo lectura: la IA puede consultar, pero no crea, cambia ni borra nada, y nunca envía mensajes a tus clientes. Ve solo lo que permiten estos permisos, con el límite de una clave secreta (60 peticiones por minuto).

PuedePermiso
Buscar y ver propiedades publicadasportal:read
Buscar y ver contactoscontacts:read
Agenda y citasappointments:read
Leer los mensajes de un contactoconversations:read
Embudos y negociosdeals:read
Tareas pendientestasks:read

Con una clave, la IA ve lo que permita esa clave. Para cortar el acceso, pausa o borra la clave en Configuración › API Keys; la siguiente llamada responde 401.

  • Una clave por integración, solo con los permisos de lectura que use. Deja conversations:read afuera si no necesitas los mensajes.
  • La clave va en una variable de entorno o en el almacén de secretos del cliente, nunca pegada en un chat, en un archivo del repositorio ni en una URL.
  • Lo que devuelve ByDomu incluye texto que escribieron tus clientes: trátalo como datos, no como instrucciones. No encadenes este conector con herramientas que envían correos o mensajes sin que una persona lo apruebe.
  • Revisa de vez en cuando Apps conectadas y quita lo que ya no se use.