UNPKG

okta-mcp-server

Version:

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

65 lines 3.14 kB
import { OktaClient } from '../lib/okta-client.js'; import { MockOktaClient } from './mock-okta-client.js'; import { logger } from '../utils/logger.js'; export class OktaClientFactory { static async create(config) { // Check environment variable first const shouldUseMock = config.useMock ?? process.env['USE_MOCK_OKTA'] === 'true'; logger.info('OktaClientFactory.create called with:', { useMock: config.useMock, USE_MOCK_OKTA: process.env['USE_MOCK_OKTA'], shouldUseMock, hasRealConfig: !!(config.realConfig?.domain && config.realConfig?.apiToken), domain: config.realConfig?.domain ? '***' + config.realConfig.domain.slice(-10) : 'NOT SET', hasApiToken: !!config.realConfig?.apiToken, }); if (shouldUseMock) { logger.info('Using Mock Okta Client'); return new MockOktaClient(config.mockConfig); } if (!config.realConfig?.domain || !config.realConfig?.apiToken) { logger.warn('Missing Okta configuration, falling back to mock client', { hasDomain: !!config.realConfig?.domain, hasApiToken: !!config.realConfig?.apiToken, domain: config.realConfig?.domain, hasToken: !!config.realConfig?.apiToken, tokenLength: config.realConfig?.apiToken?.length, }); return new MockOktaClient(config.mockConfig); } return new OktaClient(config.realConfig); } // Create a client from environment variables static async fromEnv() { const useMock = process.env['USE_MOCK_OKTA'] === 'true'; if (useMock) { const mockConfig = { userCount: parseInt(process.env['MOCK_USER_COUNT'] || '1000', 10), groupCount: parseInt(process.env['MOCK_GROUP_COUNT'] || '100', 10), appCount: parseInt(process.env['MOCK_APP_COUNT'] || '50', 10), policyCount: parseInt(process.env['MOCK_POLICY_COUNT'] || '20', 10), enableAuth: process.env['MOCK_ENABLE_AUTH'] !== 'false', enableRateLimit: process.env['MOCK_ENABLE_RATE_LIMIT'] !== 'false', enableErrors: process.env['MOCK_ENABLE_ERRORS'] !== 'false', enableDelays: process.env['MOCK_ENABLE_DELAYS'] !== 'false', errorRate: process.env['MOCK_ERROR_RATE'] ? parseFloat(process.env['MOCK_ERROR_RATE']) : 0.02, networkConditions: process.env['MOCK_NETWORK_CONDITIONS'] || 'normal', }; if (process.env['MOCK_SEED']) { mockConfig.seed = parseInt(process.env['MOCK_SEED'], 10); } return new MockOktaClient(mockConfig); } const oktaConfig = { domain: process.env['OKTA_DOMAIN'] || '', apiToken: process.env['OKTA_API_TOKEN'] || '', }; return this.create({ useMock: false, realConfig: oktaConfig, }); } } //# sourceMappingURL=okta-client-factory.js.map