simctl-mcp
Version:
simctl mcp server
51 lines (50 loc) • 1.28 kB
JavaScript
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { createSimctlMcpServer } from './server.js';
import arg from 'arg';
const argSpec = {
'--http': Boolean,
'--port': Number,
// 别名
'-p': '--port'
};
function parseArgs() {
try {
return arg(argSpec);
}
catch (err) {
console.error('Error parsing arguments:', err.message);
process.exit(1);
}
}
function getPort(args) {
// 首先检查命令行参数
if (args['--port'] != null) {
return args['--port'];
}
// 然后检查环境变量
const envPort = process.env.PORT;
if (envPort) {
const port = Number.parseInt(envPort);
if (!Number.isNaN(port)) {
return port;
}
}
// 默认端口
return 8081;
}
export async function startServer() {
const args = parseArgs();
const server = createSimctlMcpServer();
if (args['--http']) {
const port = getPort(args);
await server.startHttpServer(port);
return;
}
const transport = new StdioServerTransport();
await server.connect(transport);
}
startServer().catch((error) => {
console.error('Failed to start server:', error);
process.exit(1);
});