El Futuro de los Agentes: Conociendo A2A y MCP

¡Bienvenidos a Construyendo a Chispas! Hoy exploramos una de las tendencias más emocionantes en el mundo de la inteligencia artificial: el futuro de los agentes. Cada vez más, la IA se está orientando hacia el uso de agentes capaces de realizar diversas tareas de manera autónoma, con el objetivo de facilitarnos la vida.

Pero para que esta revolución funcione, necesitamos algo fundamental: estándares y protocolos que definan cómo deben comunicarse estos agentes entre sí y con nuestras herramientas. Hoy vamos a hablar de dos de esos protocolos, que no solo son innovadores, sino que además se complementan perfectamente: A2A de Google y MCP de Anthropic.

Para información en mayor detalle puedes ver el siguiente vídeo:

¿Qué es A2A?

A2A (Agent-to-Agent) es el protocolo de Google diseñado para facilitar la comunicación entre agentes y también entre usuarios y agentes. Está pensado para entornos profesionales y construido sobre estándares de seguridad y autenticación ya existentes.

Entre sus características más destacadas:

  • Multimodalidad: soporta entradas de audio, texto, vídeo, o cualquier otro formato. Es totalmente agnóstico respecto al tipo de contenido.
  • Comunicación asíncrona: ideal para tareas que pueden tardar desde minutos hasta horas en completarse.
  • Tres actores principales:
    • Usuario: quien solicita la tarea.
    • Cliente: el software que realiza la comunicación.
    • Agente remoto: quien ejecuta la tarea.

La comunicación en A2A se estructura alrededor de tareas (tasks), que incluyen:

  • Mensajes: el intercambio tipo chat entre usuario y agente.
  • Artefactos: los resultados generados (como ficheros HTML, imágenes, etc.).
  • Estado de la tarea: que permite conocer en todo momento si la tarea está en proceso, completada o ha fallado.

Además, A2A introduce un mecanismo de descubrimiento de agentes usando archivos Model Card, que describen capacidades, versiones y direcciones de los agentes, y permiten localizarlos en tiendas públicas o privadas, ¡igual que una app store, pero para agentes de IA!

¿Qué es MCP?

Por otro lado, tenemos MCP (Model Contest Protocol) de Anthropic, que se centra en permitir que los agentes usen recursos y herramientas que tenemos disponibles, tanto locales como remotos.

En MCP participan:

  • Host: el modelo de lenguaje o IA que quiere acceder a los recursos.
  • Cliente: la aplicación que conecta el host y el servidor.
  • Servidor: el sistema instalado en tu máquina que gestiona qué recursos están disponibles.

MCP maneja diferentes tipos de mensajes (peticiones, resultados, errores y notificaciones) y ofrece cinco tipos de recursos:

  • Recursos: ficheros, documentos, imágenes.
  • Prompts: plantillas de prompts específicas para ciertas tareas.
  • Tools: APIs o herramientas con las que interactuar.
  • Sampling: peticiones de continuación de texto al agente.
  • Roots: recursos que el agente considera relevantes .

¿Cómo trabajan juntos A2A y MCP?

Imagina que quieres crear una página web. Gracias a A2A, puedes buscar un agente especializado en diseño web mediante su Model Card. Este agente, a su vez, puede colaborar con otros agentes para generar imágenes, escribir contenido o diseñar la estructura.

Con MCP, puedes darle a los agentes acceso a los documentos que contienen el contenido de la web o permitirles publicar el resultado directamente en tu servidor.

El trabajo entre ambos protocolos te permite no solo buscar agentes adecuados, sino también equiparlos con los recursos que necesitan para trabajar de forma eficiente y autónoma.

El futuro ya está aquí

Estos protocolos, aún en sus primeras versiones, marcan el inicio de un futuro donde podríamos tener nuestro propio «Jarvis» en casa: un asistente capaz de coordinar múltiples agentes para resolver nuestras necesidades cotidianas.

Sea cual sea el camino que tome esta tecnología, desde Construyendo a Chispas seguiremos contándote las novedades.

DLLM. Modelos de lenguaje con difusión.

En el mundo de la inteligencia artificial, escuchar que algo puede revolucionarlo todo es casi rutina. Sin embargo, esta innovación realmente podría marcar un antes y un después en cómo funcionan los modelos de lenguaje: los Modelos de Lenguaje con Difusión (Diffusion LLMs).

Puedes ver el vídeo para más información

¿Qué es un modelo de difusión?

Para entender esta nueva idea, hay que mirar atrás. Los modelos de difusión clásicos, como Stable Diffusion, se entrenan para limpiar ruido de imágenes de forma progresiva, guiados por un texto (prompt). Este proceso ocurre en el espacio latente y es dirigido por una red llamada UNet.

Todo cambió cuando se sustituyó esa UNet por un transformer, el mismo tipo de arquitectura que usan los modelos de lenguaje actuales. Así nació un nuevo enfoque: enseñar a transformers a eliminar ruido. ¿La clave? Estos modelos pueden generar contenido de manera no secuencial.

¿Y si aplicamos esta idea al texto?

