Eventbrite MCP Server
by vishalsachdev
Verified
const { spawn } = require('child_process');
const readline = require('readline');
const fs = require('fs');
// Start the MCP server
const server = spawn('node', ['dist/index.js'], {
cwd: process.cwd(),
env: { ...process.env },
stdio: ['pipe', 'pipe', 'pipe']
});
// Create readline interface for reading server stdout line by line
const rl = readline.createInterface({
input: server.stdout,
crlfDelay: Infinity
});
// Handle server stderr
server.stderr.on('data', (data) => {
console.error(`Server stderr: ${data}`);
});
// Handle server exit
server.on('exit', (code) => {
console.log(`Server exited with code ${code}`);
process.exit(0);
});
// Handle process termination
process.on('SIGINT', () => {
server.kill();
process.exit(0);
});
// Parse command line arguments
const args = process.argv.slice(2);
let status = 'live';
let startDate = '2023-01-01';
let endDate = '2025-12-31';
// Parse command line arguments
for (let i = 0; i < args.length; i++) {
if (args[i] === '--status' && i + 1 < args.length) {
status = args[i + 1];
i++;
} else if (args[i] === '--start-date' && i + 1 < args.length) {
startDate = args[i + 1];
i++;
} else if (args[i] === '--end-date' && i + 1 < args.length) {
endDate = args[i + 1];
i++;
}
}
// Send initialize request
const initializeRequest = {
jsonrpc: '2.0',
id: 1,
method: 'initialize',
params: {
protocolVersion: '2024-11-05',
capabilities: {},
clientInfo: {
name: 'test-client',
version: '1.0.0'
}
}
};
console.log('Sending initialize request...');
server.stdin.write(JSON.stringify(initializeRequest) + '\n');
// Process server responses
rl.on('line', (line) => {
try {
const response = JSON.parse(line);
console.log('Received response:', JSON.stringify(response, null, 2));
// If this is the initialize response, send the tool request
if (response.id === 1 && response.result) {
console.log('Server initialized successfully, sending tool request...');
// Using the correct method name as per MCP specification
setTimeout(() => {
const toolRequest = {
jsonrpc: '2.0',
id: 2,
method: 'tools/call',
params: {
name: 'list_events',
arguments: {
status: status,
start_date: startDate,
end_date: endDate
}
}
};
console.log('Sending list_events request:', JSON.stringify(toolRequest, null, 2));
server.stdin.write(JSON.stringify(toolRequest) + '\n');
}, 500);
}
// If this is the tool response, save it to a file and exit
if (response.id === 2) {
console.log('Tool execution completed');
if (response.result && response.result.content && response.result.content[0] && response.result.content[0].text) {
const eventsData = JSON.parse(response.result.content[0].text);
const events = eventsData.events || eventsData;
console.log(`Found ${events.length} events`);
// Save the events to a file
fs.writeFileSync('events.json', JSON.stringify(events, null, 2));
console.log('Events saved to events.json');
} else if (response.error) {
console.error('Error executing tool:', response.error);
}
setTimeout(() => {
server.kill();
process.exit(0);
}, 1000);
}
} catch (error) {
console.error('Error parsing server response:', error);
}
});