Servidor MCP de Okta - MCP Server Seguro por ALMC Security 2025

Servidor MCP de Okta

Ver en GitHub

🎉 Novedades en v0.1.0-BETA - ¡Una importante transformación de la arquitectura!

Esta versión representa una revisión completa de la arquitectura con estas mejoras clave:

🏗️ Arquitectura central

  • 🚀FastMCP 2.0: Migración del paquete MCP heredado a FastMCP 2.0 para disponer de funciones de protocolo de vanguardia
  • 🧹 Código más limpio: Eliminada la dependencia tool_registry.py para una base de código más simple y mantenible
  • ⚡ Mejor rendimiento: Patrones async modernos y gestión de peticiones optimizada

🛠️ Herramientas mejoradas

  • 📝 Reescritura completa: Todas las herramientas reescritas con mejores anotaciones y descripciones para la comprensión de la IA
  • 🛡️ Validación mejorada: Mejora de la gestión de errores y la validación de entrada en todas las operaciones

cliente unificado

  • 🎯 CLI única: nuevo cliente de línea de comandos unificado compatible con múltiples transportes (STDIO, HTTP)
  • ⚙️ Configuración simplificada: Configuración simplificada con valores predeterminados inteligentes

🔐 S eguridad avanzada

  • tokens de portador: Soporte completo de token portador JWT con validación jwks_uri
  • 🏢Enterprise Auth: Compatibilidad con flujos de autenticación empresarial y acceso basado en alcance

preparado para el futuro

  • 🎯Soporte de muestreo: Base para capacidades avanzadas de muestreo de solicitudes
  • 🔌 Preparado para middleware: Sistema de middleware extensible para procesamiento personalizado
  • 📡Evolución de protocolos: Acceso a las últimas funciones de MCP a medida que se desarrollan y estandarizan

📋 Tabla de contenidos

🔍 ¿Qué es el Protocolo de Contexto Modelo?

⚠️ IMPORTANTE: Seguridad y limitaciones

Lee atentamente esta sección antes de utilizar Okta MCP Server.

flujo de datos y privacidad

Cuando realizas una solicitud, la interacción ocurre directamente entre el LLM y las herramientas de Okta MCP - la aplicación cliente ya no está en el medio. Todos los datos devueltos por estas herramientas (incluyendo perfiles de usuario completos, membresías de grupos, etc.) se envían y almacenan en el contexto del LLM durante toda la transacción para esa conversación.

Consideraciones clave sobre la privacidad:

  • El LLM (Claude, GPT, etc.) recibe y procesa todos los datos de Okta recuperados por las herramientas
  • Estos datos permanecen en el contexto del LLM durante toda la conversación
  • Debe sentirse cómodo con el procesamiento de los datos de usuario de Okta por parte de los sistemas del proveedor del LLM
  • Antes de utilizar estas herramientas, asegúrate de que te sientes cómodo con los datos de Okta que se envían a los servidores del modelo de IA

📊 Limitaciones de la ventana de contexto

MCP está diseñado para flujos de trabajo ligeros similares a Zapier, no para operaciones masivas de datos.

Recomendación: Limite las solicitudes a menos de 100 entidades por transacción. Evite las operaciones que requieran la obtención de grandes conjuntos de datos o múltiples llamadas a la API.

Ejemplos:

Evite este tipo de solicitudes:

  • "Obtener los 10 000 usuarios de nuestro tenant de Okta y analizar sus patrones de inicio de sesión"
  • "Encontrar a los usuarios que no tienen Okta Verify inscrito como factor"

Mejores enfoques:

  • "Obtener los 20 usuarios creados más recientemente"
  • "Encontrar usuarios que no han iniciado sesión durante más de 90 días, limitar a los primeros 50 resultados"

💡 Para conjuntos de datos más grandes y consultas complejas: Considere el uso del Agente Okta AI para consultas y conjuntos de datos más grandes, El agente está siendo mejorado con características "accionables" similares para manejar conjuntos de datos más grandes y escenarios más complejos en un futuro muy cercano.

🚨 Advertencia de seguridad en el transporte HTTP

