UNPKG

okta-mcp-server

Version:

Model Context Protocol (MCP) server for Okta API operations with support for bulk operations and caching

105 lines 3.3 kB
import { z } from 'zod'; // Common schemas for user operations export const UserProfileSchema = z .object({ login: z.string().email().optional(), email: z.string().email(), firstName: z.string().optional(), lastName: z.string().optional(), mobilePhone: z.string().optional(), secondEmail: z.string().email().optional(), }) .passthrough(); // Allow additional profile attributes export const UserCredentialsSchema = z.object({ password: z .object({ value: z.string().min(8).optional(), }) .optional(), recovery_question: z .object({ question: z.string(), answer: z.string(), }) .optional(), provider: z .object({ type: z.enum(['OKTA', 'ACTIVE_DIRECTORY', 'LDAP', 'FEDERATION', 'SOCIAL']), name: z.string().optional(), }) .optional(), }); // List Users tool schema export const ListUsersSchema = z.object({ limit: z.number().min(1).max(200).default(20), after: z.string().optional(), filter: z.string().optional(), search: z.string().optional(), sortBy: z.enum(['id', 'status', 'created', 'activated', 'lastLogin']).optional(), sortOrder: z.enum(['asc', 'desc']).default('asc'), }); // Get User tool schema export const GetUserSchema = z.object({ userIdOrLogin: z.string(), }); // Create User tool schema export const CreateUserSchema = z.object({ profile: UserProfileSchema, credentials: UserCredentialsSchema.optional(), groupIds: z.array(z.string()).optional(), activate: z.boolean().default(true), provider: z.boolean().default(false), nextLogin: z.enum(['changePassword']).optional(), }); // Update User tool schema export const UpdateUserSchema = z.object({ userId: z.string(), profile: UserProfileSchema.partial(), credentials: UserCredentialsSchema.optional(), }); // Delete User tool schema export const DeleteUserSchema = z.object({ userId: z.string(), sendEmail: z.boolean().default(false), }); // Get User Groups tool schema export const GetUserGroupsSchema = z.object({ userId: z.string(), limit: z.number().min(1).max(200).default(20), after: z.string().optional(), }); // Response schemas export const UserResponseSchema = z.object({ id: z.string(), status: z.string(), created: z.string(), activated: z.string().nullable().optional(), statusChanged: z.string().nullable().optional(), lastLogin: z.string().nullable().optional(), lastUpdated: z.string(), passwordChanged: z.string().nullable().optional(), profile: z .object({ login: z.string().email().nullable().optional(), email: z.string().email(), firstName: z.string().nullable().optional(), lastName: z.string().nullable().optional(), mobilePhone: z.string().nullable().optional(), secondEmail: z.string().email().nullable().optional(), }) .passthrough(), _links: z.record(z.unknown()).optional(), }); export const ListUsersResponseSchema = z.object({ users: z.array(UserResponseSchema), _links: z .object({ next: z .object({ href: z.string(), }) .optional(), }) .optional(), }); //# sourceMappingURL=schemas.js.map