Okta MCP Server

Interactúa con el sistema de gestión de usuarios de Okta para la automatización integral de usuarios, grupos e incorporaciones.

Documentación

MseeP.ai Security Assessment Badge

Servidor MCP de Okta

Este servidor MCP permite que Claude interactúe con el sistema de gestión de usuarios de Okta, proporcionando capacidades integrales de gestión de usuarios y grupos, junto con automatización de incorporación.

Okta Server MCP server

Requisitos previos

  • Node.js (v16 o superior)
  • Aplicación de escritorio de Claude
  • Cuenta de desarrollador de Okta
  • Token de API de administrador de Okta

Instrucciones de configuración

1. Crear una cuenta de desarrollador de Okta

  • Vaya a la Consola de desarrollador de Okta
  • Cree una cuenta nueva o inicie sesión en una existente
  • Anote su dominio de Okta (por ejemplo, dev-123456.okta.com)

2. Crear un token de API

  • En la Consola de desarrollador de Okta, vaya a Seguridad > API > Tokens
  • Haga clic en "Crear token"
  • Asigne a su token un nombre significativo (por ejemplo, "Token del servidor MCP")
  • Copie el valor del token (no podrá verlo nuevamente)

3. Configuración inicial del proyecto

Instale las dependencias:

npm install

4. Configurar Claude Desktop

Abra su archivo de configuración de Claude Desktop:

Para MacOS:

code ~/Library/Application\ Support/Claude/claude_desktop_config.json

Para Windows:

code %AppData%\Claude\claude_desktop_config.json

Agregue o actualice la configuración:

{
    "mcpServers": {
        "okta": {
            "command": "node",
            "args": [
                "PATH_TO_PROJECT_DIRECTORY/dist/index.js"
            ],
            "env": {
                "OKTA_ORG_URL": "https://your-domain.okta.com",
                "OKTA_API_TOKEN": "your-api-token"
            }
        }
    }
}

Guarde el archivo y reinicie Claude Desktop.

Herramientas disponibles

El servidor proporciona las siguientes herramientas:

Gestión de usuarios

get_user

Recupera información detallada del usuario de Okta, incluyendo:

  • Detalles del usuario (ID, estado)
  • Fechas de la cuenta (creación, activación, último inicio de sesión, etc.)
  • Información personal (nombre, correo electrónico)
  • Detalles de empleo
  • Información de contacto
  • Dirección
  • Preferencias

find_users_by_attribute

Busca usuarios por cualquier atributo de perfil con filtrado avanzado:

  • Atributos admitidos: firstName, lastName, email, manager, department, title, division, organization, employeeNumber, costCenter, userType, city, state
  • Operadores de búsqueda:
    • eq (coincidencia exacta) - Funciona para todos los atributos
    • sw (comienza con) - Funciona para todos los atributos
    • ew (termina con) - Funciona para la mayoría de los atributos
    • co (contiene) - Funciona para algunos atributos (firstName, lastName, email)
    • pr (presente/existe) - Funciona para todos los atributos (encuentra usuarios con cualquier valor para ese atributo)
  • Características:
    • Utiliza la búsqueda nativa de Okta para un rendimiento óptimo
    • Recurso automático al filtrado del lado del cliente para operadores no admitidos
    • Enmascaramiento de PII en los resultados de búsqueda para atributos sensibles
    • Filtrado por estado (incluir/excluir usuarios inactivos)
    • Soporte de paginación con límites personalizables

list_users

Lista usuarios de Okta con filtrado y paginación opcionales:

  • Admite expresiones de filtro SCIM (por ejemplo, 'profile.firstName eq "John"')
  • Búsqueda de texto libre en múltiples campos
  • Opciones de ordenamiento (por estado, fecha de creación, etc.)
  • Soporte de paginación con límites personalizables

activate_user

Activa un usuario en Okta:

  • Opción de enviar correo electrónico de activación
  • Actualiza el estado del usuario a activo

suspend_user

Suspende un usuario en Okta

unsuspend_user

Reanuda un usuario previamente suspendido en Okta

delete_user

Elimina un usuario de Okta (nota: el usuario debe estar desactivado primero)

get_user_last_location

Recupera la última ubicación conocida e información de inicio de sesión de un usuario de los registros del sistema de Okta

Gestión de grupos

list_groups

Lista grupos de usuarios de Okta con filtrado y paginación opcionales:

  • Expresiones de filtro para grupos (por ejemplo, 'type eq "OKTA_GROUP"')
  • Búsqueda de texto libre en campos de grupos
  • Opciones de ordenamiento (por nombre, tipo, etc.)
  • Soporte de paginación con límites personalizables