Los modos de transporte HTTP (tanto Streamable HTTP como SSE) presentan importantes riesgos de seguridad:

  • Abren servidores HTTP no autenticados con acceso completo a su inquilino Okta
  • No se proporciona autenticación ni autorización
  • Cualquiera que pueda alcanzar el puerto de red puede emitir comandos a su entorno Okta
  • EXTREMADAMENTE PELIGROSO cuando se utiliza el acceso HTTP remoto a través de mcp-remote

Mejor práctica: Sólo utilice el método de transporte STDIO (modo por defecto) a menos que tenga controles de seguridad específicos y comprenda los riesgos.

🛠️ Herramientas disponibles

El Servidor MCP de Okta proporciona actualmente las siguientes herramientas:

Gestión de usuarios

  • list_okta_users - Recupera usuarios con opciones de filtrado, búsqueda y paginación
  • get_okta_user - Obtener información detallada sobre un usuario específico por ID o login
  • list_okta_user_groups - Lista todos los grupos a los que pertenece un usuario específico
  • list_okta_user_applications - Lista todos los enlaces de aplicaciones (aplicaciones asignadas) de un usuario específico
  • list_okta_user_factors - Lista todos los factores de autenticación registrados para un usuario específico

Operaciones de grupo

  • list_okta_groups - Recuperar grupos con opciones de filtrado, búsqueda y paginación
  • get_okta_group - Obtener información detallada sobre un grupo específico
  • list_okta_group_members - Listar todos los miembros de un grupo específico
  • list_okta_assigned_applications_for_group - Listar todas las aplicaciones asignadas a un grupo específico

Gestión de aplicaciones

  • list_okta_applications - Recuperar aplicaciones con opciones de filtrado, búsqueda y paginación
  • list_okta_application_users - Lista todos los usuarios asignados a una aplicación específica
  • list_okta_application_group_assignments - Lista de todos los grupos asignados a una aplicación específica

Gestión de políticas y redes

  • list_okta_policy_rules - Lista todas las reglas de una política específica con condiciones y acciones detalladas
  • get_okta_policy_rule - Obtener información detallada sobre una regla de política específica
  • list_okta_network_zones - Lista todas las zonas de red con rangos IP y detalles de configuración

Eventos de registro del sistema

  • get_okta_event_logs - Recupere los eventos de registro del sistema Okta con opciones de filtrado y búsqueda basadas en el tiempo

Utilidades de fecha y hora

  • get_current_time - Obtener la hora UTC actual en formato ISO 8601
  • parse_relative_time - Convierte expresiones de tiempo en lenguaje natural al formato ISO 8601

Herramientas adicionales para aplicaciones, factores, políticas y operaciones más avanzadas están en la hoja de ruta y se añadirán en futuras versiones.

inicio rápido

Requisitos previos

✅ Python 3.8+ instalado en su máquina
✅ Tenant de Okta con el acceso apropiado a la API
✅ Un cliente de IA compatible con MCP (Claude Desktop, Microsoft Copilot Studio, etc.)

⚠️ Nota importante de compatibilidad de modelos:
No todos los modelos de IA funcionan con este servidor MCP. Sólo se han realizado pruebas con:

  • GPT-4.0
  • Claude 3.7 Sonnet
  • Google-2.5-pro

Debe utilizar las versiones más recientes de los modelos que admitan explícitamente las capacidades de llamada a herramientas/funciones. Los modelos más antiguos o sin soporte de llamada a herramientas no podrán interactuar con el Servidor MCP de Okta.

🧠 Proveedores de AI compatibles

El Servidor Okta MCP soporta múltiples proveedores de IA a través de su sistema de configuración flexible. Esto le permite conectarse a varios modelos de lenguaje de gran tamaño en función de sus necesidades específicas y el acceso existente.

Proveedores soportados actualmente:

