Okta MCP Server

Permite que los modelos de IA interactúen con tu entorno Okta para gestionar y analizar recursos, diseñado para ingenieros de IAM, equipos de seguridad y administradores.

Documentación

Okta MCP Server (v0.1.1-BETA)

🔥 ¡¡¡ALERTA!!! Un MCP Server completamente reconstruido ya está disponible

Una reescritura completa construida sobre el nuevo patrón de arquitectura MCP de Anthropic con operación de doble modo, ingeniería de contexto, sandbox de seguridad mejorado y soporte Docker listo para producción.

→ Explorar TAKO MCP Server

El Okta MCP Server es una herramienta innovadora que permite a los modelos de IA interactuar directamente con su entorno de Okta utilizando el Protocolo de Contexto del Modelo (MCP). Construido específicamente para ingenieros de IAM, equipos de seguridad y administradores de Okta, implementa la especificación MCP para transformar cómo los asistentes de IA pueden ayudar a gestionar y analizar los recursos de Okta.

Demostración Rápida

Okta MCP Server Demo

🎉 Novedades en v0.1.1-BETA - ¡Herramientas Especiales de Nivel Empresarial!

Esta versión introduce herramientas especiales potentes que revolucionan las tareas diarias de administración de Okta:

🔥 NUEVO: Herramientas Especiales - Cambios Radicales para Administradores de Okta

  • 🎯 Análisis Integral de Acceso: Ayuda a responder la pregunta más frecuente que enfrentan los administradores de Okta. ¿Puede el usuario X acceder a la aplicación Y?
  • 🛡️ Evaluación Avanzada de Riesgo de Inicio de Sesión: Análisis de comportamiento con detección de VPN/Tor y comprobaciones de imposibilidad geográfica que pueden ayudar con correos de reporte sospechosos.

💡 Ejemplo del Mundo Real - Análisis de Acceso:

❓ Question: "Can user john@company.com access the application Salesforce?"

🤖 AI Response (30 seconds): "User John Smith can access Salesforce because: 
1) User is ACTIVE ✅
2) User is assigned via group 'Sales Team' ✅, 
3) Policy allows access with 2FA from corporate network or requires PUSH factor from external locations - user has PUSH enrolled ✅"

⏱️ Manual Process: Navigate Users → Find John → Check Status → Check App 
Assignments → Check Group Memberships → Check Salesforce Assignments → 
Review Access Policies → Check MFA Factors → Correlate Network Rules (10-15 min)

💡 Ejemplo del Mundo Real - Evaluación de Riesgo de Inicio de Sesión:

❓ Question: "Is dan@company.com's recent login activity suspicious?"

🤖 AI Response (30 seconds): "LOW RISK - Dan exhibits excellent login 
security patterns: consistent geographic area, same residential ISP, 
stable device fingerprints, normal browser patterns, zero VPN/proxy 
usage, all Okta risk scores LOW ✅"

⏱️ Manual Process: System Logs → Filter User → Check Locations → Review 
IP Addresses → Cross-reference Network Zones → Analyze Device Patterns → 
Check Geographic Impossibility → Review Behavioral Flags (15+ min)

🏗️ Arquitectura Principal

  • 🚀 FastMCP 2.0: Migrado del paquete MCP heredado a FastMCP 2.0 para funciones de protocolo de vanguardia
  • 🧹 Código más Limpio: Se eliminó la dependencia de tool_registry.py para un código base más simple y mantenible
  • ⚡ Mejor Rendimiento: Patrones asíncronos modernos y manejo optimizado de solicitudes

🛠️ Herramientas Mejoradas

  • 📝 Reescritura Completa: Todas las herramientas reescritas con mejores anotaciones y descripciones para la comprensión de la IA
  • 🛡️ Validación Mejorada: Manejo de errores mejorado y validación de entrada en todas las operaciones

🔐 Seguridad Avanzada

  • 🎫 Tokens Bearer: Soporte completo de tokens bearer JWT con validación jwks_uri
  • 🏢 Autenticación Empresarial: Soporte para flujos de autenticación empresarial y acceso basado en ámbitos

🚀 Listo para el Futuro

  • 🔌 Middleware Listo: Sistema de middleware extensible para procesamiento personalizado
  • 📡 Evolución del Protocolo: Acceso a las últimas funciones de MCP a medida que se desarrollan y estandarizan

📝 Nota: Los clientes CLI y las funciones de muestreo de IA se han movido a la carpeta _Archived/ debido a conflictos de dependencia de pydantic-ai (vulnerabilidad de seguridad). Consulte _Archived/README.md para más detalles.

