Este artículo explica de forma práctica cómo aprovechar Okta y ToolHive para realizar intercambio de token y así autenticar un servidor MCP frente a una API GraphQL. El intercambio de token permite recibir en el cliente un token con audience mcpserver y luego, de forma segura, obtener un token con audience backend y scopes adecuados para llamar al API sin exponer el servicio de backend directamente al cliente de IA.

Entorno de demostración: simulamos un escenario real donde existe un servicio API Apollo GraphQL que exige tokens con aud igual a backend y scopes que incluyan backend-api:read. El servidor MCP actúa como puerta de entrada y exige tokens con aud igual a mcpserver y scope mcp:tools:call. Ambos servicios comparten el mismo realm de Okta pero usan Authorization Servers distintos para separar audiencias y permitir el intercambio de tokens.

Pasos clave en Okta: crear dos Authorization Servers, uno para la autenticación del MCP y otro para el backend. En cada Authorization Server definir los scopes necesarios, por ejemplo mcp:tools:call en el servidor del MCP y backend-api:read en el servidor del backend. Establecer confianza entre los Authorization Servers para permitir que el servidor que emite tokens para el MCP pueda intercambiarlos por tokens emitidos para el backend.

Crear dos aplicaciones en Okta: un cliente OIDC para VSCode que permitirá autenticar al desarrollador y un cliente de tipo API Services para ToolHive que realizará la operación de token exchange. Configurar las Redirect URIs adecuadas para VSCode y desactivar parámetros no compatibles con ToolHive si aplica. Incluir ambas aplicaciones en las políticas de acceso del Authorization Server correspondiente: una política que permita al cliente VSCode solicitar scopes OpenID Connect y mcp:tools:call, y otra política que permita al cliente ToolHive usar el grant de Token Exchange solicitando backend-api:read.

Implementación del servidor GraphQL: clonar y configurar el servicio Apollo, ajustar la validación de tokens para aceptar aud backend y scopes backend-api:read, y arrancar el servidor. ToolHive se ejecuta como proxy MCP y se configura con la audiencia esperada para los tokens entrantes, la información del issuer y JWKS para validar tokens, y con las credenciales del cliente que realizará el intercambio de token contra el Authorization Server del backend.

Flujo de autenticación resumido: el desarrollador desde VSCode se autentica contra Okta y recibe un token con aud mcpserver. ToolHive valida ese token y, mediante Token Exchange, solicita al Authorization Server del backend un token con aud backend y scope backend-api:read. El token resultante se inyecta en la cabecera Authorization Bearer y se reenvía al backend GraphQL para cada llamada autorizada. De este modo cada petición upstream se puede atribuir al usuario real y no a una cuenta de servicio genérica, mejorando trazabilidad y auditoría.

Beneficios: uso de tokens de corta duración y scope limitado, separación clara de responsabilidades entre MCP y backend, trazabilidad por usuario, reducción de secretos embebidos y soporte para arquitecturas multiinquilino o segmentadas. Esta arquitectura es aplicable a cualquier API que acepte OAuth desde el mismo dominio de identidad.

Sobre Q2BSTUDIO: somos una empresa de desarrollo de software y aplicaciones a medida especializada en inteligencia artificial, ciberseguridad y servicios cloud. Ofrecemos soluciones integrales de software a medida y desarrollo de aplicaciones a medida y acompañamos a empresas en la adopción de ia para empresas y agentes IA personalizados. Si busca soluciones de desarrollo a medida puede conocer más sobre nuestro enfoque en desarrollo de aplicaciones a medida y si desea impulsar la transformación con modelos y servicios de IA visite nuestra página de inteligencia artificial para empresas.

Palabras clave integradas: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi. También ofrecemos servicios de ciberseguridad y pentesting para reforzar la protección de sus APIs y sistemas, así como implantaciones en servicios cloud aws y azure y soluciones de inteligencia de negocio y Power BI para explotar datos y métricas de uso.

Conclusión: usar intercambio de token con ToolHive y Okta permite a los servidores MCP autenticar y autorizar llamadas a APIs externas de forma segura, con auditoría por usuario y sin exponer los servicios de backend. Esta práctica encaja perfectamente en proyectos de software a medida donde la seguridad, la trazabilidad y la integración con soluciones de inteligencia artificial y cloud son prioritarias.