POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Construye y Despliega un Servidor SSE MCP con OAuth en Rust

Construye y despliega un servidor SSE MCP con OAuth en Rust

Publicado el 02/09/2025

Los agentes de IA ya forman parte del flujo de trabajo moderno y, con servidores MCP basados en herramientas especializadas e integraciones, multiplican su valor. Para plataformas alojadas, un servidor MCP permite que tus usuarios interactúen con tus servicios mediante lenguaje natural. Imagina una plataforma de gestión de proyectos: en lugar de navegar por múltiples pantallas, el usuario autoriza el servidor MCP y crea tareas, actualiza estados o genera reportes con comandos conversacionales desde su cliente de IA favorito. En Q2BSTUDIO impulsamos este tipo de soluciones de software a medida y aplicaciones a medida con foco en inteligencia artificial, ciberseguridad y despliegues cloud escalables.

Este artículo explica cómo construir un servidor MCP con transporte SSE protegido con OAuth 2, compatible con clientes MCP como Cursor, Claude Desktop o Windsurf. Verás los patrones de autenticación, la integración con Rust y Axum, el uso de rmcp y la puesta en producción con Shuttle, además de buenas prácticas de seguridad y multiusuario para ia para empresas y agentes IA.

MCP ofrece dos tipos de transporte: STDIO y SSE. El primero corre como subproceso local y usa stdin/stdout. El segundo expone endpoints HTTP con Server Sent Events, ideal para servicios alojados y autenticación robusta con OAuth 2. En este tutorial nos centramos en un enfoque cloud con SSE y OAuth, perfecto para integrar con backends existentes y controlar el acceso de forma segura.

Para que los clientes MCP autoricen a sus agentes, el servidor debe implementar OAuth 2.1 y el estándar de descubrimiento RFC 8414. El flujo completo consta de cinco fases: 1 Descubrimiento de metadatos, 2 Registro del cliente, 3 Autorización con consentimiento del usuario, 4 Intercambio de código por tokens y 5 Acceso autenticado a los endpoints SSE protegidos.

Fase de descubrimiento: el cliente MCP consulta /.well-known/oauth-authorization-server para obtener el documento de metadatos con issuer, registration_endpoint, authorization_endpoint, token_endpoint, scopes y opcionalmente jwks_uri. Es imprescindible implementar este endpoint para que el cliente pueda iniciar la autenticación.

Fase de registro: el cliente MCP se registra enviando su información al registration_endpoint. El servidor valida y almacena los datos, devolviendo client_id y client_secret. Es recomendable generar secretos fuertes y definir un vencimiento para rotación periódica.

Fase de autorización: cuando el usuario pulsa en iniciar sesión desde su cliente MCP, se le redirige al authorization_endpoint para revisar los permisos solicitados y aprobar o denegar. Si aprueba, el servidor genera un authorization code y redirige al cliente con ese código y el state original. Con PKCE S256, el servidor almacena el code_challenge y posteriormente verificará el code_verifier.

Intercambio de tokens: el cliente MCP utiliza el authorization code para solicitar al token_endpoint un access_token y un refresh_token. El access_token identifica al cliente y al usuario en el servidor MCP; el refresh_token sirve para renovar el acceso sin volver a pedir consentimiento. Es buena práctica aplicar rotación de refresh tokens.

Acceso autenticado: el cliente MCP conecta a los endpoints SSE protegidos, por ejemplo /mcp/sse, incluyendo el access_token en la cabecera Authorization con esquema Bearer. El servidor valida el token en cada conexión y asocia el client_id y el usuario para ejecutar operaciones seguras.

Renovación de token: cuando el access_token expira, el cliente MCP envía un grant type refresh_token al token_endpoint para obtener uno nuevo. El mismo endpoint debe aceptar tanto authorization_code como refresh_token para cubrir el ciclo completo.

Implementación en Rust con Axum y rmcp: utilizarás la crate rmcp para construir el servidor MCP con transporte SSE y soporte de autenticación, Axum para el enrutado HTTP y Shuttle para el despliegue cloud. La base de datos recomendada es PostgreSQL con SQLx. Para depurar el protocolo, el MCP Inspector facilita probar cada fase del flujo OAuth y la conexión SSE.

Configuración de secretos: define BASE_URL y una clave JWT robusta para firmar y validar tokens. Mantén estos valores fuera del control de versiones y usa almacenes de secretos en producción. Con Shuttle, puedes separar archivos de secretos para desarrollo y despliegue.

