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
JavaScript
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