{"id":2154,"date":"2025-07-05T10:00:00","date_gmt":"2025-07-05T08:00:00","guid":{"rendered":"https:\/\/pletzenauer.com\/?p=2154"},"modified":"2026-08-05T17:23:03","modified_gmt":"2026-08-05T15:23:03","slug":"model-context-protocol-mcp-n8n","status":"publish","type":"post","link":"https:\/\/pletzenauer.com\/es\/2025\/07\/05\/model-context-protocol-mcp-n8n\/","title":{"rendered":"Model Context Protocol (MCP) explicado con claridad \u2014 con ejemplo en n8n"},"content":{"rendered":"<p>Quien construye agentes de IA conoce el problema: para cada funci\u00f3n de un servicio conectado hay que definir una herramienta propia. Buscar, crear, modificar y borrar una cita del calendario son ya cuatro piezas separadas, y eso para un \u00fanico servicio. Con muchas conexiones, el esfuerzo de mantenimiento crece en consecuencia. El <strong>Model Context Protocol (MCP)<\/strong> sigue otro camino: estandariza c\u00f3mo un modelo de lenguaje se comunica con un servicio y reduce dr\u00e1sticamente el n\u00famero de piezas necesarias. Este art\u00edculo resume el concepto y un ejemplo pr\u00e1ctico concreto con n8n.<\/p>\n<div style=\"background:#FFE6D6;border-left:4px solid #F26A21;padding:16px 20px;border-radius:6px;margin:24px 0;\">\n<strong>Lo esencial en breve<\/strong><\/p>\n<ul>\n<li>MCP estandariza c\u00f3mo un modelo de lenguaje entiende el contexto de un servicio: es decir, qu\u00e9 sabe hacer y c\u00f3mo se le habla.<\/li>\n<li>En lugar de conectar cada funci\u00f3n por separado, bastan un <em>servidor MCP<\/em> (delante del servicio) y un <em>cliente MCP<\/em> (dentro del agente).<\/li>\n<li>Al agente le bastan dos pasos: <em>listar<\/em> funciones (List Tools) y <em>ejecutar<\/em> funciones (Execute Tool).<\/li>\n<li>En n8n esto se reproduce con una variable de entorno, un community node y dos MCP client tools.<\/li>\n<li>MCP es una tecnolog\u00eda joven: existen reservas de seguridad conocidas, y en entornos productivos conviene ser prudente.<\/li>\n<\/ul>\n<\/div>\n<figure style=\"margin:28px 0;\"><img decoding=\"async\" src=\"https:\/\/pletzenauer.com\/wp-content\/uploads\/2026\/06\/1488-1.png\" alt=\"Comparaci\u00f3n a dos columnas: a la izquierda, la conexi\u00f3n cl\u00e1sica de una herramienta por funci\u00f3n con muchas piezas; a la derecha, MCP con solo dos pasos, List Tools y Execute Tool.\" style=\"width:100%;height:auto;border-radius:8px;border:1px solid #E5E2DE;\"\/><figcaption style=\"font-size:0.9em;color:#6b6b6b;margin-top:8px;\">En lugar de conectar cada funci\u00f3n una a una, al agente le bastan dos operaciones MCP.<\/figcaption><\/figure>\n<h2>Qu\u00e9 resuelve MCP en realidad<\/h2>\n<p>La idea b\u00e1sica del Model Context Protocol est\u00e1 en su nombre: un modelo de lenguaje debe entender el <strong>contexto<\/strong> de una aplicaci\u00f3n. En concreto: \u00bfqu\u00e9 sabe hacer esta aplicaci\u00f3n?, \u00bfpara qu\u00e9 sirve? y \u00bfc\u00f3mo ejecuto acciones dentro de ella?<\/p>\n<p>Cl\u00e1sicamente, al construir un agente se conecta cada herramienta por separado: cada funci\u00f3n es una pieza propia. En Google Calendar, por ejemplo: una herramienta para buscar citas, otra para actualizarlas, otra para borrarlas y otra para crearlas. Cuatro funciones para un servicio. En agentes complejos con muchos servicios conectados, eso suma pronto decenas de piezas.<\/p>\n<h2>Servidor, cliente y el esquema unificado<\/h2>\n<p>MCP trabaja con dos roles:<\/p>\n<ul>\n<li><strong>Servidor MCP:<\/strong> se coloca delante del servicio propiamente dicho (p. ej. Airbnb o Google Calendar) y describe c\u00f3mo se puede interactuar con \u00e9l.<\/li>\n<li><strong>Cliente MCP:<\/strong> reside en el agente, consulta las funciones del servidor y las invoca.<\/li>\n<\/ul>\n<p>En la implementaci\u00f3n actual, por ejemplo en n8n, bastan dos pasos en lugar de muchas herramientas sueltas:<\/p>\n<ol>\n<li><strong>List Tools (listar):<\/strong> el agente pregunta al servidor qu\u00e9 funciones hay disponibles.<\/li>\n<li><strong>Execute Tool (ejecutar):<\/strong> el agente invoca una funci\u00f3n concreta con los par\u00e1metros adecuados.<\/li>\n<\/ol>\n<p>Lo decisivo es el <strong>esquema unificado<\/strong>. Sea cual sea el servicio que hay detr\u00e1s, la respuesta a una consulta List Tools tiene siempre la misma estructura. Por cada funci\u00f3n incluye el nombre, una descripci\u00f3n y un esquema con los par\u00e1metros permitidos. Los contenidos y los par\u00e1metros var\u00edan de un servicio a otro; la estructura permanece constante. Eso es exactamente lo que el protocolo fija y estandariza.<\/p>\n<h3>Un ejemplo con la herramienta de Airbnb<\/h3>\n<p>Si se pregunta al agente qu\u00e9 posibilidades ofrece la herramienta de Airbnb, \u00e9l mismo obtiene la lista de funciones mediante el tool List Tools. Devuelve, entre otras:<\/p>\n<ul>\n<li><strong>Airbnb Search:<\/strong> b\u00fasqueda de alojamientos con filtros y paginaci\u00f3n: ubicaci\u00f3n, fechas de entrada y salida, n\u00famero de adultos, ni\u00f1os, beb\u00e9s y mascotas, as\u00ed como rango de precios.<\/li>\n<li><strong>Airbnb Listing Details:<\/strong> informaci\u00f3n detallada de un alojamiento concreto a partir de su listing ID.<\/li>\n<\/ul>\n<p>Al agente no hubo que indicarle nada: obtuvo por s\u00ed mismo las funciones disponibles, sus descripciones y el esquema de par\u00e1metros. En el esquema se ve, por ejemplo, un campo de texto <code>location<\/code> (ciudad, regi\u00f3n, etc.), los campos de fecha de entrada y de salida, el n\u00famero de adultos y el precio m\u00ednimo y m\u00e1ximo.<\/p>\n<p>Si despu\u00e9s se hace una petici\u00f3n concreta \u2014por ejemplo, un alojamiento en Bangkok para seis personas por un m\u00e1ximo de 50 euros la noche\u2014, el agente act\u00faa en dos fases: primero llama a List Tools (no ha memorizado nada, porque no hay memoria activa), reconoce a partir del esquema los par\u00e1metros necesarios y ejecuta la b\u00fasqueda con Execute Tool. El resultado \u2014por ejemplo, un alojamiento con tres camas por unos 35 euros la noche\u2014 llega de vuelta, y todo ello con solo dos herramientas a\u00f1adidas. Si Airbnb ofreciera m\u00e1s funciones, por ejemplo para gestionar los anuncios propios, podr\u00edan representarse con ese mismo esquema sin definir piezas adicionales.<\/p>\n<h2>As\u00ed reproduce MCP en n8n<\/h2>\n<p>Los pasos siguientes muestran la configuraci\u00f3n con el ejemplo de Airbnb. Sirve bien para probar porque no hace falta ninguna clave de API.<\/p>\n<ol>\n<li><strong>Definir la variable de entorno:<\/strong> ponga <code>N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE<\/code> en <code>true<\/code>. Eso permite a los community nodes acceder a las herramientas. En una instalaci\u00f3n con Docker (p. ej. en un servidor de Hetzner) lo indica en la secci\u00f3n <code>environment<\/code> del archivo <code>docker-compose<\/code> y reinicia la instancia.<\/li>\n<li><strong>Crear el AI Agent:<\/strong> cree un AI Agent y as\u00edgnele un modelo (en el v\u00eddeo, GPT-4.1 Mini).<\/li>\n<li><strong>Instalar el community node:<\/strong> en <em>Settings &rarr; Community Nodes<\/em> instale el paquete <code>n8n-nodes-mcp<\/code> y confirme el aviso sobre instalar c\u00f3digo no verificado procedente de fuentes p\u00fablicas.<\/li>\n<li><strong>A\u00f1adir el MCP client tool:<\/strong> con el signo m\u00e1s junto a <em>Tools<\/em>, busque \u00abMCP\u00bb. Atenci\u00f3n: no lo confunda con el <em>MCP Client Tool<\/em> propio de n8n; la variante de la comunidad se reconoce por el icono de caja y hoy es m\u00e1s completa.<\/li>\n<li><strong>Crear las credenciales:<\/strong> como tipo de conexi\u00f3n puede elegir entre Command Line, Server-Sent Events y HTTP Streamable. En el ejemplo se mantiene Command Line. Los valores correctos figuran en el repositorio del servidor MCP correspondiente, en la secci\u00f3n de instalaci\u00f3n. Para Airbnb: command <code>npx<\/code> y los argumentos introducidos paso a paso: <code>-y<\/code>, el paquete <code>@openbnb\/mcp-server-airbnb<\/code> y, opcionalmente, <code>--ignore-robots-txt<\/code>.<\/li>\n<\/ol>\n<blockquote><p><strong>Nota sobre robots.txt:<\/strong> la opci\u00f3n <code>--ignore-robots-txt<\/code> ignora las reglas de acceso de un sitio web. Para una demostraci\u00f3n es defendible; en entornos productivos deber\u00eda respetar el robots.txt de cada servicio.<\/p><\/blockquote>\n<h3>Configurar las dos operaciones<\/h3>\n<p>A continuaci\u00f3n necesita dos MCP client tools con operaciones distintas:<\/p>\n<ul>\n<li><strong>List Tools:<\/strong> nombre la herramienta, por ejemplo, \u00abAirbnb List Tools\u00bb e indique como descripci\u00f3n que sirve para recuperar todas las herramientas disponibles de Airbnb. Un clic de prueba (Execute Step) deber\u00eda devolver la lista de funciones ya conocida, con nombre, descripci\u00f3n y esquema.<\/li>\n<li><strong>Execute Tool:<\/strong> un segundo MCP client tool con la operaci\u00f3n Execute Tool. Descripci\u00f3n: sirve para ejecutar herramientas de Airbnb, listables mediante el tool List Tools. El nombre de la herramienta se pasa como expression, de modo que el agente decida por s\u00ed mismo qu\u00e9 funci\u00f3n invoca; los par\u00e1metros de la herramienta se dejan libres para que \u00e9l los determine.<\/li>\n<\/ul>\n<p>Tras ordenar y guardar, el agente puede probarse, por ejemplo otra vez con la consulta de Bangkok. Recupera la lista de funciones, se la devuelve al modelo, opta por la b\u00fasqueda y entrega alojamientos adecuados. Exactamente el comportamiento de la parte conceptual, ahora en el propio workflow.<\/p>\n<h2>M\u00e1s all\u00e1 de n8n \u2014 y una palabra sobre seguridad<\/h2>\n<p>MCP no se limita a las plataformas de automatizaci\u00f3n. Tambi\u00e9n aplicaciones de escritorio como Claude Desktop pueden conectarse a servidores MCP. As\u00ed se pueden delegar tareas desde el chat a programas instalados localmente; un ejemplo muy citado es el control del software 3D Blender v\u00eda MCP, en el que una persona sin conocimientos de Blender genera renders. El servidor MCP se ejecuta localmente, mientras que el modelo de lenguaje sigue funcionando a trav\u00e9s del servicio en la nube.<\/p>\n<p>Con todo el entusiasmo, conviene recordar: MCP es un desarrollo joven. Ya existen <strong>reservas de seguridad<\/strong> y se han encontrado vulnerabilidades. Precisamente en entornos productivos hay que tomar la tecnolog\u00eda con cautela: vale la pena seguir su evoluci\u00f3n antes de apoyar en ella procesos cr\u00edticos.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>El Model Context Protocol es un enfoque pragm\u00e1tico de estandarizaci\u00f3n: a trav\u00e9s de un servidor MCP, un modelo de lenguaje aprende por s\u00ed mismo qu\u00e9 sabe hacer un servicio y c\u00f3mo se le habla, en lugar de predefinir cada funci\u00f3n una a una. Para agentes de IA complejos eso significa bastantes menos piezas y menos mantenimiento; en el ejemplo de n8n bastan dos pasos: listar y ejecutar. El enfoque convence, pero todav\u00eda es joven. Quien lo pruebe deber\u00eda empezar por servicios no cr\u00edticos y, en entornos productivos, tomarse en serio las cuestiones de seguridad abiertas.<\/p>\n<p><strong>Fuente:<\/strong> <a href=\"https:\/\/www.youtube.com\/watch?v=ujHOD52ybyo\" target=\"_blank\" rel=\"noopener\">Model Context Protocol (MCP): Erkl\u00e4rung &amp; n8n Tutorial (Deutsch)<\/a> \u2014 canal de YouTube Philip Thomas (en alem\u00e1n).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQu\u00e9 es el Model Context Protocol (MCP) y c\u00f3mo simplifica los agentes de IA? Concepto, ejemplo pr\u00e1ctico con n8n y Airbnb, y avisos de seguridad, de un vistazo.<\/p>\n","protected":false},"author":0,"featured_media":1503,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2154","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-unkategorisiert"],"_links":{"self":[{"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/posts\/2154","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/comments?post=2154"}],"version-history":[{"count":1,"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/posts\/2154\/revisions"}],"predecessor-version":[{"id":2594,"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/posts\/2154\/revisions\/2594"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/media\/1503"}],"wp:attachment":[{"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/media?parent=2154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/categories?post=2154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pletzenauer.com\/es\/wp-json\/wp\/v2\/tags?post=2154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}