Aquí está lo revolucionario. En vez de generar texto palabra por palabra (como hacen los LLMs tradicionales), los modelos de lenguaje con difusión generan todo el texto a la vez. Todas las palabras influyen en las demás desde el inicio, una forma más parecida a cómo pensamos los humanos.

Al no poder crear tokens de texto con ruido se crea una máscara con una entrada para token, que indica si el token es válido (desenmascarado) o ruidoso (en mascarado). Técnicamente, el proceso comienza con todos los tokens del texto enmascarados. Luego, en varias iteraciones, el modelo va desenmascarando aquellos tokens que considera más probables. Incluso puede volver a enmascarar tokens ya revelados para mejorar la coherencia general.

¿Qué modelos existen hoy?

Actualmente hay tres modelos destacados que usan esta técnica:

  1. Mercury (Inception Labs)
    Especializado en generación de código. Es privado. Presume de su velocidad generando código frente a los LLM clásicos.
  2. LLaDA 8B
    Un modelo open source con 8.000 millones de parámetros. Tiene versión base e instruct (esta última preparada para seguir instrucciones, como en un chat). LLaDA utiliza un transformer bidireccional y un proceso iterativo de enmascarado y desenmascarado. Curiosamente, el número de iteraciones es fijo, sin importar la longitud del texto, lo que puede suponer ventajas en velocidad, aunque también plantea retos con textos largos.
  3. Block Diffusion
    Una propuesta híbrida: aplicar el proceso de difusión por bloques de tokens. Dentro de cada bloque se aplica la lógica de difusión; entre bloques, se mantiene una estructura más parecida a los LLM clásicos. Aunque esta implementación es conservadora (usa bloques pequeños y sin que se puedan volver a enmascarar tokens), tiene un gran potencial, especialmente si se amplía a párrafos u otras unidades mayores.

Pros y contras:

Los modelos de lenguaje con difusión (DLLM) presentan algunas ventajas claras frente a los LLM tradicionales. Al generar todo el texto a la vez en lugar de palabra por palabra, los DLLM pueden lograr una mayor coherencia global, ya que todas las palabras se ajustan mutuamente durante el proceso. Esto se acerca más a cómo razonamos y escribimos los humanos. Además, al tener un número fijo de iteraciones, pueden ser más rápidos en tareas cortas y permiten un razonamiento más flexible en el espacio latente. Sin embargo, también tienen limitaciones: su entrenamiento y optimización todavía están en fases tempranas, carecen de las mejoras acumuladas que ya existen para los LLM, y su rendimiento puede degradarse con textos largos. Además, es más difícil reutilizar cálculos entre iteraciones, lo que puede afectar a su eficiencia en comparación con los modelos tradicionales altamente optimizados.

¿Qué futuro tienen?

Estos modelos podrían integrarse mejor en sistemas multimodales (que combinan texto, imagen, sonido…) y ofrecen nuevas posibilidades para tareas complejas como el razonamiento. Eso sí, todavía estamos dando los primeros pasos. Los LLMs tradicionales están muy optimizados, y cambiar de paradigma implica reaprender muchos procesos.

Un dato curioso: los creadores de LLaDA observaron que el modelo a veces puede generar la respuesta correcta antes de completar todo el razonamiento. Los tokens aún enmascarados ya contienen información útil, lo que sugiere que el razonamiento está ocurriendo en un plano latente.

¿Qué es el Vibe Coding y cómo hacerlo bien?

Hoy quiero confesaros algo. Cuando empecé a planear este contenido, pensaba criticar el vibe coding. Sin embargo, tras reflexionar un poco, me he dado cuenta de que el problema no es la técnica en sí, sino cómo se aplica. De hecho, el vibe coding puede ser una herramienta muy útil si se usa correctamente. Así que, en vez de criticarlo, hoy os voy a contar cómo sacarle partido, tanto si tenéis mucha experiencia programando como si estáis empezando.

¿Qué es el Vibe Coding?

El término vibe coding viene a significar «programar por vibras». Imaginad al protagonista de El Gran Lebowski programando: te sientas con una IA, le pides algo, ajustas lo que genera, vuelves a pedir cambios… todo de forma informal. ¿Funciona? Bueno, depende del tipo de proyecto que quieras desarrollar.

Hay quienes dicen que ya no necesitamos programadores, solo ideas y una IA. Pero como alguien que lleva más de 20 años en esto, os aseguro que esa frase la he escuchado muchas veces antes: con la programación visual, los generadores automáticos, el low code, y ahora con la inteligencia artificial. Y aquí sigo, picando líneas y líneas de código para poner un botón.

Origen del término y su auge

El término fue popularizado por Andrej Karpathy, un experto en IA que ha trabajado para Tesla y OpenAI. En uno de sus tweets hablaba maravillas del vibe coding… pero matizaba: lo ve útil para webs o proyectos de fin de semana, no para montar un SaaS (Software as a Service).

