🎉 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
- 🎉 Novedades en v0.1.0-BETA - ¡Una importante transformación de la arquitectura!
- 📋 Índice
- 🔍 ¿Qué es el protocolo de contexto de modelo?
- ⚠️ IMPORTANTE: Seguridad y limitaciones
- 🛠️ Herramientas disponibles
- 🚀 Inicio rápido
- 🧠 Proveedores de AI compatibles
- 5. Despliegue deDocker - Ejecución de contenedores Docker
- ⚠️ Bueno saber
- 🗺️ Hoja de ruta
- 🆘 ¿Necesita ayuda?
- 💡 Ideas y solicitudes de funciones
- 👥 Colaboradores
- ⚖️ Aviso legal
🔍 ¿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ónget_okta_user
- Obtener información detallada sobre un usuario específico por ID o loginlist_okta_user_groups
- Lista todos los grupos a los que pertenece un usuario específicolist_okta_user_applications
- Lista todos los enlaces de aplicaciones (aplicaciones asignadas) de un usuario específicolist_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ó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
- Lista todos los usuarios asignados a una aplicación específicalist_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 detalladasget_okta_policy_rule
- Obtener información detallada sobre una regla de política específicalist_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 8601parse_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:
Proveedor | Variable de entorno | Descripción |
---|---|---|
OpenAI | AI_PROVIDER=openai | Conecta con la API OpenAI con modelos como GPT-4o. Requiere una clave de API OpenAI. |
Azure OpenAI | AI_PROVIDER=azure_openai | Utilice modelos OpenAI alojados en Azure con funciones mejoradas de seguridad y cumplimiento. |
Antrópico | AI_PROVIDER=anthropic | Conéctese a los modelos Claude de Anthropic (probado principalmente con Claude 3.7 Sonnet). |
Google Vertex AI | AI_PROVIDER=vertex_ai | Utiliza los modelos Gemini de Google a través de Vertex AI. Requiere una cuenta del servicio Google Cloud. |
Compatible con OpenAI | AI_PROVIDER=openai_compatible | Coné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
:
Reemplace{ "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" } } }
DIR
con la ruta absoluta de su directorio yOKTA_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:
- 📝 Configuración del servidor
- 🔑 Permisos de la API de Okta
- 🔌 Compatibilidad con el cliente MCP
- 📊 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.