create_group

Crea un nuevo grupo en Okta con un nombre y descripción opcional

get_group

Recupera información detallada sobre un grupo específico

delete_group

Elimina un grupo de Okta

assign_user_to_group

Asigna un usuario a un grupo en Okta

remove_user_from_group

Elimina un usuario de un grupo en Okta

list_group_users

Lista todos los usuarios en un grupo específico con soporte de paginación

Automatización de incorporación (Experimental)

Nota: Las herramientas de automatización de incorporación son experimentales y pueden estar sujetas a cambios o limitaciones según las restricciones de la API de Okta. Úselas con precaución en entornos de producción.

bulk_user_import

Importa múltiples usuarios desde una cadena CSV:

  • Crea cuentas de usuario basadas en datos CSV
  • Activación opcional de usuarios
  • Notificaciones por correo electrónico opcionales
  • Asignación a grupos predeterminados

assign_users_to_groups

Asigna múltiples usuarios a grupos según asignaciones de atributos:

  • Mapea atributos de usuario (departamento, título, etc.) a grupos específicos
  • Asignación masiva de usuarios según atributos

provision_applications

Proporciona acceso a aplicaciones para múltiples usuarios:

  • Asigna usuarios a aplicaciones
  • Admite aprovisionamiento masivo

run_onboarding_workflow

Ejecuta un flujo de trabajo completo de incorporación para múltiples usuarios desde datos CSV:

  • Importación de usuarios desde CSV
  • Activación automática
  • Asignación de grupos según atributos
  • Aprovisionamiento de aplicaciones
  • Configuración de correo electrónico de bienvenida

Ejemplo de uso en Claude

Después de la configuración, puede usar comandos como:

Gestión de usuarios

  • "Muéstrame los detalles del usuario con ID XXXX"
  • "Encuentra todos los usuarios del departamento de ingeniería"
  • "Busca usuarios con nombre que comience con 'John'"
  • "Encuentra usuarios cuyo correo electrónico contenga 'gmail'"
  • "Muéstrame todos los usuarios que tengan un departamento asignado"
  • "Lista usuarios cuyo título sea 'Gerente'"
  • "¿Cuál es el estado del usuario john.doe@company.com?"
  • "¿Cuándo fue el último inicio de sesión del usuario jane.smith@organization.com?"
  • "Encuentra usuarios creados en el último mes"
  • "Activa el usuario con ID XXXX"
  • "Suspende el usuario con ID XXXX"
  • "Elimina el usuario desactivado con ID XXXX"
  • "¿Desde dónde inició sesión por última vez el usuario XXXX?"

Búsquedas avanzadas de usuarios

  • "Encuentra todos los usuarios del departamento de Ventas" → Usa find_users_by_attribute con department eq "Sales"
  • "Muéstrame usuarios cuyo correo electrónico comience con 'admin'" → Usa email sw "admin"
  • "Encuentra usuarios con cualquier gerente asignado" → Usa manager pr
  • "Lista usuarios cuyo apellido contenga 'smith'" → Usa lastName co "smith"

Gestión de grupos

  • "Muéstrame todos los grupos en mi organización de Okta"
  • "Lista grupos que contengan la palabra 'admin'"
  • "Crea un nuevo grupo llamado 'Equipo de Marketing'"
  • "Obtén detalles del grupo con ID XXXX"
  • "Elimina el grupo con ID XXXX"
  • "Agrega el usuario XXXX al grupo YYYY"
  • "Elimina el usuario XXXX del grupo YYYY"
  • "Lista todos los usuarios del grupo 'Finanzas'"

Automatización de incorporación

  • "Importa estos usuarios desde datos CSV: [contenido CSV]"
  • "Asigna usuarios a grupos según su atributo de departamento"
  • "Proporciona acceso a aplicaciones para estos 5 usuarios"
  • "Ejecuta un flujo de trabajo completo de incorporación para estos nuevos empleados: [contenido CSV]"

Manejo de errores

El servidor incluye un manejo robusto de errores para:

  • Usuario o grupo no encontrado (errores 404)
  • Problemas de autenticación de API
  • Perfiles de usuario faltantes o inválidos
  • Errores generales de API
  • Problemas de análisis CSV
  • Fallos en la asignación de atributos de usuario
  • Errores de aprovisionamiento de aplicaciones
  • Operadores de búsqueda no admitidos (recurso automático a métodos alternativos)

Solución de problemas

Problemas comunes

