#!/usr/bin/env node
/**
* Simple test script for the GitHub MCP Server
* This script tests the server by sending MCP requests via stdin
*/
import { config } from "dotenv";
import { spawn } from "child_process";
import { fileURLToPath } from "url";
import { dirname, join } from "path";
// Load environment variables from .env file
config();
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
console.log("🧪 Testing GitHub MCP Server...\n");
// Check if GITHUB_TOKEN is set
if (!process.env.GITHUB_TOKEN) {
console.error(
"❌ GITHUB_TOKEN environment variable is required for testing!"
);
console.log("Please set your GitHub token:");
console.log("export GITHUB_TOKEN=your_token_here");
process.exit(1);
}
// Start the server
const serverPath = join(__dirname, "dist", "server.js");
const server = spawn("node", [serverPath], {
stdio: ["pipe", "pipe", "pipe"],
});
// Test messages to send
const testMessages = [
{
jsonrpc: "2.0",
id: 1,
method: "initialize",
params: {
protocolVersion: "2024-11-05",
capabilities: {
tools: {},
},
clientInfo: {
name: "test-client",
version: "1.0.0",
},
},
},
{
jsonrpc: "2.0",
id: 2,
method: "tools/list",
params: {},
},
];
let messageIndex = 0;
// Handle server output
server.stdout.on("data", (data) => {
const output = data.toString();
console.log("📤 Server Response:");
console.log(output);
console.log("---");
// Send next message after a short delay
if (messageIndex < testMessages.length) {
setTimeout(() => {
const message = testMessages[messageIndex];
if (message) {
console.log(`📥 Sending message ${messageIndex + 1}:`, message.method);
server.stdin.write(JSON.stringify(message) + "\n");
messageIndex++;
}
}, 1000);
} else {
// Test complete
setTimeout(() => {
console.log("✅ Test completed successfully!");
server.kill();
process.exit(0);
}, 1000);
}
});
// Handle server errors
server.stderr.on("data", (data) => {
console.error("❌ Server Error:", data.toString());
});
server.on("close", (code) => {
if (code !== 0) {
console.error(`❌ Server exited with code ${code}`);
process.exit(1);
}
});
// Send first message after a short delay
setTimeout(() => {
const message = testMessages[0];
console.log(`📥 Sending message 1:`, message.method);
server.stdin.write(JSON.stringify(message) + "\n");
messageIndex++;
}, 500);