ProveedorVariable de entornoDescripción
OpenAIAI_PROVIDER=openaiConecta con la API OpenAI con modelos como GPT-4o. Requiere una clave de API OpenAI.
Azure OpenAIAI_PROVIDER=azure_openaiUtilice modelos OpenAI alojados en Azure con funciones mejoradas de seguridad y cumplimiento.
AntrópicoAI_PROVIDER=anthropicConéctese a los modelos Claude de Anthropic (probado principalmente con Claude 3.7 Sonnet).
Google Vertex AIAI_PROVIDER=vertex_aiUtiliza los modelos Gemini de Google a través de Vertex AI. Requiere una cuenta del servicio Google Cloud.
Compatible con OpenAIAI_PROVIDER=openai_compatibleConéctese a cualquier punto final compatible con la API OpenAI, como Fireworks.ai, Ollama u otros proveedores que implementen la especificación de la API OpenAI.

Instalación

# Clone el repositorio git clone https://github.com/fctr-id/okta-mcp-server.git cd okta-mcp-server # Cree y active un entorno virtual python -m venv venv source venv/bin/activate # En Windows use: venv\Scripts\activate # Instale las dependencias pip install -r requirements.txt

⚠️ AVISO: Si clona este repositorio de nuevo o saca actualizaciones, asegúrese siempre de volver a ejecutar pip install -r requirements.txt para asegurarse de que todas las dependencias están actualizadas.

Configuración y uso

Crea un archivo de configuración con tus ajustes de Okta:

Para utilizar el cliente de línea de comandos (sin memoria), siga estas instrucciones

# Copie el ejemplo de configuración cp .env.sample .env Edite el archivo env con su configuración Requerido: Dominio Okta y token API y configuración LLM cd clients python mcp-cli-stdio-client.py

Para utilizar hosts MCP como Claude Code, vsCode ...etc encuentre la configuración json a continuación

Transportes soportados y lanzamiento

El Servidor MCP de Okta soporta múltiples protocolos de transporte:

