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.
Demostración Rápida
🎉 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.pypara 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.mdpara más detalles.
📋 Tabla de Contenidos
- 🎉 Novedades en v0.1.1-BETA - ¡Herramientas Especiales de Nivel Empresarial!
- 📋 Tabla de Contenidos
- 🔍 ¿Qué es el Protocolo de Contexto del Modelo?
- ⚠️ IMPORTANTE: Seguridad y Limitaciones
- 🛠️ Herramientas Disponibles
- 🚀 Inicio Rápido
- 🧠 Proveedores de IA Soportados
- 5. Despliegue con Docker - Ejecutando Contenedores Docker
- ⚠️ Bueno de Saber
- 🗺️ Hoja de Ruta
- 🆘 ¿Necesitas Ayuda?
- 💡 Solicitudes de Funciones e Ideas
- 👥 Colaboradores
- ⚖️ Asuntos Legales
🔍 ¿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ónget_okta_user- Obtener información detallada sobre un usuario específico por ID o inicio de sesiónlist_okta_user_groups- Listar todos los grupos a los que pertenece un usuario específicolist_okta_user_applications- Listar todos los enlaces de aplicaciones (aplicaciones asignadas) para un usuario específicolist_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ónget_okta_group- Obtener información detallada sobre un grupo específicolist_okta_group_members- Listar todos los miembros de un grupo específicolist_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ónlist_okta_application_users- Listar todos los usuarios asignados a una aplicación específicalist_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 detalladasget_okta_policy_rule- Obtener información detallada sobre una regla de política específicalist_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 8601parse_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:
| Proveedor | Variable de entorno | Descripción |
|---|---|---|
| OpenAI | AI_PROVIDER=openai | Conéctate a la API de OpenAI con modelos como GPT-4o. Requiere una clave de API de OpenAI. |
| Azure OpenAI | AI_PROVIDER=azure_openai | Usa modelos de OpenAI alojados en Azure con funciones mejoradas de seguridad y cumplimiento. |
| Anthropic | AI_PROVIDER=anthropic | Conéctate a los modelos Claude de Anthropic (probado principalmente con Claude 3.7 Sonnet). |
| Google Vertex AI | AI_PROVIDER=vertex_ai | Usa los modelos Gemini de Google a través de Vertex AI. Requiere una cuenta de servicio de Google Cloud. |
| OpenAI Compatible | AI_PROVIDER=openai_compatible | Coné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.txtpara 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:
Reemplaza{ "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" } } } }DIRcon la ruta absoluta de tu directorio yOKTA_API_TOKENcon 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:
- 📝 Configuración del servidor
- 🔑 Permisos de la API de Okta
- 🔌 Compatibilidad del cliente MCP
- 📊 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.