#!/usr/bin/env node
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { createServer } from './server.js';
import { log } from './utils/logger.js';
import { stopAllWda } from './executor/wda-runner.js';
async function cleanup(): Promise<void> {
log('Cleaning up WDA processes...');
await stopAllWda();
log('Cleanup complete');
}
async function main(): Promise<void> {
const server = createServer();
const transport = new StdioServerTransport();
// Register shutdown handlers
process.on('SIGINT', async () => {
log('Received SIGINT, shutting down...');
await cleanup();
process.exit(0);
});
process.on('SIGTERM', async () => {
log('Received SIGTERM, shutting down...');
await cleanup();
process.exit(0);
});
process.on('beforeExit', async () => {
await cleanup();
});
log('Starting xcode-mcp server...');
await server.connect(transport);
log('Server connected and ready');
}
main().catch((error) => {
console.error('Fatal error:', error);
process.exit(1);
});