@equidam/mcp-server
Version:
Equidam MCP Server - Bridge between AI assistants and Equidam's company valuation API
94 lines (78 loc) • 2.31 kB
JavaScript
/**
* Equidam MCP Server
* CLI entry point for the Equidam Model Context Protocol server
*/
const { Command } = require('commander');
const { McpServer } = require('./src/server');
const { version } = require('./package.json');
// Create CLI program
const program = new Command();
program
.name('@equidam/mcp-server')
.description('Equidam MCP Server - Bridge between AI assistants and Equidam API')
.version(version)
.requiredOption('--api-key <key>', 'Equidam API token (required)')
.option('--base-url <url>', 'API base URL', 'https://app.equidam.com/api/v3')
.option('--debug', 'Enable debug logging to stderr', false)
.parse();
const options = program.opts();
// Validate required options
if (!options.apiKey) {
console.error('Error: --api-key is required');
process.exit(1);
}
// Debug logging function - only to stderr
const debugLog = (...args) => {
if (options.debug) {
console.error('[DEBUG]', ...args);
}
};
// Initialize and start MCP server
async function main() {
try {
debugLog('Starting Equidam MCP Server...');
debugLog('Configuration:', {
baseUrl: options.baseUrl,
debug: options.debug,
apiKeyProvided: !!options.apiKey
});
const server = new McpServer({
apiKey: options.apiKey,
baseUrl: options.baseUrl,
debug: options.debug,
debugLog
});
await server.start();
debugLog('MCP Server started successfully');
} catch (error) {
console.error('Failed to start MCP server:', error.message);
if (options.debug) {
console.error('Stack trace:', error.stack);
}
process.exit(1);
}
}
// Handle graceful shutdown
process.on('SIGINT', () => {
debugLog('Received SIGINT, shutting down gracefully...');
process.exit(0);
});
process.on('SIGTERM', () => {
debugLog('Received SIGTERM, shutting down gracefully...');
process.exit(0);
});
// Handle uncaught exceptions
process.on('uncaughtException', (error) => {
console.error('Uncaught exception:', error.message);
if (options.debug) {
console.error('Stack trace:', error.stack);
}
process.exit(1);
});
process.on('unhandledRejection', (reason, promise) => {
console.error('Unhandled rejection at:', promise, 'reason:', reason);
process.exit(1);
});
// Start the server
main();