evolution-api-mcp
Version:
MCP Server for Evolution API v2 - Integrate WhatsApp functionality with Claude Desktop and other MCP clients
59 lines (52 loc) • 1.99 kB
JavaScript
/**
* Evolution API MCP Server - NPX Executable
* This is the entry point when running via npx evolution-api-mcp
*/
// CRITICAL: MCP STDIO transport requires NOTHING on stdout except MCP messages
// Redirect all console.log to stderr IMMEDIATELY before any imports
const originalConsoleLog = console.log;
console.log = (...args) => {
console.error('[STDOUT-REDIRECT]', ...args);
};
// Also ensure any process output goes to stderr during initialization
const originalStdoutWrite = process.stdout.write;
let mcpStarted = false;
process.stdout.write = function(string, encoding, fd) {
if (mcpStarted) {
// MCP server is running, allow normal stdout for MCP messages
return originalStdoutWrite.call(this, string, encoding, fd);
} else {
// During initialization, redirect to stderr
return process.stderr.write(`[INIT-REDIRECT] ${string}`, encoding, fd);
}
};
// Function to restore stdout for MCP protocol
global.enableMcpStdout = function() {
mcpStarted = true;
process.stdout.write = originalStdoutWrite;
};
const path = require('path');
// Determine if we're running from source or built distribution
const isBuilt = require('fs').existsSync(path.join(__dirname, '..', 'dist'));
if (isBuilt) {
// Running from built distribution
require('../dist/cli/cli.js').runCli().catch(error => {
console.error('Failed to start Evolution API MCP Server:', error);
process.exit(1);
});
} else {
// Running from source (development)
try {
require('tsx/cjs').register();
require('../src/cli/cli.ts').runCli().catch(error => {
console.error('Failed to start Evolution API MCP Server:', error);
process.exit(1);
});
} catch (error) {
console.error('Development mode requires tsx to be installed.');
console.error('Please run: npm install tsx');
console.error('Or build the project first: npm run build');
process.exit(1);
}
}