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
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.
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 atributossw(comienza con) - Funciona para todos los atributosew(termina con) - Funciona para la mayoría de los atributosco(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_attributecondepartment 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,
containsno funciona paradepartment) - 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 atributo | eq | sw | ew | co | pr |
|---|---|---|---|---|---|
| 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)!
