qbo-mcp-ts
Version:
TypeScript QuickBooks Online MCP Server with enhanced features and dual transport support
62 lines • 1.98 kB
JavaScript
;
/**
* STDIO Transport implementation for MCP
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.StdioTransport = void 0;
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
const logger_1 = require("../utils/logger");
/**
* STDIO Transport for local development and CLI usage
*/
class StdioTransport {
server;
transport;
constructor(server) {
this.server = server;
logger_1.logger.info('Initializing STDIO transport');
}
/**
* Start the STDIO transport
*/
async start() {
try {
logger_1.logger.info('Starting STDIO transport');
// Create STDIO transport
this.transport = new stdio_js_1.StdioServerTransport();
// Connect server to transport
await this.server.connect(this.transport);
logger_1.logger.info('STDIO transport started successfully');
// Handle process termination
process.on('SIGINT', () => this.shutdown());
process.on('SIGTERM', () => this.shutdown());
}
catch (error) {
logger_1.logger.error('Failed to start STDIO transport', error);
throw error;
}
}
/**
* Shutdown the transport
*/
async shutdown() {
logger_1.logger.info('Shutting down STDIO transport');
try {
await this.server.close();
if (this.transport) {
// Close stdio streams properly
process.stdin.destroy();
process.stdout.end();
process.stderr.end();
}
logger_1.logger.info('STDIO transport shutdown complete');
process.exit(0);
}
catch (error) {
logger_1.logger.error('Error during STDIO transport shutdown', error);
process.exit(1);
}
}
}
exports.StdioTransport = StdioTransport;
//# sourceMappingURL=stdio.js.map