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