@fireberry/mcp-server
Version:
MCP Server for hassle-free usage of Fireberry's API.
51 lines (40 loc) • 1.56 kB
text/typescript
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { z } from 'zod';
import { createServer } from './server.js';
import { logger } from './utils/index.js';
import type { ToolsBundle } from './constants.js';
export async function main({ toolsBundle }: { toolsBundle: ToolsBundle }) {
logger.info('Starting Fireberry MCP Server (stdio)...');
const transport = new StdioServerTransport();
const envResult = z.object({ FIREBERRY_TOKEN_ID: z.uuid() }).safeParse(process.env);
if (!envResult.success) {
logger.error('Environment validation failed:', z.treeifyError(envResult.error));
process.exit(1);
}
const { server, cleanup } = createServer(envResult.data.FIREBERRY_TOKEN_ID, logger, { toolsBundle });
await server.connect(transport);
// Cleanup on exit
process.on('SIGINT', () => {
logger.info('Received SIGINT, shutting down...');
cleanup()
.then(() => {
process.exit(0);
})
.catch((error: unknown) => {
logger.error('Error closing server:', error);
process.exit(1);
});
});
process.on('SIGTERM', () => {
logger.info('Received SIGTERM, shutting down...');
cleanup()
.then(() => {
process.exit(0);
})
.catch((error: unknown) => {
logger.error('Error closing server:', error);
process.exit(1);
});
});
}