📋 Tabla de Contenidos

 

🔍 ¿Qué es el Protocolo de Contexto del Modelo?

El Protocolo de Contexto del Modelo (MCP) es un estándar abierto que permite a los modelos de IA interactuar con herramientas y servicios externos de manera estructurada y segura. Proporciona una interfaz consistente para que los sistemas de IA descubran y utilicen capacidades expuestas por los servidores, permitiendo a los asistentes de IA extender su funcionalidad más allá de sus datos de entrenamiento.

Piensa en MCP como el "USB-C de la integración de IA" - así como USB-C proporciona un estándar universal que permite que varios dispositivos se conecten y comuniquen independientemente del fabricante, MCP crea una forma estandarizada para que los modelos de IA descubran e interactúen con diferentes servicios sin integración personalizada para cada uno. Este enfoque de "plug-and-play" significa que los desarrolladores pueden construir herramientas una vez y hacer que funcionen en múltiples asistentes de IA, mientras que los usuarios se benefician de una integración perfecta sin preocuparse por problemas de compatibilidad.

Ejemplo: "Encuentra todos los usuarios bloqueados en nuestro inquilino de Okta y crea una hoja de cálculo en nuestra carpeta de Operaciones de TI en Google Drive con sus nombres, direcciones de correo electrónico y fechas de último inicio de sesión." La IA utiliza Okta MCP Server para consultar usuarios bloqueados, luego pasa estos datos a Google Drive MCP Server para crear la hoja de cálculo, todo sin codificación personalizada.

⚠️ IMPORTANTE: Seguridad y Limitaciones

Por favor, lea esta sección cuidadosamente antes de usar Okta MCP Server.

🔄 Flujo de Datos y Privacidad

Cuando realiza 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 de esa conversación.

Consideraciones Clave de 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 que sus datos de usuario de Okta sean procesados por los sistemas del proveedor del LLM
  • Antes de usar estas herramientas, asegúrese de sentirse cómodo con que los datos de Okta se envíen 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 de datos masivos.

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

Ejemplos:

❌ Evite estos tipos de solicitudes:

  • "Obtén los 10,000 usuarios de nuestro inquilino de Okta y analiza sus patrones de inicio de sesión"
  • "Encuentra usuarios que no tengan Okta Verify inscrito como factor"

✅ Mejores enfoques:

  • "Obtén los 20 usuarios creados más recientemente"
  • "Encuentra usuarios que no han iniciado sesión en más de 90 días, limita a los primeros 50 resultados"

💡 Para conjuntos de datos más grandes y consultas complejas: Considere usar el Okta AI Agent para consultas y conjuntos de datos más grandes. El agente se está mejorando con funciones "accionables" similares para manejar conjuntos de datos más grandes y escenarios más complejos en un futuro muy cercano.

🚨 Advertencia de Seguridad del Transporte HTTP

Los modos de transporte HTTP (tanto HTTP Transmisible como SSE) tienen riesgos de seguridad significativos:

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

Mejor Práctica: Utilice únicamente el método de transporte STDIO (modo predeterminado) a menos que tenga controles de seguridad específicos implementados y comprenda los riesgos.

🛠️ Herramientas Disponibles

El Okta MCP Server actualmente proporciona las siguientes herramientas:

🔥 Herramientas Especiales - Aceleradores de Administración Empresarial

Análisis de Acceso y Solución de Problemas

  • analyze_user_app_access - Evaluación completa del acceso de usuarios a aplicaciones con análisis de políticas (reemplaza 10-15 minutos de navegación manual en la Consola de Administración de Okta)

Evaluación de Seguridad y Riesgo

  • analyze_login_risk - Análisis integral del comportamiento de inicio de sesión con detección de VPN/Tor y comprobaciones de imposibilidad geográfica (responde "¿Está comprometido este usuario?" al instante)

⚡ Por Qué Importan: Las dos preguntas más comunes que enfrentan los administradores de Okta a diario son "¿Por qué el usuario X no puede acceder a la aplicación Y?" y "¿Es sospechosa esta actividad de inicio de sesión?". Estas herramientas especiales proporcionan al instante respuestas integrales que de otro modo requerirían una extensa investigación manual en múltiples pantallas de administración de Okta, revisiones de políticas y análisis de registros, transformando investigaciones de más de 15 minutos en conocimientos impulsados por IA en 30 segundos.

📊 Herramientas Estándar

