mcp-grocy
Version:
Model Context Protocol (MCP) server for Grocy integration
45 lines (44 loc) • 1.63 kB
JavaScript
/**
* Simplified main entry point
* Demonstrates the refactored architecture
*/
// Load environment variables
import 'dotenv/config';
import { GrocyMcpServer } from './server/mcp-server.js';
import { config } from './config/index.js';
import { VERSION, PACKAGE_NAME as SERVER_NAME } from './version.js';
import { logger } from './utils/logger.js';
import { ErrorHandler } from './utils/errors.js';
// Startup banner
logger.info(`Starting ${SERVER_NAME} v${VERSION}`, 'SERVER');
async function main() {
return ErrorHandler.handleAsync(async () => {
// Check API key
if (!config.grocy.api_key) {
logger.warn('No API key configured. Some operations may fail.', 'CONFIG');
}
// Log configuration summary
logger.config(`Grocy URL: ${config.grocy.base_url}`);
logger.config(`SSL Verify: ${config.grocy.enable_ssl_verify}`);
logger.config(`HTTP Server: ${config.server.enable_http_server}`);
// Create and start server
const server = await GrocyMcpServer.create();
await server.start();
logger.info('Server started successfully', 'SERVER');
}, 'server startup');
}
// Error handling
process.on('uncaughtException', (error) => {
logger.error('Uncaught exception', 'PROCESS', { error });
process.exit(1);
});
process.on('unhandledRejection', (reason, promise) => {
logger.error('Unhandled rejection', 'PROCESS', { reason, promise });
process.exit(1);
});
// Start the application
main().catch((error) => {
logger.error('Failed to start server', 'SERVER', { error });
process.exit(1);
});