Skip to main content

Qué es un servidor MCP (visión avanzada)

Model Context Protocol (MCP) es una especificación que permite que los clientes de IA (Claude, Cursor, GitHub Copilot, etc.) y las aplicaciones se comuniquen mediante un protocolo estandarizado. MCP define tres primitivas principales. La ventaja de construir un servidor MCP con Laravel es que puedes reutilizar tal cual el ecosistema de Laravel: Eloquent, caché, autenticación, validación, etc.
Esta guía avanzada entra en detalles de implementación práctica. Para los conceptos básicos de MCP, consulta Nivel intermedio: Laravel MCP.

Instalación y configuración inicial

1

Instala el paquete

Instala el paquete con Composer.
2

Publica el archivo de rutas

Con vendor:publish genera routes/ai.php, donde se registran los servidores MCP.
3

Genera la clase del servidor

Crea la clase del servidor con un comando Artisan.
Registra las tools, resources y prompts en la clase generada app/Mcp/Servers/DatabaseServer.php.
4

Registra el servidor

Registra el servidor en routes/ai.php.
El servidor web se accede vía HTTP POST. El servidor local funciona como un comando Artisan y se usa para integrarlo con clientes de IA basados en CLI.

Implementación de tools

Las tools son funciones que la IA puede invocar. Puedes usar sin cambios el contenedor de servicios, la validación y Eloquent de Laravel.

Crear una tool

Implementa handle y schema en la clase generada.

Definir parámetros (schema)

En schema, usa el builder Illuminate\Contracts\JsonSchema\JsonSchema para declarar los parámetros aceptados.

Anotaciones de tool

Las anotaciones del protocolo MCP permiten a los clientes de IA valorar la seguridad de la tool.

Respuesta estructurada

Para devolver respuestas en JSON fácil de parsear por el cliente de IA, usa Response::structured.

Respuesta en streaming

Para procesos largos, devuelve un Generator para emitir progreso.
En un servidor web, la respuesta en streaming se envía automáticamente como un stream SSE (Server-Sent Events).

Registro condicional

Puedes exponer una tool solo a los usuarios que cumplan cierta condición.

Implementación de recursos

Los recursos son datos que la IA lee como contexto. Sirven para documentación, información de configuración o datos dinámicos.

Recurso estático

Recurso dinámico (plantilla URI)

Con una plantilla URI, puedes ofrecer recursos dinámicos según los parámetros de la URL.
El cliente de IA solicita el recurso con una URI como app://users/42/profile, y el valor de {userId} se obtiene con $request->get('userId').

Anotaciones de recurso

Puedes indicar la prioridad y la audiencia del recurso.

Implementación de prompts

Los prompts son plantillas reutilizables que puede usar el cliente de IA. Estandarizan consultas repetitivas o flujos de trabajo complejos.

Crear un prompt

Con asAssistant(), el mensaje se trata como si lo dijera el asistente de IA. Combinando prompts de sistema y mensajes de usuario, puedes controlar con detalle el comportamiento del modelo.

Autenticación y autorización

Autenticación por token con Sanctum

La forma más sencilla. El cliente MCP envía la cabecera Authorization: Bearer <token>.

Autenticación con OAuth 2.1

Para una autenticación más robusta, usa Laravel Passport.
Si usas OAuth, publica las vistas de autorización de MCP y configúralas en AppServiceProvider.

Autenticación con middleware personalizado

Si utilizas tokens propios, valida el Authorization con un middleware personalizado.

Autorización dentro de la tool

Dentro de handle de la tool o el recurso, usa $request->user() para hacer controles de autorización finos.
shouldRegister solo oculta la tool de la lista. Cuando la tool se invoca, la comprobación de autorización debe hacerse siempre dentro de handle.

Ejemplo práctico: tools de base de datos

Ejemplo completo de tools que buscan y crean datos usando Eloquent.

Clase servidor

Tool de búsqueda (solo lectura)

Tool de creación (escritura)

Ejemplo práctico: tool de manipulación de archivos

Ejemplo de tool que manipula archivos con la facade Storage.
En tools de manipulación de archivos, sanea siempre las rutas y evita accesos fuera de directorios permitidos. Rechaza rutas que contengan ...

Pruebas

Puedes escribir tests unitarios para servidores, tools, recursos y prompts MCP con las funcionalidades de test estándar de Laravel.

Test de una tool

Con Server::tool() invocas la tool directamente para testearla.

Test de recursos y prompts

Principales métodos de aserción

Depuración con MCP Inspector

Para depuración interactiva, usa MCP Inspector.

Consideraciones de despliegue

HTTP streaming y SSE

Si vas a usar respuestas en streaming (Generator) en el servidor web, revisa la configuración del servidor.

Combinación con Laravel Octane

Para servidores MCP de alto tráfico, considera Laravel Octane (FrankenPHP o Swoole). Reduce drásticamente la sobrecarga por petición.
Con Octane, el estado se comparte entre peticiones. No uses propiedades estáticas ni estado global dentro de las tools.

Rate limiting

Limita las peticiones al servidor MCP con el middleware throttle.

Caché

Para tools de solo lectura llamadas con frecuencia, usa caché.

Logs y monitorización

Registrar las llamadas a las tools MCP te permite entender cómo las usan los clientes de IA.
En producción, se recomienda monitorizar el rendimiento y las excepciones del servidor MCP con Laravel Telescope o Sentry.
Última modificación el 13 de julio de 2026