Gestión de Usuarios

  • list_okta_users - Recuperar 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 inicio de sesión
  • list_okta_user_groups - Listar todos los grupos a los que pertenece un usuario específico
  • list_okta_user_applications - Listar todos los enlaces de aplicaciones (aplicaciones asignadas) para un usuario específico
  • list_okta_user_factors - Listar todos los factores de autenticación inscritos para un usuario específico

Operaciones de Grupos

  • 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 - Listar todos los usuarios asignados a una aplicación específica
  • list_okta_application_group_assignments - Listar todos los grupos asignados a una aplicación específica

Gestión de Políticas y Red

  • list_okta_policy_rules - Listar todas las reglas para 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 - Listar todas las zonas de red con rangos de IP y detalles de configuración

Eventos de Registro del Sistema

  • get_okta_event_logs - Recuperar eventos de registro del sistema de Okta con filtrado basado en tiempo y opciones de búsqueda

Utilidades de Fecha y Hora

  • get_current_time - Obtener la hora UTC actual en formato ISO 8601
  • parse_relative_time - Convertir 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 agregarán en futuras versiones.

🚀 Inicio Rápido

Requisitos Previos

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

⚠️ Nota importante sobre compatibilidad de modelos:
No todos los modelos de IA funcionan con este servidor MCP. Las pruebas solo se han realizado con:

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

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

🧠 Proveedores de IA compatibles

El Okta MCP Server admite múltiples proveedores de IA a través de su sistema de configuración flexible. Esto te permite conectarte a varios modelos de lenguaje grandes según tus necesidades específicas y el acceso existente.

Proveedores actualmente compatibles:

ProveedorVariable de entornoDescripción
OpenAIAI_PROVIDER=openaiConéctate a la API de OpenAI con modelos como GPT-4o. Requiere una clave de API de OpenAI.
Azure OpenAIAI_PROVIDER=azure_openaiUsa modelos de OpenAI alojados en Azure con funciones mejoradas de seguridad y cumplimiento.
AnthropicAI_PROVIDER=anthropicConéctate a los modelos Claude de Anthropic (probado principalmente con Claude 3.7 Sonnet).
Google Vertex AIAI_PROVIDER=vertex_aiUsa los modelos Gemini de Google a través de Vertex AI. Requiere una cuenta de servicio de Google Cloud.
OpenAI CompatibleAI_PROVIDER=openai_compatibleConéctate a cualquier endpoint compatible con la API de OpenAI, como Fireworks.ai, Ollama u otros proveedores que implementen la especificación de la API de OpenAI.

Instalación

# Clone the repository
git clone https://github.com/fctr-id/okta-mcp-server.git
cd okta-mcp-server

# Create and activate a virtual environment
python -m venv venv
source venv/bin/activate  # On Windows use: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

⚠️ AVISO: Si clonas este repositorio nuevamente o actualizas los cambios, asegúrate siempre de volver a ejecutar pip install -r requirements.txt para garantizar que todas las dependencias estén actualizadas.

Configuración y uso

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

📝 Nota: Los clientes CLI independientes han sido archivados. Para la integración con hosts MCP (Claude Desktop, VS Code, etc.), usa el servidor directamente con la configuración JSON a continuación.

Transportes compatibles y lanzamiento

El Okta MCP Server admite múltiples protocolos de transporte:

1. Entrada/Salida estándar (STDIO) - Recomendado

  • Seguridad: ✅ Comunicación directa a través de flujos estándar de entrada/salida
  • Caso de uso: Ideal para asistentes de IA de escritorio como Claude Desktop
  • Rendimiento: ✅ Ligero y eficiente
  • Configuración: Para Claude Desktop, agrega 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"
          }
        }
      }
    }
    
    Reemplaza DIR con la ruta absoluta de tu directorio y OKTA_API_TOKEN con tu token real

2. Transporte HTTP Streamable - Estándar moderno y actual

Estándar actual - Transporte moderno basado en HTTP con funciones avanzadas:

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

Iniciando el servidor HTTP Streamable:

# Start server with explicit risk acknowledgment
python main.py --http --iunderstandtherisks

# Server will start on http://localhost:3000/mcp
# Connect using streamable HTTP compatible clients

Características:

  • ✅ Transmisión en tiempo real - Actualizaciones de progreso en vivo durante las operaciones
  • ✅ Gestión de sesiones - Mantiene el estado de la conexión
  • ✅ Transmisión de eventos - Eventos enviados por el servidor para notificaciones en tiempo real
  • ✅ Mejor manejo de errores - Respuestas de error detalladas
  • ✅ Protocolo moderno - Basado en las últimas especificaciones de MCP

