#!/usr/bin/env node
/**
* Simple MCP Server Test for OnCall Runbook
*/
console.log('Starting OnCall Runbook MCP Server...');
// Test environment
if (!process.env.RUNBOOK_ROOT) {
console.error('Error: RUNBOOK_ROOT environment variable not set');
process.exit(1);
}
console.log('RUNBOOK_ROOT:', process.env.RUNBOOK_ROOT);
// Test basic imports
try {
console.log('Testing imports...');
// Import core modules
const { loadConfig } = require('./src/adapters/config.mjs');
console.log('✅ Config adapter imported');
} catch (error) {
console.error('❌ Import error:', error.message);
// Try ESM import instead
(async () => {
try {
console.log('Trying ESM imports...');
const { loadConfig } = await import('./src/adapters/config.mjs');
const config = loadConfig();
console.log('✅ Configuration loaded:', config);
const { createFsAdapter } = await import('./src/adapters/fsio.mjs');
const fsAdapter = createFsAdapter(config.root);
console.log('✅ FS adapter created');
console.log('🎉 Basic components working!');
// Simple JSON-RPC server
console.log('{"jsonrpc":"2.0","method":"server/initialized","params":{"name":"oncall-runbook-server","version":"1.0.0"}}');
process.stdin.on('data', (data) => {
try {
const request = JSON.parse(data.toString().trim());
if (request.method === 'tools/list') {
const response = {
jsonrpc: '2.0',
id: request.id,
result: {
tools: [
{
name: 'rb.search',
description: 'Search runbook knowledge base',
inputSchema: {
type: 'object',
properties: {
q: { type: 'string', description: 'Search query' }
},
required: ['q']
}
}
]
}
};
console.log(JSON.stringify(response));
}
} catch (err) {
console.error('Request error:', err.message);
}
});
} catch (esmError) {
console.error('❌ ESM import error:', esmError.message);
process.exit(1);
}
})();
}