Pongo las cartas sobre la mesa antes de que se enfríe el café: lo que más asusta del titular de laravel/mcp 1.0, la eliminación de las sesiones del lado del servidor, es para nosotros la parte más fácil de la actualización. Lo que va a decidir si los agentes hacen algo útil contra tu aplicación es el catálogo de herramientas, y eso llega con un comportamiento por defecto que puedes ignorar tranquilamente. Creo que ignorarlo es el verdadero error que esconde esta versión.
Empecemos por las sesiones, porque ahí es donde vive la ansiedad. El paquete habla ahora la revisión 2026-07-28 de MCP, y en esa revisión no existe una conversación que el servidor recuerde entre llamadas. $request->sessionId() y $request->setSessionId() desaparecen, y SessionInitialized también. Si guardabas una consulta costosa o un recuento de los pasos del agente asociado a un ID de sesión, ese código deja de compilar en tu cabeza en cuanto lees el changelog. Normal. Ahora piensa en lo que PHP lleva haciendo desde antes de que la mayoría escribiéramos nuestro primer foreach: cada petición arranca, hace su trabajo y lo olvida todo. Hemos construido carreras enteras sobre esa amnesia. Colas, Redis, un ID de correlación en el payload, una fila en una tabla indexada por algo que el cliente te devuelve. Esa caja de herramientas ya está en tu carpeta vendor.
Así que, para un equipo de Laravel, la migración en la práctica es esta. Buscas los métodos eliminados en el directorio app, y cada resultado se convierte en una pequeña pregunta de diseño: ¿qué identificador necesita enviarme el agente para que yo encuentre mis propias notas? Casi siempre la respuesta es un ID de trabajo o de informe que ya estabas generando. He visto equipos de otros ecosistemas dedicar un esfuerzo considerable a añadir enrutamiento persistente (sticky routing) a sus procesos de larga duración; la gente de Go, hay que reconocerlo, también suele recurrir pronto a IDs explícitos, y da gusto ver que el protocolo se decanta por el enfoque en el que ambos bandos ya confiaban. A tu balanceador de carga deja de importarle qué máquina responde. Eso es un regalo.
Los clientes más antiguos tampoco se van a caer por un precipicio. La versión sigue reconociendo las revisiones 2025-06-18 y 2025-11-25 para los clientes que llegan a la antigua, algo importante si apuntan a tu servidor agentes que no controlas. Prueba ese camino por separado. Es el tipo de código de compatibilidad que funciona el día del lanzamiento y se pudre antes de Navidad si nada lo ejercita.
Y ahora la parte que de verdad quiero que te quite el sueño. La 1.0 permite que un agente encuentre herramientas mediante search_tools y execute_tools en lugar de recibir todo tu inventario de entrada. Imagina la típica aplicación de administración interna en la que acabo metido: una treintena de herramientas, la mitad con nombres que son variaciones de GetOrder, FindOrder, OrderLookup, cada una con un párrafo de descripción y un JSON schema bien gordo. Cada conexión paga todo eso en contexto antes de que el modelo haya escrito un solo token de trabajo útil, y luego el modelo tiene que elegir la correcta en una rueda de reconocimiento llena de casi gemelas. Se equivoca más de lo que te gustaría, y acabas culpando al modelo de un menú que diseñaste tú.
El servidor MCP de Statamic tomó la decisión que me gustaría ver convertida en norma: tres herramientas visibles al conectarse y las ocho restantes accesibles mediante búsqueda. Es una decisión de producto, del mismo tipo que tomas cuando decides qué va en la barra de navegación y qué se queda en la configuración. Alguien tiene que hacerse cargo. En la mayoría de los equipos que conozco nadie lo hará, porque el comportamiento antiguo sigue funcionando y ningún test se pone en rojo cuando un agente quema un tercio de su contexto leyendo descripciones de herramientas que nunca llama. Añade las nuevas pistas de caché a lo estático, como tablas de referencia y descripciones de esquemas, y encima te ahorras idas y vueltas repetidas.
Un apunte rápido sobre autenticación para que no te pille por sorpresa: PKCE ahora es obligatorio, y si un servidor de autorización de terceros no anuncia code_challenge_methods_supported en sus metadatos, redirect() lanzará una excepción en lugar de seguir adelante. Dynamic Client Registration queda obsoleto en favor de Client ID Metadata Documents. Obsoleto todavía significa que hoy funciona, así que mete el cambio en tu hoja de ruta y hazlo un martes aburrido, no la semana en que llegue su eliminación.
Aquí es donde me gustaría leerte, porque tengo una opinión firme y pocos datos. Cuando divides tus herramientas entre lo que un agente ve al conectarse y lo que tiene que buscar, ¿qué regla usas? ¿Las más llamadas, las más peligrosas, las más ambiguas, algo ligado a los roles de usuario? Cuéntame cómo trazaste esa línea en una aplicación real y si el agente mejoró o simplemente cambió.




Comentarios
Aún no hay comentarios — escribe el primero.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
¿No llega nada? Mira en la carpeta de spam — y marca el correo como «No es spam» para que la próxima vez llegue directo.