Implementación de un servidor BigQuery MCP autenticado por Okta en Kubernetes con ToolHive

Implementa un servidor BigQuery MCP autenticado por Okta en Kubernetes de forma sencilla con ToolHive. Optimiza tu gestión de datos en la nube de manera segura.

miércoles, 19 de noviembre de 2025 • 4 min de lectura • Equip Q2BSTUDIO

Implementar servidor BigQuery MCP autenticado por Okta en Kubernetes con ToolHive

En el artículo anterior expliqué cómo conectar la autenticación de Okta a un servidor BigQuery MCP ejecutándose de forma local; ahora transformamos ese prototipo en una implementación lista para producción, nativa en la nube, ejecutada sobre Kubernetes, asegurada con Okta y gestionada de extremo a extremo por el operador ToolHive. Además haremos que sea accesible de forma remota mediante ngrok para que puedas conectarte desde cualquier lugar usando VS Code.

Requisitos previos: un clúster de Kubernetes (puedes usar kind para pruebas), junto con kubectl y helm instalados. Necesitas una cuenta de Okta con un authorization server configurado, y un proyecto en Google Cloud con BigQuery habilitado. Configura Workload Identity Federation en tu proyecto de Google Cloud para que Google confíe en tokens emitidos por Okta y pueda entregar credenciales temporales para acceder a BigQuery. Finalmente instala la CLI de ToolHive thv y crea una cuenta en ngrok para exponer más adelante el servicio.

Despliegue del operador ToolHive: crea un clúster local con kind por ejemplo con el comando kind create cluster --name toolhive y a continuación instala los CRD y el operador con helm upgrade --install toolhive-operator-crds oci://ghcr.io/stacklok/toolhive/toolhive-operator-crds y helm upgrade --install toolhive-operator oci://ghcr.io/stacklok/toolhive/toolhive-operator --namespace toolhive-system --create-namespace. Comprueba que el operador esté en ejecución con kubectl get pods -n toolhive-system.

Almacenamiento seguro del secreto de Okta: en lugar de incrustar secretos, crea un Secret de Kubernetes que contenga tu client secret de Okta y aplícalo con kubectl apply. ToolHive leerá ese secreto para que el proxy valide tokens entrantes sin exponer credenciales en texto plano.

Configuración del intercambio de tokens: para permitir que Okta intercambie su token por credenciales de Google Cloud hay que crear un MCPExternalAuthConfig que apunte al endpoint de Security Token Service de Google. Ese recurso indica a ToolHive cómo solicitar tokens de acceso a BigQuery usando audience y subjectTokenType id_token, y qué scopes son necesarios como https://www.googleapis.com/auth/bigquery y https://www.googleapis.com/auth/cloud-platform. Aplica la configuración con kubectl apply -f.

Despliegue del servidor MCP para BigQuery: crea un recurso MCPServer que combine la imagen del servidor, variables de entorno como el identificador del proyecto GCP, la configuración OIDC con issuer y clientId, la referencia al secret de Okta y la referencia al externalAuthConfig que gestiona el token exchange. El servidor y el proxy serán gestionados por Kubernetes y el operador ToolHive. Exponemos un endpoint público resourceURL que luego enlazaremos con ngrok para acceso remoto.

Exponer el servicio públicamente: primero realiza un port-forward al proxy localmente con kubectl port-forward -n default svc/NOMBRE_DEL_PROXY 8000:8000 para tener acceso en https://127.0.0.1:8000. Luego abre un túnel seguro con la CLI thv proxy tunnel https://127.0.0.1:8000 tunnel --tunnel-provider ngrok --provider-args con tu auth token de ngrok y el dominio deseado. ToolHive creará el túnel y te mostrará la URL pública que usarás como resourceUrl en el MCPServer.

Verificación: comprueba que ambos pods del MCP estén en estado Running con kubectl get pods -n default -l toolhive-name=NOMBRE_DEL_MCP y revisa los logs del proxy con kubectl logs para observar la validación de tokens y el intercambio con STS. Una vez todo en marcha podrás conectar desde VS Code usando la configuración MCP y la URL pública proporcionada por ngrok; durante el flujo se solicitarán client id y client secret de la aplicación en Okta para completar el flujo OIDC y obtener autorización para acceder a BigQuery.

Beneficios de esta aproximación: evitas gestionar claves de cuentas de servicio de Google a largo plazo, habilitas credenciales de corta duración y con atribución a usuario, cumples el principio de menor privilegio y obtienes un despliegue escalable y gestionado por Kubernetes. ToolHive simplifica el ciclo de vida de las instancias MCP, incluyendo actualizaciones y el proxy seguro que valida tokens.

Sobre Q2BSTUDIO: en Q2BSTUDIO somos una empresa de desarrollo de software que crea aplicaciones a medida y soluciones de software a medida adaptadas a las necesidades de cada cliente. Ofrecemos experiencia en inteligencia artificial y servicios para ia para empresas, agentes IA y soluciones de inteligencia de negocio como Power BI. Si tu proyecto requiere una app personalizada acorde a tu flujo de negocio consulta nuestra propuesta en desarrollo de aplicaciones y software multiplataforma y si necesitas migrar o gestionar infraestructuras cloud revisa nuestros servicios en servicios cloud AWS y Azure. También brindamos servicios de ciberseguridad y pentesting, automatización de procesos y consultoría en inteligencia artificial para empresas que quieren adoptar agentes IA o soluciones avanzadas de análisis.

Conclusión: convertir un prototipo local con autenticación Okta en un despliegue productivo en Kubernetes requiere coordinar Okta, Workload Identity Federation de Google, el operador ToolHive y un túnel seguro cuando necesitas acceso remoto. El resultado es un servidor BigQuery MCP seguro, escalable y fácil de gestionar que mejora los flujos de trabajo de desarrollo remoto y protege las credenciales. Si te interesa que desde Q2BSTUDIO implementemos este tipo de arquitecturas o integramos capacidades de inteligencia artificial y Power BI en tu entorno contáctanos para diseñar la solución a medida adecuada a tus objetivos.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.