Metadatos OAuth: el endpoint de metadatos debe anunciar issuer, registration_endpoint, authorization_endpoint, token_endpoint, scopes_supported y los campos adicionales para response_types_supported code y code_challenge_methods_supported S256. Así, los clientes MCP sabrán que tu servidor soporta Authorization Code con PKCE.

Registro de clientes: valida redirect_uris, genera client_id y client_secret, almacena todo en la base de datos y devuelve la respuesta con información de expiración y scope. Esto permite que múltiples clientes MCP se conecten a tu plataforma de software a medida con aislamiento por cliente.

Autorización con consentimiento: muestra una pantalla simple donde el usuario confirma los permisos solicitados. Al aceptar, genera un authorization code, almacénalo con client_id, redirect_uri y code_challenge, y redirige a la URI de retorno añadiendo el code y el state. En una app real, protege esta pantalla con la autenticación de tu plataforma.

Token endpoint con dos grants: authorization_code y refresh_token. Verifica código, PKCE y redenciones únicas, luego emite access_token JWT con claims sub client_id, iat, exp y scope, y refresh_token. Para refresh, valida el token de actualización y aplica rotación generando uno nuevo e invalidando el anterior.

Middleware JWT: en cada petición protegida, extrae el Bearer token, verifica firma y expiración, comprueba que el client_id exista en base de datos y adjúntalo al contexto de la solicitud para que los controladores y herramientas MCP identifiquen al cliente que ejecuta la acción.

Diseño del servicio MCP: implementa una estructura de servicio con el pool de base de datos, el enrutador de herramientas y un almacenamiento seguro del client_id. Dado que initialize del protocolo no recibe self mutable, utiliza interior mutability con Arc y Mutex para guardar el client_id tras la validación de la conexión SSE y reutilizarlo en las llamadas posteriores.

ServerHandler esencial: implementa get_info para anunciar versión del protocolo, capacidades y una breve descripción de tu servidor MCP, e implementa initialize para capturar el client_id desde las extensiones de la petición inicial y dejar la sesión autenticada durante toda la vida del stream SSE.

Herramientas MCP de ejemplo: crea herramientas como crear, listar, obtener, actualizar y eliminar todos. Cada operación debe filtrar por client_id para garantizar el aislamiento multicliente. Define los parámetros esperados y devuelve resultados bien formateados que el agente de IA pueda interpretar con JSON-RPC 2.0.

Integración del servidor SSE: configura un SseServer con rutas como sse_path en /mcp/sse y post_path en /mcp/message, aplica el middleware de validación JWT a esas rutas y registra tu servicio con with_service. Combina el router SSE protegido con las rutas públicas de OAuth en tu aplicación Axum y activa CORS si necesitas orígenes cruzados.

Despliegue y pruebas: con Shuttle puedes lanzar a producción con un solo comando de despliegue. Usa el MCP Inspector para validar metadatos, registro, autorización, obtención de tokens y, finalmente, establecer la conexión SSE con el header Authorization correcto. En clientes MCP como Cursor, configura la URL del servidor SSE y pulsa en iniciar sesión para completar el flujo.

Seguridad y buenas prácticas: aplica PKCE S256, rotación de refresh tokens, expiraciones razonables, validación de redirect_uris y protección de la UI de consentimiento tras login. Añade auditoría a eventos críticos, cifrado en tránsito y almacenamiento seguro de claves. No olvides contemplar pruebas de ciberseguridad y pentesting periódicas, fundamentales para proteger aplicaciones a medida y software a medida en escenarios multiusuario.

Q2BSTUDIO puede ayudarte a diseñar, implementar y escalar servidores MCP con agentes IA, integraciones seguras y despliegues en la nube. Somos especialistas en inteligencia artificial e ia para empresas, automatización de procesos, servicios cloud aws y azure, servicios inteligencia de negocio y power bi, y ciberseguridad integral para que tus soluciones alcancen producción con garantías. Si tu proyecto requiere arquitectura robusta y despliegue elástico, descubre nuestros servicios cloud aws y azure. Si buscas llevar tus productos al siguiente nivel con modelos de lenguaje y copilotos, visita nuestra página de inteligencia artificial.

Conclusión: con Rust, rmcp, Axum y Shuttle, puedes crear un servidor MCP SSE con OAuth 2 que ofrezca comunicación en tiempo real y control de acceso sólido. Este stack acelera desde prototipo hasta producción sin compromisos, aportando rendimiento, seguridad y una experiencia de desarrollo fluida. Centraliza identidades, monitoriza tus servicios y evoluciona tus herramientas para nuevos casos de negocio. La combinación de agentes IA con servicios cloud y seguridad by design te permitirá crear productos escalables, diferenciadores y listos para el mercado.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio