UNPKG

okta-mcp-server

Version:

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

49 lines 1.8 kB
#!/usr/bin/env node // CRITICAL: Prevent dotenv from printing to stdout and corrupting MCP protocol // This must be set before any imports process.env.DOTENV_CONFIG_SILENT = 'true'; process.env.SUPPRESS_NO_CONFIG_WARNING = 'true'; // Set MCP server mode when running as MCP server if (!process.env.NODE_ENV || process.env.NODE_ENV === 'production') { process.env.MCP_SERVER_MODE = 'true'; process.env.MCP_LOG_FILE = 'true'; } import { OktaMCPServer } from './core/server.js'; import { protocolSafeLogger as logger } from './utils/protocol-safe-logger.js'; import { loadConfig } from './config/index.js'; async function main() { try { // Load configuration const config = loadConfig(); // Create and start server const server = new OktaMCPServer(config); await server.start(); logger.info('Okta MCP Server started successfully'); // Handle graceful shutdown process.on('SIGINT', async () => { logger.info('Shutting down server...'); await server.stop(); process.exit(0); }); process.on('SIGTERM', async () => { logger.info('Shutting down server...'); await server.stop(); process.exit(0); }); // Keep process alive - important for stdio transport setInterval(() => { // Heartbeat to prevent process exit }, 1000); } catch (error) { logger.error('Failed to start server:', error); // Don't log to console in production to avoid stdio interference if (process.env.NODE_ENV === 'development') { console.error('Full error:', error); } process.exit(1); } } // Run the server main().catch(console.error); //# sourceMappingURL=server.js.map