Además, el auge del vibe coding viene de la mejora brutal en los modelos de lenguaje. Ahora son capaces de programar un Tetris, un Comecocos o un Snake y estos ejemplos resultan impresionantes para la mayoría de la gente, pero hay que tener en cuenta que literalmente son ejercicios que se realizan en clase mientras estudias informática. Un proyecto real puede tener cientos de miles de líneas de código y muchos más retos.

Programar es mucho más que escribir código

Pensad en esto: aunque la IA os haga un SaaS que parece funcional, ¿habéis pensado en temas como la protección de datos? ¿La gestión de compras y devoluciones? ¿Compatibilidad en distintos dispositivos? ¿Pruebas? ¿Seguridad? Programar es mucho más que escribir código.

Por eso, si quieres montar algo serio, rodéate de expertos. Y no te fíes de campañas virales que prometen miles de dólares al mes con juegos feos hechos por IA. Incluso quienes presumen de usar vibe coding al 100%, terminan permitiendo modificaciones humanas.

Cómo usar el Vibe Coding correctamente

Si quieres aplicar esta técnica de forma eficaz, aquí tienes los pasos clave:

  1. Elige bien tus tecnologías. Cuanto mejor las conozcas, más fácil será guiar a la IA.
  2. Evalúa si realmente necesitas una app. A veces una hoja de cálculo basta.
  3. Control de versiones. Usa Git o, si no sabes, guarda cada versión generada con fecha.
  4. Haz una lista de funcionalidades. Divide tu app en versiones y fases claras.
  5. Crea una arquitectura limpia. Separar controladores, servicios y datos te permitirá delegar mejor a la IA.
  6. Desarrolla por tareas. Describe cada una en un prompt, revisa el resultado, testea y guarda.
  7. Pon límites a la IA. Si una tarea no se resuelve tras varios intentos, decide si continuar o revertir.
  8. Automatiza donde puedas. Pero también aprende cuándo intervenir a mano.

El flujo de trabajo en Vibe Coding: paso a paso

Una de las claves para que el vibe coding funcione realmente bien es organizarse con un flujo claro. No se trata solo de pedirle cosas a la IA y esperar milagros, sino de establecer un proceso iterativo y controlado. Este sería un flujo básico que puedes seguir:

1. Crear una lista de tareas

Antes de escribir ni una línea de código, define qué funcionalidades debe tener tu aplicación. Divide esas funcionalidades en tareas pequeñas y manejables. Por ejemplo:

  • Mostrar lista de usuarios
  • Añadir nuevo usuario
  • Validar email al registrarse

Esta lista puede estar escrita por ti o generada inicialmente con ayuda de una IA.

2. Redactar prompts para cada tarea

Para cada una de esas tareas, redacta un prompt claro que describa lo que quieres. Sé específico.

Puedes añadir condiciones, estructuras de datos, objetos o interfaces previamente definidas.

3. Evaluar si el código generado funciona

Una vez la IA te devuelve el código:

  • Si es un lenguaje compilado: comprueba si compila y arranca.
  • Si es interpretado: simplemente ejecútalo y observa si arranca correctamente.

4. Corregir errores si no funciona

Si da error, copia ese error y pásaselo a la IA junto con el código.

La IA intentará corregirlo. Puedes repetir este paso varias veces, pero pon un límite de intentos para no quedarte atrapado en un bucle infinito.

5. Testear el código

Cuando el código ya «funciona», toca comprobar si hace lo correcto.

  • Ideal: tener tests automáticos definidos.
  • Alternativa: probar a mano, pero siempre siguiendo un guión claro de qué debería pasar.

6. Guardar versiones que funcionen

Cada vez que una funcionalidad funciona y pasa los tests, guárdala.

  • Si usas Git, haz un commit.
  • Si no sabes usar Git, guarda el archivo en una carpeta con fecha/nombre descriptivo.

Esto es importante porque la IA, a veces, rompe cosas que antes funcionaban y luego no sabe repararlas. Tener una versión estable te permite comparar y recuperar fácilmente.

7. Si no se puede resolver una tarea…

A veces la IA no logra resolver una tarea, por más intentos que hagas.

En ese caso, tienes dos opciones:

  • Guardar el progreso parcial si la app sigue funcionando. Aunque sea de forma incorrecta
  • Revertir a una versión anterior y dejar esa tarea para después.

La idea es no frenar todo el proyecto por una sola parte atascada.

Un ejemplo real

En mi día a día, uso un sistema híbrido: tengo un motor de plantillas que genera parte del código con IA y parte de forma clásica. Desde SQL hasta controladores web, todo está dividido por capas, lo que me permite testear fácilmente y generar componentes reutilizables.

Eso sí, hay límites: en el frontend, por ejemplo, todavía no logro que la IA respete del todo los estilos y convenciones, así que prefiero crear esqueletos básicos que luego el programador humano completa.


Conclusión

El vibe coding no es magia, pero tampoco es humo. Si se hace bien, puede acelerar el desarrollo, sobre todo para tareas repetitivas o proyectos pequeños. Pero para crear productos reales, sólidos y mantenibles, hace falta mucho más que IA: hace falta conocimiento, planificación y buen criterio.

¿Te animas a probarlo?