3. Acceso HTTP remoto - Solo para uso avanzado de alto riesgo

⚠️ EXTREMADAMENTE PELIGROSO - LEE CON ATENCIÓN

Para clientes MCP que no admiten conexiones remotas de forma nativa, puedes usar mcp-remote a través de NPX:

Requisitos previos:

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

Configuración:

# 1. Install mcp-remote globally
npm install -g @anthropic/mcp-remote

# 2. Start your Okta MCP Server in HTTP mode
python main.py --http --iunderstandtherisks

# 3. Configure your MCP client (e.g., 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": "your_actual_api_token"
      }
    }
  }
}

🚨 ADVERTENCIAS CRÍTICAS DE SEGURIDAD:

  • NUNCA lo uses en entornos de producción
  • NUNCA expongas el puerto HTTP (3000) a redes públicas
  • CUALQUIER persona con acceso a la red puede controlar tu inquilino de Okta
  • No hay protección de autenticación ni autorización
  • Todas las operaciones de Okta están expuestas sin restricciones
  • Úsalo solo en entornos de desarrollo aislados y seguros
  • Considera este enfoque solo si el transporte STDIO no es absolutamente viable

¿Cuándo podrías necesitar este enfoque?

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

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

⚠️ OBSOLETO: 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: Usa el transporte Streamable HTTP en su lugar para todas las nuevas implementaciones

5. Implementación con Docker

El Okta MCP Server proporciona imágenes de Docker para todos los tipos de transporte, ofreciendo opciones de implementación en contenedores.

Ejecución de contenedores Docker

Transporte STDIO (Recomendado): Para Claude Desktop u otros clientes MCP, configura el uso del 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": "your_api_token"
      }
    }
  }
}

Transporte HTTP Streamable (Estándar actual):

# Start the HTTP container
docker run -d --name okta-mcp-http \
  -p 3000:3000 \
  -e OKTA_API_TOKEN=your_api_token \
  -e OKTA_CLIENT_ORGURL=https://your-org.okta.com \
  fctrid/okta-mcp-server:http

# Configure your MCP client to connect to http://localhost:3000/mcp

Transporte SSE (Obsoleto - No recomendado):

# Start the SSE container (deprecated)
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 your MCP client to connect to http://localhost:3000/sse

Creación de imágenes localmente:

# Build all variants
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 .

⚠️ Bueno saber

Versión beta 🧪

  • Arquitectura completamente reescrita con FastMCP 2.0
  • Estabilidad y rendimiento mejorados en comparación con versiones alfa anteriores
  • Sistema integral de herramientas con integración mejorada de IA
  • Más adecuado para entornos de desarrollo y pruebas
  • La preparación para producción se está evaluando con funciones de seguridad mejoradas

Seguridad primero 🛡️

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

Limitaciones actuales 🔍

  • Comienza con un conjunto limitado de herramientas de solo lectura para usuarios y grupos
  • Se planea expandir la cobertura de la API rápidamente en próximas versiones
  • Algunas relaciones complejas de Okta aún no están expuestas
  • El rendimiento con instancias muy grandes de Okta aún no está optimizado
  • Requiere acceso directo a la red para los endpoints de la API de Okta

🗺️ Hoja de ruta

v0.1.0-BETA - Actual (¡REESTRUCTURACIÓN ARQUITECTÓNICA IMPORTANTE!)

  • Migración completa a la arquitectura FastMCP 2.0
  • Reescritura integral de todas las herramientas con anotaciones mejoradas
  • Nuevo cliente CLI unificado que admite múltiples transportes
  • Eliminada la dependencia de tool_registry.py para un código más limpio
  • Soporte avanzado de tokens de portador con validación de jwks_uri
  • Manejo y validación de errores significativamente mejorados
  • Optimizaciones de rendimiento y patrones asíncronos modernos

v0.3.0 - Anterior

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

Los planes futuros incluyen:

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

🆘 ¿Necesitas ayuda?

Antes de plantear un problema, verifica:

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

¿Aún tienes problemas? Abre un problema en GitHub o envía un correo electrónico a support@fctr.io (los tiempos de respuesta pueden variar)

💡 Solicitudes de funciones e ideas

¿Tienes una idea o sugerencia? Abre una solicitud de función en GitHub.

👥 Colaboradores

¿Interesado en contribuir? ¡Nos encantaría tenerte! Contacta a info@fctr.io para oportunidades de colaboración.

⚖️ Asuntos legales

Consulta License.md para conocer la letra pequeña.


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