{"id":11810,"date":"2026-05-13T22:09:21","date_gmt":"2026-05-13T20:09:21","guid":{"rendered":"https:\/\/bitacora.eniac2000.com\/?p=11810"},"modified":"2026-05-13T23:05:11","modified_gmt":"2026-05-13T21:05:11","slug":"el-agente-de-ingenieria-total","status":"publish","type":"post","link":"https:\/\/bitacora.eniac2000.com\/?p=11810","title":{"rendered":"El Agente de Ingenier\u00eda Total"},"content":{"rendered":"\n<p>Llevo unos meses d\u00e1ndole vueltas a una idea que ha ido tomando forma casi sin que me diera cuenta. Empez\u00f3 como un fogonazo mental cuando estaba trabajado en un proyecto, en el que visualic\u00e9 un esquema que me daba un ordenado funcional que se pod\u00eda aplicar a las tres herramientas de IA que m\u00e1s utilizo en mi d\u00eda a d\u00eda: Claude Code, NotebookLM y ChatGPT. Cada una hac\u00eda algo distinto, cada una era buena en lo suyo, y yo me pasaba el d\u00eda saltando entre pesta\u00f1as del navegador como un mensajero, copiando texto de un sitio para pegarlo en otro, perdiendo contexto en cada salto, y enfad\u00e1ndome cada vez que ten\u00eda que repetirle a una IA algo que otra ya sab\u00eda perfectamente. Hab\u00eda empezado a trabajar en un flujo de interacci\u00f3n con IAs que, si bien funcionaba, no era lo m\u00e1s \u00e1gil del mundo. B\u00fasqueda documental y perfilado de un concepto preliminar en NotebookLM, validaci\u00f3n de ese concepto preliminar en Claude Code para tener una implementaci\u00f3n concreta, y pulido de esa implementaci\u00f3n en ChatGPT. Adecuado, pero engorroso. Hasta que descubr\u00ed los <strong>MCP<\/strong>, y entonces todo encaj\u00f3.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/santisima-trinidad-1024x576.webp\" alt=\"El \u2018Sant\u00edsima Trinidad\u2019, pintado a franjas carmes\u00ed y negras, el aspecto que ten\u00eda en la batalla de Trafalgar. Pintura de Geoff Hunt.\" class=\"wp-image-11839\" srcset=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/santisima-trinidad-1024x576.webp 1024w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/santisima-trinidad-300x169.webp 300w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/santisima-trinidad-768x432.webp 768w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/santisima-trinidad-1536x864.webp 1536w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/santisima-trinidad.webp 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">El <em>Sant\u00edsima Trinidad<\/em>, el Escorial de los Mares. M\u00e1s adelante hablaremos de \u00e9l. Pintura de Geoff Hunt.<\/figcaption><\/figure>\n\n\n\n<p>Este art\u00edculo va de c\u00f3mo se construye lo que he acabado llamando un <strong>Agente de Ingenier\u00eda Total<\/strong>: un asistente que combina la <strong>capacidad de ejecuci\u00f3n local de Claude Code<\/strong> con la <strong>memoria corporativa de NotebookLM<\/strong>, el r<strong>azonamiento alternativo de ChatGPT<\/strong>, y otras tantas <strong>integraciones <\/strong>(Blender, Google Colab, Google Drive) que convierten un terminal en una mesa de trabajo donde todas las herramientas est\u00e1n al alcance del agente sin necesidad de que yo me levante a buscarlas. Es, en esencia, una forma muy concreta de aprovechar el <em>Model Context Protocol<\/em>, el est\u00e1ndar que est\u00e1 cambiando radicalmente c\u00f3mo los humanos interactuamos con la IA o, m\u00e1s bien, c\u00f3mo la IA interact\u00faa con todo lo dem\u00e1s.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">El problema: la IA aislada no sirve para tareas reales de ingenier\u00eda<\/h2>\n\n\n\n<p>Antes de meternos en harina conceptual, conviene entender por qu\u00e9 este planteamiento tiene sentido. Cualquiera que haya trabajado con IA generativa para tareas de ingenier\u00eda se ha encontrado con la misma pared: el modelo es brillante hasta que necesita informaci\u00f3n del mundo real. Le pides a ChatGPT que te dise\u00f1e un m\u00f3dulo de autenticaci\u00f3n y lo hace, pero ignora completamente que tu empresa tiene una gu\u00eda de estilo que dice que toda autenticaci\u00f3n debe pasar por un proveedor SAML espec\u00edfico. Le pides a Claude que te refactorice un servicio y lo hace bien, pero no sabe que ese servicio se despliega en un Kubernetes con unas restricciones de red muy concretas que est\u00e1n documentadas en un repositorio que solo t\u00fa has le\u00eddo.<\/p>\n\n\n\n<p>El resultado, a la pr\u00e1ctica, es que <strong>el cuello de botella deja de ser la IA y pasa a ser uno mismo<\/strong>. T\u00fa eres quien tiene que ir leyendo la documentaci\u00f3n, extrayendo lo relevante, copi\u00e1ndolo al <em>prompt<\/em>, pegando la respuesta en el editor, ejecutando el comando en la terminal, y volviendo a copiar el resultado al chat para preguntar qu\u00e9 hacer con el error que ha salido. La IA tiene el cerebro, pero t\u00fa tienes las manos, los ojos y la memoria. Y eso, en ingenier\u00eda, no escala.<\/p>\n\n\n\n<p>Lo que cambia con los MCP es precisamente eso: la IA deja de ser un interlocutor con el que conversamos en una caja de texto y pasa a ser un agente que tiene acceso directo a las herramientas, datos y sistemas que necesita para hacer su trabajo. Y todo ello sin que t\u00fa hagas de intermediario.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Qu\u00e9 es el Model Context Protocol (MCP) y por qu\u00e9 importa<\/h2>\n\n\n\n<p>El <strong>Model Context Protocol<\/strong> es un est\u00e1ndar abierto, originalmente creado por Anthropic en noviembre de 2024 y donado en diciembre de 2025 a la <em>Agentic AI Foundation<\/em> de la Linux Foundation, que define una manera estandarizada de conectar modelos de lenguaje (LLMs) con fuentes de datos, herramientas y servicios externos. La analog\u00eda que m\u00e1s me gusta (y que vi por primera vez en la documentaci\u00f3n de Codecademy) es la del <strong>puerto USB-C para aplicaciones de IA<\/strong>: en lugar de tener un cable distinto para cada perif\u00e9rico, tienes un \u00fanico conector universal que sirve para todo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"687\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/eaLtd-1024x687.jpg\" alt=\"\" class=\"wp-image-11844\" srcset=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/eaLtd-1024x687.jpg 1024w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/eaLtd-300x201.jpg 300w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/eaLtd-768x516.jpg 768w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/eaLtd.jpg 1168w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Imagen conceptual de un MCP. Generada con IA<\/figcaption><\/figure>\n\n\n\n<p>Antes de la existencia de los MCP, conectar un modelo a una herramienta externa requer\u00eda una integraci\u00f3n personalizada para cada pareja modelo-herramienta. Si quer\u00edas que ChatGPT leyera tu Google Drive, hac\u00eda falta un <em>plugin<\/em> espec\u00edfico de OpenAI. Si quer\u00edas que Claude consultara tu base de datos, hac\u00eda falta una integraci\u00f3n propietaria de Anthropic. Esto generaba lo que en la documentaci\u00f3n oficial llaman el <strong>problema N\u00d7M<\/strong>: <em>N<\/em> modelos por <em>M<\/em> herramientas dan como resultado N\u00d7M integraciones distintas, todas ellas mantenidas por separado. Una pesadilla de fragmentaci\u00f3n.<\/p>\n\n\n\n<p>MCP resuelve esto introduciendo una capa intermedia. En lugar de N\u00d7M integraciones, hay <strong>N+M<\/strong>: cada modelo implementa el protocolo MCP como cliente, cada herramienta lo implementa como servidor, y cualquier cliente puede hablar con cualquier servidor. Es exactamente el mismo principio que aplic\u00f3 el <em>Language Server Protocol<\/em> al mundo de los IDEs hace una d\u00e9cada, permitiendo que cualquier editor de c\u00f3digo (VS Code, Vim, Emacs\u2026) hable con cualquier analizador de lenguaje (TypeScript, Python, Rust\u2026) sin necesidad de integraciones espec\u00edficas. De hecho, MCP se inspira directamente en LSP y reutiliza muchas de sus ideas de dise\u00f1o, transportando los mensajes sobre JSON-RPC 2.0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La arquitectura: clientes, servidores y primitivas<\/h3>\n\n\n\n<p>Un sistema MCP tiene tres piezas conceptuales:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El <strong>host<\/strong> es la aplicaci\u00f3n con la que t\u00fa interact\u00faas: Claude Code, Claude Desktop, Cursor, ChatGPT con apps, etc. Es el que tiene el modelo de lenguaje y gestiona la conversaci\u00f3n.<\/li>\n\n\n\n<li>El <strong>cliente MCP<\/strong> es el componente dentro del host que sabe hablar el protocolo. Lo lanzas y se queda escuchando lo que el modelo necesita.<\/li>\n\n\n\n<li>El <strong>servidor MCP<\/strong> es lo que expone una capacidad concreta \u2014 leer tu Google Drive, ejecutar c\u00f3digo en Blender, consultar tu base de datos, lo que sea \u2014 usando el lenguaje com\u00fan del protocolo.<\/li>\n<\/ul>\n\n\n\n<p>Lo bonito es que el servidor no sabe ni le importa qu\u00e9 modelo est\u00e1 al otro lado. Puede ser Claude Opus 4.7, GPT-5, Gemini o un modelo local que est\u00e9s ejecutando con Ollama. Y al rev\u00e9s: el cliente no necesita saber c\u00f3mo est\u00e1 implementado el servidor por dentro; solo necesita saber qu\u00e9 capacidades expone.<\/p>\n\n\n\n<p>Esas capacidades se agrupan en tres <strong>primitivas<\/strong> que el protocolo define formalmente:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tools<\/strong> (herramientas): funciones que el modelo puede invocar. Por ejemplo, una herramienta <code>create_blender_object<\/code> que recibe par\u00e1metros y crea un cubo en Blender. Son <em>model-controlled<\/em>: es el propio modelo el que decide cu\u00e1ndo y c\u00f3mo invocarlas, en funci\u00f3n de lo que est\u00e9 intentando conseguir.<\/li>\n\n\n\n<li><strong>Resources<\/strong> (recursos): datos que el modelo puede leer pero no ejecutar. Por ejemplo, el contenido de un fichero, la respuesta de una API, las filas de una base de datos. Son <em>application-controlled<\/em>: el host decide qu\u00e9 recursos cargar en el contexto.<\/li>\n\n\n\n<li><strong>Prompts<\/strong> (prompts): plantillas predefinidas que ayudan al usuario a invocar comportamientos complejos del servidor. Son <em>user-controlled<\/em>: el humano elige cu\u00e1l disparar.<\/li>\n<\/ul>\n\n\n\n<p>En la pr\u00e1ctica, la mayor\u00eda de los MCPs que vas a encontrar y a usar exponen sobre todo <em>tools<\/em>. Las otras dos primitivas son m\u00e1s sutiles y aparecen en casos m\u00e1s sofisticados.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Adopci\u00f3n real: por qu\u00e9 esto va en serio<\/h3>\n\n\n\n<p>Uno de los indicios m\u00e1s claros de que MCP no es una moda pasajera es la velocidad a la que lo ha adoptado todo el sector. OpenAI lo integr\u00f3 oficialmente en marzo de 2025, primero en la <em>desktop app<\/em> de ChatGPT y en septiembre de 2025 tambi\u00e9n en las ChatGPT apps. Microsoft Semantic Kernel y Azure OpenAI lo soportan. Cloudflare permite desplegar servidores MCP en su infraestructura <em>edge<\/em>. Y, como dec\u00eda antes, en diciembre de 2025 Anthropic transfiri\u00f3 la gobernanza del protocolo a la Linux Foundation, lo que lo convierte definitivamente en un est\u00e1ndar de la industria y no en la herramienta propietaria de un fabricante. Hoy se hablan de miles de servidores MCP construidos por la comunidad, con SDKs disponibles en Python, TypeScript, C#, Java, Kotlin y otros lenguajes.<\/p>\n\n\n\n<p>Esto importa porque significa que cualquier inversi\u00f3n que hagas hoy en aprender a desplegar y usar MCPs es una inversi\u00f3n que va a tener retorno durante a\u00f1os, y porque garantiza que tu trabajo no quedar\u00e1 atrapado en el silo de un \u00fanico fabricante. Si ma\u00f1ana cambio Claude por otro modelo, todos mis servidores MCP siguen funcionando exactamente igual.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Por qu\u00e9 Claude Code es el centro de gravedad del sistema<\/h2>\n\n\n\n<p>Antes de entrar en los MCPs concretos que tengo montados, conviene explicar por qu\u00e9 Claude Code, y no otro entorno, es el n\u00facleo del agente que estoy describiendo.<\/p>\n\n\n\n<p>Claude Code es la herramienta de Anthropic para programaci\u00f3n ag\u00e9ntica desde la l\u00ednea de comandos. Lo que la distingue de un chat tradicional no es solo el modelo (Claude Opus 4.7 en la versi\u00f3n actual, que ya es bastante distinguible por s\u00ed solo), sino el conjunto de capacidades nativas que tiene integradas en el propio agente: lee y edita archivos, ejecuta comandos en bash, hace <code>git commit<\/code>, navega por la estructura de un repositorio, ejecuta tests y analiza sus salidas. Es, literalmente, un ingeniero al que le dejas las manos sobre tu teclado.<\/p>\n\n\n\n<p>Y, lo que es m\u00e1s importante para lo que nos ocupa, <strong>Claude Code es uno de los hosts MCP m\u00e1s maduros que hay disponibles<\/strong>. La integraci\u00f3n no es un a\u00f1adido <em>post hoc<\/em>; es parte del dise\u00f1o del producto. Tiene gesti\u00f3n de permisos para cada herramienta MCP, control sobre los tokens que consumen las salidas de los servidores, y un sistema de <em>tool search<\/em> que permite trabajar con cientos de herramientas MCP sin saturar la ventana de contexto del modelo (las herramientas se cargan a demanda cuando el modelo decide que las necesita, no todas al inicio).<\/p>\n\n\n\n<p>Esto \u00faltimo, que parece un detalle t\u00e9cnico menor, es cr\u00edtico. Cuando tienes diez servidores MCP conectados, cada uno con quince o veinte herramientas, las definiciones de esas herramientas \u2014 sus nombres, par\u00e1metros, descripciones \u2014 pueden ocupar decenas de miles de tokens en el contexto. Si todas se cargan al inicio, el modelo arranca cada conversaci\u00f3n arrastrando un lastre considerable. El <em>tool search<\/em> de Claude Code resuelve esto: las definiciones se mantienen disponibles pero ocultas hasta que el modelo busca activamente alguna capacidad que las necesite. El efecto es que puedes tener un agente con acceso a una superficie enorme de herramientas sin pagar el coste en cada turno de conversaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mi Sant\u00edsima Trinidad: Claude Code + NotebookLM + ChatGPT<\/h2>\n\n\n\n<p>La primera versi\u00f3n del Agente de Ingenier\u00eda Total que dise\u00f1\u00e9 combinaba tres bloques con responsabilidades muy distintas, en lo que vine a llamar mi <em><a href=\"https:\/\/es.wikipedia.org\/wiki\/Sant%C3%ADsima_Trinidad_(1769)\" target=\"_blank\" rel=\"noreferrer noopener\">Sant\u00edsima Trinidad<\/a><\/em> de la IA. Una pieza de ingenier\u00eda robusta, potente, y destinada a proporcionar una supremac\u00eda en la ingenier\u00eda de sistemas IT. No se me solivianten los cat\u00f3licos. Esto no va de religi\u00f3n, sino de dise\u00f1o funcional. Conviene explicarlos uno a uno antes de entrar en el resto de integraciones que he ido sumando con el tiempo, porque cada uno cubre un eje conceptual diferente:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"620\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/agente-ingenieria-total-trinidad.png\" alt=\"\" class=\"wp-image-11838\" srcset=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/agente-ingenieria-total-trinidad.png 1000w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/agente-ingenieria-total-trinidad-300x186.png 300w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/agente-ingenieria-total-trinidad-768x476.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><figcaption class=\"wp-element-caption\">Esquema base del agente: Claude Code como orquestador con dos clientes MCP conectados a NotebookLM y a la API de OpenAI. Mi Sant\u00edsima Trinidad.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">NotebookLM: la memoria corporativa est\u00e1tica<\/h3>\n\n\n\n<p>NotebookLM es la herramienta de Google que te permite cargar un corpus de documentos (PDFs, transcripciones, p\u00e1ginas web, notas de Google Docs) y conversar con ellos. Es lo que en la jerga llamamos un sistema <strong>RAG<\/strong> (<em>Retrieval-Augmented Generation<\/em>): t\u00fa haces una pregunta, el sistema busca en tus documentos los fragmentos m\u00e1s relevantes, y se los pasa al modelo junto con la pregunta para que genere una respuesta apoyada en ese contenido.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"348\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/NotebookLM_De_la_informacion_al_conocimiento-1.jpg\" alt=\"\" class=\"wp-image-11848\" srcset=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/NotebookLM_De_la_informacion_al_conocimiento-1.jpg 624w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/NotebookLM_De_la_informacion_al_conocimiento-1-300x167.jpg 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>Lo que hace especial a NotebookLM frente a otros sistemas RAG es la calidad de su <em>grounding<\/em>: cada afirmaci\u00f3n que hace el sistema viene con una referencia exacta al pasaje del documento del que la ha extra\u00eddo. Esto es oro puro en un contexto de ingenier\u00eda, donde necesitas poder verificar de d\u00f3nde sale cada decisi\u00f3n.<\/p>\n\n\n\n<p>En el agente, NotebookLM ocupa el rol de <strong>memoria corporativa est\u00e1tica<\/strong>. Aqu\u00ed cargo los documentos que definen el contexto en el que el agente debe operar: manuales de arquitectura, gu\u00edas de estilo de c\u00f3digo, pol\u00edticas de seguridad, decisiones arquitect\u00f3nicas del proyecto, especificaciones de proveedores externos, normativa relevante (en mi caso, mucha legislaci\u00f3n AESA sobre drones, por ejemplo). Es informaci\u00f3n que cambia poco y que el agente debe poder consultar en cualquier momento.<\/p>\n\n\n\n<p>El servidor MCP que utilizo para conectar NotebookLM con Claude Code es un proceso local que, por debajo, automatiza la interacci\u00f3n con la interfaz web de NotebookLM mediante Playwright (NotebookLM no expone una API p\u00fablica oficial todav\u00eda). Funciona como un puente: Claude Code le pregunta \u00ab\u00bfqu\u00e9 dicen los documentos sobre el procedimiento de despliegue en producci\u00f3n?\u00bb, el MCP traduce esa pregunta en una sesi\u00f3n de NotebookLM, recoge la respuesta con sus citas, y la devuelve al agente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">ChatGPT: el cerebro anal\u00edtico externo<\/h3>\n\n\n\n<p>El segundo v\u00e9rtice de la trinidad es ChatGPT, a trav\u00e9s de la API de OpenAI. \u00bfPor qu\u00e9 meter dos modelos de lenguaje en el mismo sistema, cuando Claude ya es perfectamente capaz por s\u00ed solo? La respuesta, para m\u00ed, es la del <strong>segundo par de ojos<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"380\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/ChatGPT1_event-21.jpg\" alt=\"\" class=\"wp-image-11849\" style=\"width:697px;height:auto\" srcset=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/ChatGPT1_event-21.jpg 600w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/ChatGPT1_event-21-300x190.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><figcaption class=\"wp-element-caption\">ChatGPT<\/figcaption><\/figure>\n\n\n\n<p>Modelos distintos tienen sesgos distintos, entrenamientos distintos, fortalezas distintas. Claude tiende a ser excelente en c\u00f3digo bien estructurado y en seguir instrucciones complejas con muchos matices. GPT, en mi experiencia, tiene un punto fuerte en problemas de l\u00f3gica abstracta y en exploraciones algor\u00edtmicas donde hay que probar varias rutas mentalmente antes de decidirse por una. No es que uno sea mejor que el otro; es que son diferentes, y para tareas cr\u00edticas (como revisar una funci\u00f3n que va a manejar credenciales, o validar un esquema de cifrado) el contraste entre dos perspectivas independientes vale m\u00e1s que la opini\u00f3n m\u00e1s fuerte de cualquiera de ellos.<\/p>\n\n\n\n<p>El MCP corporativo de ChatGPT que tengo configurado expone b\u00e1sicamente un par de <em>tools<\/em>: una para preguntas de razonamiento t\u00e9cnico y otra para auditor\u00edas de c\u00f3digo. Por debajo hace una llamada HTTP a la API de OpenAI, con un <em>system prompt<\/em> espec\u00edfico para cada tipo de consulta. Desde Claude Code, invocar a GPT es tan sencillo como mencionarlo: <em>\u00abChatGPT, revisa esta funci\u00f3n<\/em> <code>auth.ts<\/code><em>, especialmente la l\u00f3gica de validaci\u00f3n de tokens\u00bb<\/em>.<\/p>\n\n\n\n<p>El valor de esta integraci\u00f3n aumenta cuando se combina con la siguiente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Claude Code: la capacidad de ejecuci\u00f3n local<\/h3>\n\n\n\n<p>El tercer v\u00e9rtice es Claude Code mismo, en su rol no de host orquestador, sino de <strong>ejecutor<\/strong>. Las herramientas nativas que mencionaba antes \u2014 editar archivos, ejecutar bash, hacer commits \u2014 son las que convierten todo el sistema en algo m\u00e1s que un asistente conversacional. Claude Code es el que, al final de la cadena, modifica el c\u00f3digo real, lo ejecuta, observa el resultado y decide el siguiente paso.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"506\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/fb3b96dd-546f-4cba-8bc9-7719669643c8_1202x594-1024x506.jpg\" alt=\"\" class=\"wp-image-11850\" srcset=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/fb3b96dd-546f-4cba-8bc9-7719669643c8_1202x594-1024x506.jpg 1024w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/fb3b96dd-546f-4cba-8bc9-7719669643c8_1202x594-300x148.jpg 300w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/fb3b96dd-546f-4cba-8bc9-7719669643c8_1202x594-768x380.jpg 768w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/fb3b96dd-546f-4cba-8bc9-7719669643c8_1202x594.jpg 1202w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Claude Code como agente<\/figcaption><\/figure>\n\n\n\n<p>Cuando se juntan los tres elementos, el flujo de trabajo cambia dr\u00e1sticamente. Un ejemplo concreto, sacado de un proyecto reciente:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Yo pregunto: <em>\u00abNecesito implementar la autenticaci\u00f3n del nuevo microservicio. Mira en NotebookLM qu\u00e9 proveedor SAML usamos como est\u00e1ndar, p\u00eddele a ChatGPT que dise\u00f1e el flujo de tokens incluyendo refresh, y luego implementa la funci\u00f3n<\/em> <code>authenticateRequest<\/code> <em>en<\/em> <code>src\/auth\/handler.ts<\/code><em>\u00bb<\/em>.<\/li>\n\n\n\n<li>Claude Code consulta NotebookLM y descubre que el est\u00e1ndar de la organizaci\u00f3n es Okta con tokens JWT firmados con RS256 y una rotaci\u00f3n de 15 minutos.<\/li>\n\n\n\n<li>Con esa informaci\u00f3n, prepara un prompt para ChatGPT que incluye los requisitos espec\u00edficos, pidi\u00e9ndole que dise\u00f1e el flujo de autenticaci\u00f3n.<\/li>\n\n\n\n<li>ChatGPT devuelve un esquema con los pasos del flujo de tokens, incluyendo manejo de refresh y casos de error.<\/li>\n\n\n\n<li>Claude Code traduce ese esquema en c\u00f3digo TypeScript real, lo escribe en el archivo correspondiente, ejecuta los tests, y si algo falla, vuelve a iterar.<\/li>\n<\/ul>\n\n\n\n<p>Yo, en todo este proceso, intervengo dos veces: al inicio para dar la instrucci\u00f3n, y al final para revisar el <em>commit<\/em> que Claude propone hacer. Lo que antes me llevaba una ma\u00f1ana entera saltando entre pesta\u00f1as ahora son diez minutos de supervisi\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Un par\u00e9ntesis naval: el <em>otro <\/em>Sant\u00edsima Trinidad<\/h2>\n\n\n\n<p>Si hablas de \u00abtrinidad\u00bb y de \u00abingenier\u00eda\u00bb en la misma frase, y siendo uno espa\u00f1ol, es pr\u00e1cticamente obligatorio detenerse un momento en <strong>el Sant\u00edsima Trinidad<\/strong>. Con art\u00edculo masculino, porque hablamos del nav\u00edo, no de la advocaci\u00f3n mariana. El juego de palabras es deliberado y conviene desarrollarlo, porque los paralelismos entre aquel coloso del XVIII y este agente de IA del XXI son m\u00e1s reveladores de lo que parecen a primera vista.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"861\" height=\"521\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Carlos-Parrilla.-Navios-de-linea-El-santisima-trinidad-al-frente-al-la-derecha-el-principe-de-asturias-copia.jpg\" alt=\"\" class=\"wp-image-11845\" srcset=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Carlos-Parrilla.-Navios-de-linea-El-santisima-trinidad-al-frente-al-la-derecha-el-principe-de-asturias-copia.jpg 861w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Carlos-Parrilla.-Navios-de-linea-El-santisima-trinidad-al-frente-al-la-derecha-el-principe-de-asturias-copia-300x182.jpg 300w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/Carlos-Parrilla.-Navios-de-linea-El-santisima-trinidad-al-frente-al-la-derecha-el-principe-de-asturias-copia-768x465.jpg 768w\" sizes=\"auto, (max-width: 861px) 100vw, 861px\" \/><figcaption class=\"wp-element-caption\">El <em>Sant\u00edsima Trinidad<\/em> junto al <em>Pr\u00edncipe de Asturias<\/em>, nav\u00edo de l\u00ednea de tres puentes<\/figcaption><\/figure>\n\n\n\n<p>El <em>Nuestra Se\u00f1ora de la Sant\u00edsima Trinidad<\/em> fue botado en los astilleros de La Habana en octubre de 1769 y se convirti\u00f3, tras sucesivas reformas, en <strong>el mayor nav\u00edo de l\u00ednea de su tiempo y el \u00fanico del mundo con cuatro puentes de ca\u00f1ones<\/strong>. En su configuraci\u00f3n previa a Trafalgar montaba 140 piezas de artiller\u00eda (32 ca\u00f1ones de 36 libras en la cubierta m\u00e1s baja, 34 de 24 libras en la segunda, 36 de 12 libras en la tercera, otros tantos m\u00e1s ligeros arriba, adem\u00e1s de obuses y esmeriles), desplazaba casi 5.000 toneladas y embarcaba a m\u00e1s de 1.100 hombres entre tripulaci\u00f3n y guarnici\u00f3n. Se le llamaba <em>El Escorial de los mares<\/em>, y no era para menos: era el buque insignia de la Armada Espa\u00f1ola y el s\u00edmbolo flotante del poder\u00edo mar\u00edtimo de un imperio que a\u00fan se resist\u00eda a aceptar que el siglo se le estaba escapando entre los dedos.<\/p>\n\n\n\n<p>Lo que hace al Sant\u00edsima Trinidad interesante para esta historia, sin embargo, no es su porte sino su <strong>concepto de integraci\u00f3n<\/strong>. Dise\u00f1ado inicialmente por el irland\u00e9s Matthew Mullins (castellanizado en Mateo Mullan), continuado por su hijo Ignacio tras la muerte del padre, y construido con maderas tropicales (caoba, j\u00facaro, caguair\u00e1n) transportadas desde Camag\u00fcey hasta los astilleros habaneros, era una pieza de ingenier\u00eda que combinaba lo mejor que la metr\u00f3poli y las colonias pod\u00edan aportar. Un proyecto irland\u00e9s-espa\u00f1ol, materiales caribe\u00f1os, mano de obra cubana, refinamientos posteriores en Ferrol y C\u00e1diz. Ninguno de esos elementos por separado habr\u00eda producido nada extraordinario; juntos, dieron el nav\u00edo m\u00e1s imponente que jam\u00e1s hab\u00eda surcado los mares.<\/p>\n\n\n\n<p>El paralelismo con un Agente de Ingenier\u00eda Total empieza a ser visible. Ni Claude Code por s\u00ed solo, ni NotebookLM por s\u00ed solo, ni la API de OpenAI por s\u00ed sola producen nada cualitativamente nuevo: son herramientas excelentes pero limitadas a su dominio. Es la integraci\u00f3n lo que cambia la categor\u00eda del resultado. Y, como en el caso del nav\u00edo, el valor est\u00e1 en la composici\u00f3n, no en cada pieza aislada.<\/p>\n\n\n\n<p>Hay una segunda lectura, sin embargo, que no conviene pasar por alto, porque es la que da profundidad al paralelismo. El Sant\u00edsima Trinidad <strong>fue una ingenier\u00eda problem\u00e1tica desde el primer d\u00eda<\/strong>. Tuvo problemas estructurales pr\u00e1cticamente toda su vida \u00fatil. Las pruebas de mar de 1770, pocos meses despu\u00e9s de su botadura, revelaron que su punto de escora era tan elevado que en mares poco calmados no pod\u00eda utilizar la cubierta inferior de ca\u00f1ones. Fue carenado y reformado una y otra vez en Ferrol y en La Carraca. En 1795 se le a\u00f1adi\u00f3 la cuarta cubierta, decisi\u00f3n que el historiador Ces\u00e1reo Fern\u00e1ndez Duro criticar\u00eda con dureza a\u00f1os despu\u00e9s, sugiriendo que con el coste de las reparaciones acumuladas se podr\u00eda haber construido un nav\u00edo entero <em>\u00abde oro\u00bb<\/em>, y que la l\u00f3gica habr\u00eda aconsejado <em>recortarlo<\/em> en lugar de <em>ampliarlo<\/em>. La ambici\u00f3n de a\u00f1adir m\u00e1s capacidad de fuego a un casco que ya iba justo de estabilidad fue, en \u00faltima instancia, lo que sell\u00f3 su destino en Trafalgar: un nav\u00edo inmenso, pero pesado y poco maniobrable, que acab\u00f3 bati\u00e9ndose solo contra siete buques brit\u00e1nicos antes de ser capturado y, dos d\u00edas despu\u00e9s, hundido por un temporal frente a C\u00e1diz.<\/p>\n\n\n\n<p>La lecci\u00f3n, traducida al lenguaje del software, es clara: <strong>la integraci\u00f3n compleja tiene tendencia a volverse inestable cuando se le a\u00f1aden capacidades por encima de su dise\u00f1o original<\/strong>. Cada MCP nuevo es una cubierta m\u00e1s de ca\u00f1ones. Multiplica la potencia de fuego del sistema, s\u00ed, pero tambi\u00e9n su peso, su superficie de fallo, su consumo de tokens, su latencia, su complejidad operativa. Llega un momento en que a\u00f1adir otro servidor MCP no compensa: el agente empieza a marearse en su propio contexto, las herramientas se pisan unas a otras, y lo que era una orquestaci\u00f3n se convierte en una cacofon\u00eda.<\/p>\n\n\n\n<p>Por eso, cuando hablo de <em>el<\/em> Sant\u00edsima Trinidad como referencia para <em>la<\/em> trinidad de mi agente, lo hago con dos sentimientos a la vez. Por un lado, una admiraci\u00f3n genuina por lo que la integraci\u00f3n bien hecha puede conseguir: un sistema que es cualitativamente superior a la suma de sus partes. Por otro, una conciencia clara de que la grandeza arquitect\u00f3nica no es garant\u00eda de robustez. El Trinidad real se fue a pique entre otras razones porque cada generaci\u00f3n de reformistas quiso a\u00f1adirle algo m\u00e1s sin cuestionar si el casco lo aguantaba. Cuando uno monta un sistema de IA ag\u00e9ntica, la tentaci\u00f3n es exactamente la misma: <em>\u00ab\u00bfy si le a\u00f1ado tambi\u00e9n un MCP para&#8230;?\u00bb<\/em>. La respuesta, muchas veces, es que no. Que el sistema actual funciona, que ya tiene cuatro cubiertas, y que la quinta puede ser la que lo hunda.<\/p>\n\n\n\n<p>Conviene recordarlo cada vez que uno se siente delante del terminal con un nuevo servidor MCP reci\u00e9n compilado y la mano sobre el <code>config.json<\/code>. La ingenier\u00eda maestra no consiste en meterlo todo; consiste en saber qu\u00e9 dejar fuera. Algo que en La Carraca, en 1795, se aprendi\u00f3 tarde. \u2693<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">M\u00e1s all\u00e1 del <em>Trinidad<\/em>: los MCPs que se han ido sumando<\/h2>\n\n\n\n<p>Volviendo a la IA y, una vez que tienes tu <em>Sant\u00edsima Trinidad <\/em>funcionando, el sistema se vuelve adictivo, por muchas advertencias hist\u00f3ricas que tengas en mente. Cada vez que te encuentras saltando entre pesta\u00f1as, copiando datos de una herramienta a otra, te preguntas si no habr\u00e1 un MCP que cierre ese hueco. Y, normalmente, lo hay. O, si no lo hay, lo escribes t\u00fa \u2014 el SDK de MCP en Python permite montar un servidor funcional en menos de cien l\u00edneas de c\u00f3digo. Estos son los tres MCPs adicionales que se han ganado un sitio fijo en mi entorno desde que dise\u00f1\u00e9 el esquema original.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Blender: modelado 3D y postproducci\u00f3n de v\u00eddeo<\/h3>\n\n\n\n<p>El MCP de Blender es probablemente el que ha tenido un impacto m\u00e1s espectacular en mi trabajo creativo, y al que ya le dediqu\u00e9 un art\u00edculo entero en <a href=\"https:\/\/bitacora.eniac2000.com\/?p=11815\">el proyecto del Teatro Romano de It\u00e1lica<\/a>. La idea es la siguiente: Blender es una herramienta extraordinariamente potente, pero su interfaz tiene una curva de aprendizaje brutal. Hay decenas de paneles, miles de operadores, un sistema de <em>shading<\/em> nodal que requiere paciencia, y una nomenclatura de ejes que es distinta a la de pr\u00e1cticamente cualquier otra herramienta 3D del mundo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"687\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/GUodQ-1024x687.jpg\" alt=\"\" class=\"wp-image-11846\" srcset=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/GUodQ-1024x687.jpg 1024w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/GUodQ-300x201.jpg 300w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/GUodQ-768x516.jpg 768w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/GUodQ.jpg 1168w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">MCP de Blender. Generado con IA<\/figcaption><\/figure>\n\n\n\n<p>Lo que el MCP hace es exponer la API de Python de Blender \u2014 que es muy completa, pr\u00e1cticamente cualquier cosa que se puede hacer con clicks se puede hacer con c\u00f3digo \u2014 como un conjunto de herramientas accesibles desde Claude Code. Y, lo que es igual de importante, permite a Claude tomar capturas del <em>viewport<\/em> para verificar visualmente que el resultado se corresponde con lo que se esperaba.<\/p>\n\n\n\n<p>Esto cambia completamente c\u00f3mo se trabaja con Blender. En el art\u00edculo de It\u00e1lica, por ejemplo, import\u00e9 un modelo fotogram\u00e9trico de 172.000 caras en coordenadas UTM, lo recort\u00e9 para quedarme solo con el teatro romano, configur\u00e9 iluminaci\u00f3n y c\u00e1mara, y gener\u00e9 cuatro renders distintos a 4K con trayectorias de c\u00e1mara complejas. <strong>No abr\u00ed Blender ni una sola vez<\/strong>. Todo se hizo desde Claude Code, con capturas intermedias del <em>viewport<\/em> para verificar cada paso. Lo que con la interfaz gr\u00e1fica me habr\u00eda llevado d\u00edas de fricciones se resolvi\u00f3 en una tarde de iteraciones.<\/p>\n\n\n\n<p>El uso no se limita a renderizado de modelos fotogram\u00e9tricos. Lo uso tambi\u00e9n para hacer maquetas r\u00e1pidas de visualizaci\u00f3n para art\u00edculos, para preparar escenas que se combinar\u00e1n con metraje real de dron, y para esquemas 3D que ilustran conceptos t\u00e9cnicos. Cuando necesito una imagen que no tengo, la modelo. Y cuando hay que mover una c\u00e1mara virtual por una escena, lo hago con la precisi\u00f3n matem\u00e1tica que ofrece el c\u00f3digo (curvas B\u00e9zier de cinco puntos, funci\u00f3n <em>smoothstep<\/em> para suavizar arranques y frenadas, <em>constraints<\/em> de tipo <em>Track To<\/em> que apuntan a un objetivo m\u00f3vil), no con el pulso aproximado del rat\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Google Colab: procesamiento masivo con GPU<\/h3>\n\n\n\n<p>El Mac Mini M4 es una m\u00e1quina extraordinaria, pero hay tareas para las que necesito m\u00e1s GPU. Entrenamiento de modelos personalizados, inferencia masiva sobre miles de im\u00e1genes, procesado de nube de puntos LiDAR con millones de muestras\u2026 son cargas que mi m\u00e1quina local no puede afrontar de manera razonable, o que tardar\u00edan d\u00edas en completar.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"687\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/qcXMU-1024x687.jpg\" alt=\"\" class=\"wp-image-11847\" srcset=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/qcXMU-1024x687.jpg 1024w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/qcXMU-300x201.jpg 300w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/qcXMU-768x516.jpg 768w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/qcXMU.jpg 1168w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">MCP de Google Colab. Generado con IA<\/figcaption><\/figure>\n\n\n\n<p>Google Colab resuelve esto con elegancia: te da acceso a GPUs (T4 en el plan gratuito, A100 o L4 en los planes de pago) a trav\u00e9s de cuadernos Jupyter que viven en la nube. El MCP de Colab que tengo conectado permite a Claude Code crear cuadernos, subir datos, ejecutar celdas, leer los resultados, y descargar los <em>outputs<\/em>. Todo desde la l\u00ednea de comandos.<\/p>\n\n\n\n<p>Un ejemplo t\u00edpico de uso es el de la detecci\u00f3n de objetos con YOLOv8 sobre lotes grandes de fotogramas de dron, como contaba en la serie de <a href=\"https:\/\/bitacora.eniac2000.com\/?series=fotogrametria-asistida-por-ia\" target=\"_blank\" rel=\"noreferrer noopener\">Fotogrametr\u00eda asistida por IA<\/a>. Hacerlo localmente lleva horas. En Colab, con una T4, son minutos. El flujo es:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Claude Code prepara los datos en local: lista de v\u00eddeos, modelo de YOLO ajustado, configuraci\u00f3n del <em>pipeline<\/em>.<\/li>\n\n\n\n<li>A trav\u00e9s del MCP, sube los archivos al Drive asociado a Colab y crea un cuaderno con el c\u00f3digo necesario.<\/li>\n\n\n\n<li>Lanza la ejecuci\u00f3n del cuaderno con la GPU activada y va monitorizando el progreso.<\/li>\n\n\n\n<li>Cuando termina, descarga los resultados (las detecciones, los <em>bounding boxes<\/em>, las im\u00e1genes anotadas) y los incorpora al proyecto local.<\/li>\n<\/ul>\n\n\n\n<p>El punto interesante es que esto no requiere que yo deje de trabajar en otra cosa. Es procesado as\u00edncrono, y Claude Code me avisa cuando hay resultados listos para revisar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Google Drive: documentaci\u00f3n automatizada de proyectos<\/h3>\n\n\n\n<p>El \u00faltimo MCP que se ha incorporado al stack es el de Google Drive, y es seguramente el menos espectacular pero el m\u00e1s \u00fatil en t\u00e9rminos de productividad cotidiana. Anthropic public\u00f3 un servidor MCP oficial para Drive desde el principio, y lo tengo conectado para dos cosas concretas: <strong>lectura de documentaci\u00f3n de referencia<\/strong> y <strong>escritura de documentaci\u00f3n generada<\/strong>.<\/p>\n\n\n\n<p>La lectura es el complemento natural de NotebookLM. NotebookLM es brillante para corpus estables, pero hay documentos que cambian a menudo (notas de reuniones, hojas de c\u00e1lculo con m\u00e9tricas, especificaciones <em>vivas<\/em>) para los que cargar y recargar en un <em>notebook<\/em> es un engorro. Con el MCP de Drive, Claude Code puede leer directamente la versi\u00f3n actual de cualquier documento accesible para m\u00ed en mi Drive personal.<\/p>\n\n\n\n<p>Pero el uso que realmente justifica el MCP es el de <strong>escritura<\/strong>. Cada proyecto t\u00e9cnico que monto genera, casi sin que me d\u00e9 cuenta, una cantidad considerable de documentaci\u00f3n: notas de decisiones de dise\u00f1o, registros de incidencias, listas de tareas, esquemas de arquitectura. Antes, todo esto viv\u00eda en archivos Markdown dispersos por el sistema de archivos, lo que erar susceptible de que determinada documentaci\u00f3n se perdiera o quedara desactualizada. Ahora, al cerrar una sesi\u00f3n de trabajo, le pido a Claude Code que actualice los documentos correspondientes en Drive: un resumen ejecutivo de lo que se ha hecho, un cambio en el documento de arquitectura si hemos tomado una decisi\u00f3n nueva, una entrada en el registro de cambios. Es la documentaci\u00f3n que siempre se tiene que mantener, y que nunca manten\u00eda, ahora mantenida sola.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">El esquema completo: c\u00f3mo encaja todo<\/h2>\n\n\n\n<p>Con los seis MCPs conectados, el esquema queda como sigue:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502                       MAC MINI M4                               \u2502\n\u2502                                                                 \u2502\n\u2502  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510     \u2502\n\u2502  \u2502           CLAUDE CODE (Orquestador \/ Host MCP)         \u2502     \u2502\n\u2502  \u2502       Edici\u00f3n de archivos \u00b7 Bash \u00b7 Git \u00b7 Tests         \u2502     \u2502\n\u2502  \u2514\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2518     \u2502\n\u2502     \u2502       \u2502       \u2502           \u2502           \u2502         \u2502         \u2502\n\u2502     \u2502 MCP   \u2502 MCP   \u2502 MCP       \u2502 MCP       \u2502 MCP     \u2502 MCP     \u2502\n\u2502     \u25bc       \u25bc       \u25bc           \u25bc           \u25bc         \u25bc         \u2502\n\u2502  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510   \u2502\n\u2502  \u2502 NLM  \u2502\u2502 GPT  \u2502\u2502 Blender\u2502\u2502 Colab   \u2502\u2502 Drive   \u2502\u2502 otros... \u2502   \u2502\n\u2502  \u2502 (PW) \u2502\u2502(HTTP)\u2502\u2502 (PyAPI)\u2502\u2502(HTTP+nb)\u2502\u2502(REST)   \u2502\u2502          \u2502   \u2502\n\u2502  \u2514\u2500\u2500\u252c\u2500\u2500\u2500\u2518\u2514\u2500\u2500\u252c\u2500\u2500\u2500\u2518\u2514\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2518\u2514\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2518\u2514\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2518\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518   \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n      \u2502       \u2502         \u2502         \u2502          \u2502\n      \u25bc       \u25bc         \u25bc         \u25bc          \u25bc\n   \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n   \u2502Note- \u2502\u2502OpenAI\u2502 \u2502Blender \u2502 \u2502Google   \u2502 \u2502Google    \u2502\n   \u2502bookLM\u2502\u2502 API  \u2502 \u2502(local) \u2502 \u2502Colab    \u2502 \u2502Drive     \u2502\n   \u2502(GCP) \u2502\u2502(GPT) \u2502 \u2502        \u2502 \u2502(GPU GCP)\u2502 \u2502(GCP)     \u2502\n   \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2518\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n   Memoria  Cerebro  3D + v\u00eddeo  GPU       Documentaci\u00f3n\n   est\u00e1tica alterno  + render    compute   versionada<\/code><\/pre>\n\n\n\n<p>El centro de gravedad sigue siendo Claude Code. Es quien decide qu\u00e9 herramienta usar para cada subtarea, quien sintetiza las salidas de unas en las entradas de otras, y quien al final escribe el c\u00f3digo y hace el commit. Los servidores MCP son los m\u00fasculos; Claude Code es la corteza prefrontal.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tres ventajas que justifican toda la complejidad<\/h2>\n\n\n\n<p>Conviene aqu\u00ed pararse a pensar qu\u00e9 se gana realmente con todo esto. Porque la complejidad operativa de tener seis MCPs conectados no es trivial: cada uno tiene su configuraci\u00f3n, sus credenciales, sus dependencias, sus posibles fallos. \u00bfVale la pena?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. El flujo de informaci\u00f3n se vuelve imbatible<\/h3>\n\n\n\n<p>La ventaja m\u00e1s obvia es la que ya he ido apuntando: eliminar el rol del humano como mensajero entre herramientas. Cuando le pides a Claude Code que \u00abbas\u00e1ndose en los est\u00e1ndares de seguridad de la empresa, le pida a ChatGPT que dise\u00f1e un esquema de autenticaci\u00f3n, y lo implemente en <code>auth.ts<\/code>\u00bb, lo que pasa por debajo es una orquestaci\u00f3n de tres sistemas que, sin MCP, requerir\u00edan tu intervenci\u00f3n manual al menos cuatro o cinco veces. Con MCP, requieren cero.<\/p>\n\n\n\n<p>El ahorro de tiempo es real, pero lo que m\u00e1s se nota es el ahorro de <em>contexto mental<\/em>. Mantener en la cabeza qu\u00e9 pesta\u00f1a tiene qu\u00e9 informaci\u00f3n, qu\u00e9 consulta hab\u00eda hecho en cu\u00e1l, qu\u00e9 versi\u00f3n de la respuesta era la buena\u2026 es una carga cognitiva considerable, y cuando desaparece, te das cuenta de cu\u00e1nto pesaba.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. La tensi\u00f3n entre \u00abgrounding\u00bb e innovaci\u00f3n se resuelve por arquitectura<\/h3>\n\n\n\n<p>Esta es, para m\u00ed, la ventaja conceptual m\u00e1s profunda. Cualquier proyecto de ingenier\u00eda real vive en una tensi\u00f3n constante entre dos fuerzas: por un lado, hay que respetar lo que ya existe (los est\u00e1ndares de la organizaci\u00f3n, las decisiones arquitect\u00f3nicas previas, las limitaciones de los sistemas <em>legacy<\/em>) y por otro, hay que innovar, encontrar soluciones nuevas, no quedarse atrapado en lo de siempre.<\/p>\n\n\n\n<p>Una IA conectada solo a documentaci\u00f3n corporativa es conservadora hasta el aburrimiento: te repite lo que ya est\u00e1 escrito. Una IA sin documentaci\u00f3n corporativa es brillante pero peligrosa: te propone soluciones t\u00e9cnicamente impecables que ignoran completamente el contexto en el que tienen que ejecutarse. El agente con la trinidad resuelve esto por <strong>dise\u00f1o arquitect\u00f3nico<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>NotebookLM mantiene al agente <em>anclado<\/em> en lo que la organizaci\u00f3n permite, requiere y tiene documentado.<\/li>\n\n\n\n<li>ChatGPT aporta la chispa de la soluci\u00f3n t\u00e9cnica moderna, sin contaminarse de las restricciones internas.<\/li>\n\n\n\n<li>Claude Code act\u00faa como \u00e1rbitro: toma las restricciones de uno, la propuesta del otro, y las combina en una implementaci\u00f3n concreta que respeta ambas dimensiones.<\/li>\n<\/ul>\n\n\n\n<p>No es magia. Funciona porque cada componente tiene un rol claro y delimitado, y porque el agente orquestador sabe cu\u00e1ndo consultar a cada uno.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Auditor\u00eda de c\u00f3digo continua e iterativa<\/h3>\n\n\n\n<p>El tercer beneficio se ve sobre todo en proyectos en los que la calidad del c\u00f3digo importa m\u00e1s que la velocidad de su producci\u00f3n. El flujo t\u00edpico es:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Claude escribe una funci\u00f3n.<\/li>\n\n\n\n<li>Claude pregunta v\u00eda MCP a ChatGPT: <em>\u00ab\u00bfHay vulnerabilidades en este c\u00f3digo? \u00bfCasos extremos no contemplados? \u00bfMejoras de rendimiento obvias?\u00bb<\/em><\/li>\n\n\n\n<li>Claude consulta NotebookLM: <em>\u00ab\u00bfEsta funci\u00f3n cumple la gu\u00eda de estilo corporativa? \u00bfHay precedentes en el c\u00f3digo existente de la organizaci\u00f3n?\u00bb<\/em><\/li>\n\n\n\n<li>Claude integra los <em>feedback<\/em> de ambos y refactoriza.<\/li>\n\n\n\n<li>Ejecuta los tests. Si fallan, vuelve a iterar.<\/li>\n<\/ol>\n\n\n\n<p>Esto, hecho a mano, ser\u00eda un proceso de medio d\u00eda por funci\u00f3n. Hecho por el agente, son tres o cuatro minutos. La diferencia no es solo de velocidad; es que <strong>se puede hacer siempre<\/strong>. Cuando una revisi\u00f3n exhaustiva cuesta cuatro minutos, no hay excusa para salt\u00e1rsela. Cuando cuesta medio d\u00eda, te la saltas tres de cada cuatro veces. La calidad media del c\u00f3digo sube de manera estructural.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lo que no es: tres advertencias importantes<\/h2>\n\n\n\n<p>Despu\u00e9s de varias semanas con el sistema en producci\u00f3n para mis proyectos personales, conviene ser claro tambi\u00e9n sobre lo que el Agente de Ingenier\u00eda Total <strong>no es<\/strong>, para evitar las expectativas equivocadas que veo a veces en quienes empiezan a explorar esto.<\/p>\n\n\n\n<p><strong>No es un sustituto del ingeniero.<\/strong> Es un multiplicador de productividad para ingenieros. La diferencia es importante: si no sabes leer c\u00f3digo, el agente te va a generar cosas que parecen correctas pero que pueden tener problemas sutiles que t\u00fa no detectar\u00e1s. Si no entiendes la arquitectura de tu sistema, el agente puede introducir decisiones que rompan invariantes que ni siquiera sab\u00edas que exist\u00edan. El humano sigue siendo responsable de las decisiones, y para serlo, tiene que entender lo que se est\u00e1 haciendo.<\/p>\n\n\n\n<p><strong>No es gratis.<\/strong> Los modelos de pago (Claude, GPT, Gemini) consumen tokens, y los tokens cuestan dinero. Una sesi\u00f3n intensa de trabajo con orquestaci\u00f3n entre varios modelos puede consumir varios euros en una tarde. Para uso personal es absolutamente asumible pero conviene saber que el modelo de uso ilimitado de los planes <em>flat<\/em> se aplica solo al modelo principal; cuando integras varios por API, pagas por consumo.<\/p>\n\n\n\n<p><strong>No es infalible.<\/strong> Los MCPs fallan. Las APIs tienen l\u00edmites de uso. Los modelos a veces alucinan. Los servidores MCP basados en Playwright son fr\u00e1giles ante cambios en la interfaz web que est\u00e1n automatizando. Hay que tener tolerancia a fallo en el flujo de trabajo, y conviene tener mecanismos manuales de respaldo para cuando algo se cae. En mi caso, mantengo un <em>fallback<\/em> documental para cada MCP: si NotebookLM no responde, s\u00e9 en qu\u00e9 carpeta de Drive est\u00e1n los PDFs originales para consultarlos directamente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reflexi\u00f3n final: la IA ag\u00e9ntica no es la IA del futuro, es la IA del presente<\/h2>\n\n\n\n<p>Cuando llevas un tiempo trabajando con este tipo de sistema, te das cuenta de que el paradigma de \u00abhablar con un chatbot\u00bb se siente ya extra\u00f1amente arcaico. Es como cuando uno se acostumbra a un IDE moderno y vuelve a un editor de texto plano: t\u00e9cnicamente todo funciona, pero hay una sensaci\u00f3n constante de estar haciendo a mano cosas que la m\u00e1quina deber\u00eda hacer por ti.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/copertina-renault-fuego-1024x576.webp\" alt=\"Renault Fuego Turbo. El paradigma de la innovaci\u00f3n de los 80.\" class=\"wp-image-11840\" srcset=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/copertina-renault-fuego-1024x576.webp 1024w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/copertina-renault-fuego-300x169.webp 300w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/copertina-renault-fuego-768x432.webp 768w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/copertina-renault-fuego-1536x864.webp 1536w, https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2026\/05\/copertina-renault-fuego.webp 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Renault Fuego Turbo. El paradigma de la innovaci\u00f3n de los 80. Pero no lo defender\u00edas como tal en 2026. S\u00ed, tiene LEDs y habla, pero&#8230; eso. Es de los 80.<\/figcaption><\/figure>\n\n\n\n<p>El MCP es, en este sentido, una de esas piezas de infraestructura que cambian las reglas del juego sin que se note demasiado, porque su valor no est\u00e1 en lo que hace directamente, sino en lo que habilita. No es <em>sexy<\/em>. No tiene una demo espectacular. Es un protocolo de mensajer\u00eda entre procesos. Pero, igual que TCP\/IP no es <em>sexy<\/em> y, sin embargo, sostiene todo lo dem\u00e1s, MCP est\u00e1 empezando a sostener una capa entera de la nueva forma de trabajar con IA. Y, una vez que lo tienes funcionando, no quieres volver atr\u00e1s.<\/p>\n\n\n\n<p>El Agente de Ingenier\u00eda Total no es un producto que se pueda comprar; es una <em>composici\u00f3n<\/em> que cada uno tiene que dise\u00f1ar para su flujo de trabajo concreto. Lo que yo he construido encaja con mis proyectos (fotogrametr\u00eda con drones, desarrollo de aplicaciones Android, administraci\u00f3n de sistemas, escritura t\u00e9cnica y de divulgaci\u00f3n) y se apoya en las herramientas que yo uso. El tuyo ser\u00e1 diferente: puede que necesites un MCP de Jira en lugar de Drive, uno de Datadog en lugar de Colab, uno de tu base de datos PostgreSQL en lugar de Blender. La gracia del est\u00e1ndar es precisamente que da igual: una vez entiendes el patr\u00f3n, lo puedes aplicar a cualquier combinaci\u00f3n de herramientas que uses.<\/p>\n\n\n\n<p>Si tuviera que dejar una sola recomendaci\u00f3n a quien est\u00e9 empezando, ser\u00eda esta: <strong>no esperes a tener la arquitectura perfecta<\/strong>. Conecta un MCP, el m\u00e1s \u00fatil para tu caso, y \u00fasalo durante una semana. Ver\u00e1s aparecer naturalmente el siguiente. Y el siguiente. El sistema crece por adici\u00f3n incremental, no por un dise\u00f1o cerrado de arriba a abajo. Y eso es, probablemente, lo m\u00e1s sano que puede tener una arquitectura t\u00e9cnica en 2026. \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Llevo unos meses d\u00e1ndole vueltas a una idea que ha<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1845,13],"tags":[1994,1984,1959,1989,1993,824,1983,1991,1992],"series":[],"class_list":["post-11810","post","type-post","status-publish","format-standard","hentry","category-generado-con-ia","category-informatica","tag-blender","tag-chatgpt","tag-claude-code","tag-google-colab","tag-google-drive","tag-ia","tag-mcp","tag-notebooklm","tag-santisima-trinidad"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/11810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11810"}],"version-history":[{"count":8,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/11810\/revisions"}],"predecessor-version":[{"id":11851,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/11810\/revisions\/11851"}],"wp:attachment":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11810"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=11810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}