Herramientas que no aparecen en Claude:

  • Verifique los registros de Claude Desktop: tail -f ~/Library/Logs/Claude/mcp*.log
  • Verifique que todas las variables de entorno estén configuradas correctamente
  • Asegúrese de que la ruta a index.js sea absoluta y correcta

Errores de autenticación:

  • Verifique que su token de API sea válido
  • Compruebe si OKTA_ORG_URL incluye la URL completa con https://
  • Asegúrese de que su dominio de Okta sea correcto

Problemas de conexión del servidor:

  • Verifique si el servidor se compiló correctamente
  • Verifique los permisos de archivo en build/index.js (debe ser 755)
  • Intente ejecutar el servidor directamente: node /path/to/build/index.js

Problemas de búsqueda:

  • Algunos operadores de búsqueda no son compatibles con todos los atributos (por ejemplo, contains no funciona para department)
  • El servidor recurre automáticamente a métodos de búsqueda alternativos cuando es necesario
  • Verifique el mensaje de respuesta para saber qué método de búsqueda se utilizó

Visualización de registros

Para ver los registros del servidor:

Para MacOS/Linux:

tail -n 20 -f ~/Library/Logs/Claude/mcp*.log

Para Windows:

Get-Content -Path "$env:AppData\Claude\Logs\mcp*.log" -Wait -Tail 20

Variables de entorno

Si está recibiendo errores de variables de entorno, verifique:

  • OKTA_ORG_URL: Debe ser una URL completa (por ejemplo, "https://dev-123456.okta.com")
  • OKTA_API_TOKEN: Debe ser un token de API válido

Consideraciones de seguridad

  • Mantenga su token de API seguro
  • No envíe credenciales al control de versiones
  • Use variables de entorno para datos sensibles
  • Rote los tokens de API regularmente
  • Supervise el uso de la API en la Consola de administración de Okta
  • Implemente límites de velocidad para las llamadas a la API
  • Use los permisos mínimos requeridos para el token de API
  • El enmascaramiento de PII está habilitado para parámetros de búsqueda sensibles

Compatibilidad de operadores de búsqueda

Diferentes atributos de Okta admiten diferentes operadores de búsqueda:

Tipo de atributoeqswewcopr
firstName, lastName✅✅✅✅✅
email, login✅✅✅✅✅
department, title✅✅❌❌*✅
division, organization✅✅❌❌*✅
Todos los atributos✅✅⚠️⚠️✅

*❌ = No compatible, ⚠️ = Puede no ser compatible con todos los atributos

Nota: Cuando un operador no es compatible, el servidor recurre automáticamente al filtrado del lado del cliente para garantizar la compatibilidad.

Tipos

El servidor incluye interfaces de TypeScript para datos de usuarios y grupos de Okta:

interface OktaUserProfile {
  login: string;
  email: string;
  secondEmail?: string;
  firstName: string;
  lastName: string;
  displayName: string;
  nickName?: string;
  organization: string;
  title: string;
  division: string;
  department: string;
  employeeNumber: string;
  userType: string;
  costCenter: string;
  mobilePhone?: string;
  primaryPhone?: string;
  streetAddress: string;
  city: string;
  state: string;
  zipCode: string;
  countryCode: string;
  preferredLanguage: string;
  profileUrl?: string;
}

interface OktaUser {
  id: string;
  status: string;
  created: string;
  activated: string;
  lastLogin: string;
  lastUpdated: string;
  statusChanged: string;
  passwordChanged: string;
  profile: OktaUserProfile;
}

interface OktaGroup {
  id: string;
  created: string;
  lastUpdated: string;
  lastMembershipUpdated: string;
  type: string;
  objectClass: string[];
  profile: {
    name: string;
    description: string;
  };
}

Formato CSV para incorporación

Al usar las herramientas de importación masiva o flujo de trabajo de incorporación, su CSV debe incluir estos encabezados:

  • firstName (obligatorio)
  • lastName (obligatorio)
  • email (obligatorio)
  • department (opcional)
  • title (opcional)
  • mobilePhone (opcional)

Ejemplo:

firstName,lastName,email,department,title,mobilePhone
John,Doe,john.doe@example.com,Engineering,Senior Developer,+1-555-123-4567
Jane,Smith,jane.smith@example.com,Marketing,Director,+1-555-987-6543

Licencia

Licencia MIT: consulte el archivo LICENSE para obtener más detalles.

Soporte

Si encuentra algún problema:

  • Consulte la sección de solución de problemas anterior
  • Revise los registros de Claude Desktop
  • Examine la salida de errores del servidor
  • Consulte la documentación para desarrolladores de Okta

Nota: ¡Se aceptan solicitudes de extracción (PRs)!