1. Standard I/O (STDIO) - Recomendado

  • Seguridad: ✅ Comunicación directa a través de flujos de entrada/salida estándar
  • Caso de uso: Ideal para asistentes de IA de escritorio como Claude Desktop
  • Rendimiento: ✅ Ligero y eficiente
  • Configuración: Para Claude Desktop, añada a claude_desktop_config.json:
    { "mcpServers": { "okta-mcp-server": { "command": "DIR/okta-mcp-server/venv/Scripts/python", "args": [ "DIR/okta-mcp-server/main.py" ], "env": { "OKTA_CLIENT_ORGURL": "https://dev-1606.okta.com", "OKTA_API_TOKEN": "OKTA_API_TOKEN" } } }
    Reemplace DIR con la ruta absoluta de su directorio y OKTA_API_TOKEN con su token actual

2. Transporte HTTP Streamable - Moderno y Estándar Actual

Current Standard - Transporte moderno basado en HTTP con características avanzadas:

  • Características: ✅ Streaming de eventos en tiempo real, gestión de sesiones, soporte de reanudación
  • Rendimiento: ✅ Mejor escalabilidad y gestión de conexiones
  • Caso de uso: Aplicaciones web modernas y clientes que soportan streaming HTTP
  • Seguridad: ⚠️ Servidor HTTP local - seguro en entornos controlados

Inicio del servidor HTTP Streamable:

# Iniciar el servidor con reconocimiento explícito de riesgo python main.py --http --iunderstandtherisks # El servidor se iniciará en http://localhost:3000/mcp # Conectar usando clientes compatibles con HTTP fluido

Características:

  • ✅ S treaming en tiempo real - Actualizaciones de progreso en directo durante las operaciones
  • Gestión de sesión - Mantiene el estado de la conexión
  • ✅ S treaming de eventos - Eventos enviados por el servidor para notificaciones en tiempo real
  • Mejor gestión de errores - Respuestas detalladas a los errores
  • Protocolo moderno - Basado en las últimas especificaciones MCP

Para la prueba del cliente HTTP Streamable:

cd clientes python mcp-cli-streamable-client.py

3. Acceso remoto HTTP - Sólo uso avanzado de alto riesgo

⚠️ EXTREMADAMENTE PELIGROSO - LEA ATENTAMENTE

Para clientes MCP que no soportan conexiones remotas de forma nativa, puede utilizar mcp-remote a través de NPX:

Requisitos previos:

  • Node.js y NPM instalados
  • Servidor Okta MCP ejecutándose en modo HTTP

Configuración:

# 1. Instale mcp-remote globalmente npm install -g @anthropic/mcp-remote # 2. Inicie su servidor Okta MCP en modo HTTP python main.py --http 2. Inicie su Servidor Okta MCP en modo HTTP python main.py --http --iunderstandtherisks # 3. Configure su cliente MCP (por ejemplo, un servidor MCP). Configure su cliente MCP (por ejemplo, Claude Desktop)

Configuración de Claude Desktop:

{ "mcpServers": { "okta-mcp-server": { "command": "npx", "args": [ "mcp-remote", "http://localhost:3000/mcp" ], "env": { "OKTA_CLIENT_ORGURL": "https://dev-1606.okta.com", "OKTA_API_TOKEN": "su_api_token_actual" } } }

🚨 ADVERTENCIAS CRÍTICAS DE SEGURIDAD:

  • NUNCA utilizar en entornos de producción
  • NUNCA expongas el puerto HTTP (3000) a redes públicas
  • CUALQUIERA con acceso a la red puede controlar tu tenant de Okta
  • No hay protección de autenticación o autorización
  • Todas las operaciones de Okta están expuestas sin restricciones
  • Utilícelo sólo en entornos de desarrollo aislados y seguros
  • Considere este enfoque sólo si el transporte STDIO no es absolutamente factible

Cuándo podría necesitar este enfoque:

  • Pruebas de integraciones MCP que requieren transporte HTTP
  • Aplicaciones cliente específicas que no pueden utilizar STDIO
  • Escenarios de desarrollo que requieran depuración HTTP
  • NUNCA para entornos de producción o compartidos

4. Eventos enviados por el servidor (SSE) - Obsoletos

⚠️ DEPRECATED: El transporte SSE está obsoleto y no se recomienda para nuevas implementaciones.

# Run in SSE mode (requires explicit risk acknowledgment) python main.py --sse --iunderstandtherisks
  • Caso de uso: Clientes MCP heredados que requieren específicamente SSE (no recomendado)
  • Seguridad: ⚠️ Mismos riesgos de seguridad HTTP que Streamable HTTP
  • Recomendación: Utilizar el transporte Streamable HTTP en todas las nuevas implementaciones

5. Despliegue Docker

El servidor Okta MCP proporciona imágenes Docker para todos los tipos de transporte, ofreciendo opciones de despliegue en contenedores.

Ejecución de contenedores Docker

Transporte STDIO (Recomendado):Para Claude Desktop u otros clientes MCP, configure para utilizar el contenedor Docker:

{ "mcpServers": { "okta-mcp-server": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "OKTA_CLIENT_ORGURL", "-e", "OKTA_API_TOKEN", "fctrid/okta-mcp-server:stdio" ], "env": { "OKTA_CLIENT_ORGURL": "https://your-org.okta.com", "OKTA_API_TOKEN": "su_api_token" } } }

Transporte HTTP Streamable (Estándar Actual):

# Inicie el contenedor HTTP docker run -d --name okta-mcp-http \ -p 3000:3000 \ -e OKTA_API_TOKEN=su_api_token \ -e OKTA_CLIENT_ORGURL=https://your-org.okta.com \ fctrid/okta-mcp-server:http # Configure su cliente MCP para conectarse a http://localhost:3000/mcp

Transporte SSE (obsoleto - no recomendado):

# Inicie el contenedor SSE (obsoleto) docker run -d --name okta-mcp-sse \ -p 3000:3000 \ -e OKTA_API_TOKEN=your_api_token \ -e OKTA_CLIENT_ORGURL=https://your-org.okta.com \ fctrid/okta-mcp-server:sse # Configure su cliente MCP para conectarse a http://localhost:3000/sse

Construir imágenes localmente:

# Construir todas las variantes docker build --target stdio -t okta-mcp-server:stdio . docker build --target http -t okta-mcp-server:http . docker build --target sse -t okta-mcp-server:sse

⚠️ Es bueno saber

Versión Beta 🧪

  • Arquitectura completamente reescrita con FastMCP 2.0
  • Estabilidad y rendimiento mejorados en comparación con versiones alfa anteriores
  • Completo sistema de herramientas con una mejor integración de la IA
  • Más adecuado para entornos de desarrollo y pruebas
  • Se está evaluando la preparación para producción con funciones de seguridad mejoradas

Seguridad ante todo 🛡️

  • Diseñado para el funcionamiento con menos privilegios
  • Acceso predeterminado de solo lectura a los recursos de Okta
  • Las futuras operaciones de escritura requerirán flujos de aprobación explícitos

Limitaciones actuales

  • Comenzando con un conjunto limitado de herramientas de sólo lectura para usuarios y grupos
  • Se planea expandir la cobertura de la API rápidamente en las próximas versiones
  • Algunas relaciones complejas de Okta aún no están expuestas
  • Rendimiento con instancias de Okta muy grandes aún no optimizado
  • Requiere acceso directo de red a los puntos finales de la API de Okta

🗺️ Hoja de ruta

v0.1.0-BETA - Actual (MAYOR REVISIÓN ARQUITECTÓNICA)

  • Migración completa a la arquitectura FastMCP 2.0
  • Reescritura completa de todas las herramientas con anotaciones mejoradas
  • Nuevo cliente CLI unificado que soporta múltiples transportes
  • Eliminada la dependencia tool_registry.py para una base de código más limpia
  • Soporte avanzado de token de portador con validación jwks_uri
  • Mejoras significativas en la gestión y validación de errores
  • Optimizaciones de rendimiento y patrones async modernos

v0.3.0 - Anterior

  • Soporte de transporte HTTP en tiempo real
  • Transmisión de eventos en tiempo real
  • Gestión y reanudación de sesiones
  • Aplicaciones cliente mejoradas

Los planes de futuro incluyen:

  • Operaciones completas del ciclo de vida del usuario
  • Gestión de asignación de aplicaciones
  • Operaciones de pertenencia a grupos
  • Inscripción y verificación de factores
  • Gestión de políticas y reglas
  • Flujos de trabajo de aprobación para operaciones sensibles
  • Opciones de aprobación multicanal (web, correo electrónico, Slack)
  • Registro de auditorías e informes de cumplimiento
  • Integración de registros del sistema
  • Generación de información sobre seguridad
  • Soporte multiusuario
  • Control de acceso basado en roles

¿Necesita ayuda?

Antes de plantear una incidencia, comprueba:

  1. 📝 Configuración del servidor
  2. 🔑 Permisos de la API de Okta
  3. 🔌 Compatibilidad con el cliente MCP
  4. 📊 Registros del servidor

Sigues teniendo problemas? Abre una incidencia en GitHub o envía un correo electrónico a support@fctr.io (los tiempos de respuesta pueden variar)

💡 Ideas y solicitudes de funciones

Tienes alguna idea o sugerencia? ¡ Abre una solicitud de función en GitHub!

colaboradores

¿Estás interesado en colaborar? ¡Nos encantaría contar contigo! Ponte en contacto con info@fctr.io para conocer las oportunidades de colaboración.

⚖️ Aviso legal

Echa un vistazo a License.md para conocer la letra pequeña.


🌟 © 2025 Fctr Identity. Todos los derechos reservados. Hecho con ❤️ para las comunidades de Okta y AI.

Relacionados en Servicio en la nube - MCP Servers Seguros

ServidorResumenAcciones
TiempoVer
CLI DE AWS🌟 amazon-q-cli es genial, y es genial porque tiene la herramienta use_aws MCP para interactuar con...Ver
commercetools MCP Essentials[IMPORTANTE] Nota importante: Commerce MCP se proporciona gratuitamente como servicio de acceso anti...Ver
Servidor GAM MCPAdministración de Google Workspace a través de GAM CLI, preparada para Claude Desktop y Model Contex...Ver
Servidor PlayFab MCPVer
Servidor MCP remoto de CloudflareEste ejemplo le permite implementar un servidor MCP remoto que no requiere autenticación en Cloudfla...Ver