UNPKG

okta-mcp-server

Version:

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

114 lines 5.72 kB
import { handleListUsers, handleGetUser, handleCreateUser, handleUpdateUser, handleDeleteUser, handleGetUserGroups, } from './users/index.js'; import { handleListGroups, handleGetGroup, handleCreateGroup, handleUpdateGroup, handleDeleteGroup, handleListGroupMembers, handleAddGroupMember, handleRemoveGroupMember, } from './groups/index.js'; import { handleBulkCreateUsers, handleBulkUpdateUsers, handleBulkDeleteUsers, handleExportUsers, handleGenerateImportTemplate, handleGetBulkOperationStatus, } from './bulk/index.js'; import { handleListApps, handleGetApp, handleCreateApp, handleUpdateApp, handleDeleteApp, handleActivateApp, handleDeactivateApp, handleAssignUserToApp, handleAssignGroupToApp, handleRemoveUserFromApp, handleRemoveGroupFromApp, handleListAppUsers, handleListAppGroups, handleUpdateAppUser, } from './apps/index.js'; import { handleGetReadOnlyStatus } from './system/index.js'; import { handleQueryAuditLogs, handleGetAuditStatistics, handleExportAuditLogs, handleCheckAuditIntegrity, handleGenerateComplianceReport, handleGetAuditMetrics, } from './audit/index.js'; import { handleListPolicies, handleGetPolicy, handleCreatePasswordPolicy, handleCreateSignOnPolicy, handleCreateMfaPolicy, handleUpdatePolicy, handleDeletePolicy, handleActivatePolicy, handleDeactivatePolicy, handleListPolicyRules, handleGetPolicyRule, handleCreatePolicyRule, handleUpdatePolicyRule, handleDeletePolicyRule, handleActivatePolicyRule, handleDeactivatePolicyRule, } from './policies/index.js'; // Map of tool names to their handlers export const toolHandlers = { // User management tools (use IOktaClient) listUsers: handleListUsers, getUser: handleGetUser, createUser: handleCreateUser, updateUser: handleUpdateUser, deleteUser: handleDeleteUser, getUserGroups: handleGetUserGroups, // Group management tools (use IOktaClient) listGroups: handleListGroups, getGroup: handleGetGroup, createGroup: handleCreateGroup, updateGroup: handleUpdateGroup, deleteGroup: handleDeleteGroup, listGroupMembers: handleListGroupMembers, addGroupMember: handleAddGroupMember, removeGroupMember: handleRemoveGroupMember, // Bulk operation tools (use IOktaClient) bulkCreateUsers: handleBulkCreateUsers, bulkUpdateUsers: handleBulkUpdateUsers, bulkDeleteUsers: handleBulkDeleteUsers, exportUsers: handleExportUsers, generateImportTemplate: handleGenerateImportTemplate, getBulkOperationStatus: handleGetBulkOperationStatus, // Application management tools (use IOktaClient) listApps: handleListApps, getApp: handleGetApp, createApp: handleCreateApp, updateApp: handleUpdateApp, deleteApp: handleDeleteApp, activateApp: handleActivateApp, deactivateApp: handleDeactivateApp, assignUserToApp: handleAssignUserToApp, assignGroupToApp: handleAssignGroupToApp, removeUserFromApp: handleRemoveUserFromApp, removeGroupFromApp: handleRemoveGroupFromApp, listAppUsers: handleListAppUsers, listAppGroups: handleListAppGroups, updateAppUser: handleUpdateAppUser, // Audit tools (use Container) queryAuditLogs: handleQueryAuditLogs, getAuditStatistics: handleGetAuditStatistics, exportAuditLogs: handleExportAuditLogs, checkAuditIntegrity: handleCheckAuditIntegrity, generateComplianceReport: handleGenerateComplianceReport, getAuditMetrics: handleGetAuditMetrics, // Policy management tools (use IOktaClient) listPolicies: handleListPolicies, getPolicy: handleGetPolicy, createPasswordPolicy: handleCreatePasswordPolicy, createSignOnPolicy: handleCreateSignOnPolicy, createMfaPolicy: handleCreateMfaPolicy, updatePolicy: handleUpdatePolicy, deletePolicy: handleDeletePolicy, activatePolicy: handleActivatePolicy, deactivatePolicy: handleDeactivatePolicy, listPolicyRules: handleListPolicyRules, getPolicyRule: handleGetPolicyRule, createPolicyRule: handleCreatePolicyRule, updatePolicyRule: handleUpdatePolicyRule, deletePolicyRule: handleDeletePolicyRule, activatePolicyRule: handleActivatePolicyRule, deactivatePolicyRule: handleDeactivatePolicyRule, // System tools (use Container) getReadOnlyStatus: handleGetReadOnlyStatus, // Other tool categories will be added here }; /** * Main tool handler that routes to specific tool implementations */ export async function handleToolCall(toolName, args, clientOrContainer) { const handler = toolHandlers[toolName]; if (!handler) { return { content: [ { type: 'text', text: `Unknown tool: ${toolName}`, }, ], isError: true, }; } // Tools that need Container (audit and system tools), others need IOktaClient const needsContainer = toolName.startsWith('queryAudit') || toolName.startsWith('getAudit') || toolName.startsWith('exportAudit') || toolName.startsWith('checkAudit') || toolName.startsWith('generateCompliance') || toolName === 'getReadOnlyStatus'; if (needsContainer) { // For container tools (audit and system), we expect a Container if (!('get' in clientOrContainer)) { throw new Error(`Tool ${toolName} requires a Container, not IOktaClient`); } return handler(args, clientOrContainer); } else { // For other tools, we expect an IOktaClient if ('get' in clientOrContainer) { throw new Error(`Tool ${toolName} requires an IOktaClient, not Container`); } return handler(args, clientOrContainer); } } //# sourceMappingURL=handlers.js.map