test-enhanced-mcp-complete.tsβ’4.36 kB
#!/usr/bin/env node
/**
* Test script for Enhanced MCP-MAGMA-Handbook Server v3.0
*/
import { spawn } from 'child_process';
import readline from 'readline';
console.log('π§ͺ Enhanced MCP-MAGMA-Handbook v3.0 ν
μ€νΈ μμ...\n');
const serverProcess = spawn('npx', ['tsx', 'enhanced-mcp-server.ts'], {
stdio: ['pipe', 'pipe', 'pipe'],
env: {
...process.env,
OPENAI_API_KEY: process.env.OPENAI_API_KEY,
SUPABASE_URL: process.env.SUPABASE_URL,
SUPABASE_KEY: process.env.SUPABASE_KEY
}
});
serverProcess.stderr.on('data', (data) => {
console.log(`π Server: ${data.toString().trim()}`);
});
function sendRequest(method: string, params: any = {}) {
const request = { jsonrpc: '2.0', id: Date.now(), method, params };
serverProcess.stdin.write(JSON.stringify(request) + '\n');
}
const rl = readline.createInterface({
input: serverProcess.stdout,
terminal: false
});
let testResults: any[] = [];
let currentTest = '';
rl.on('line', (line) => {
try {
const response = JSON.parse(line);
if (response.result) {
console.log(`\nβ
${currentTest} μ±κ³΅:`);
if (response.result.content?.[0]?.text) {
try {
const parsed = JSON.parse(response.result.content[0].text);
console.log(JSON.stringify(parsed, null, 2));
} catch {
console.log(response.result.content[0].text);
}
}
testResults.push({ test: currentTest, status: 'success' });
}
} catch (e) {
console.log(`π Server: ${line}`);
}
});
setTimeout(() => {
console.log('\nπ ν
μ€νΈ μνμ€ μμ...\n');
sendRequest('initialize', {
protocolVersion: '1.0.0',
capabilities: {},
clientInfo: { name: 'enhanced-mcp-test', version: '3.0.0' }
});
// 1. Health check
setTimeout(() => {
currentTest = 'Health Status νμΈ';
console.log(`\nπ ν
μ€νΈ 1: ${currentTest}`);
sendRequest('tools/call', {
name: 'get_health_status',
arguments: {}
});
}, 1000);
// 2. Collections
setTimeout(() => {
currentTest = 'Collections λͺ©λ‘';
console.log(`\nπ ν
μ€νΈ 2: ${currentTest}`);
sendRequest('tools/call', {
name: 'list_collections',
arguments: {}
});
}, 3000);
// 3. Multi-query search
setTimeout(() => {
currentTest = 'Multi-Query Hybrid Search';
console.log(`\nπ ν
μ€νΈ 3: ${currentTest}`);
sendRequest('tools/call', {
name: 'search_magma',
arguments: {
query: 'How to create polynomial rings in MAGMA?',
limit: 3,
search_type: 'hybrid',
use_multi_query: true
}
});
}, 5000);
// 4. Save conversation
setTimeout(() => {
currentTest = 'Conversation μ μ₯';
console.log(`\nπ ν
μ€νΈ 4: ${currentTest}`);
sendRequest('tools/call', {
name: 'save_conversation',
arguments: {
collection_id: 'magma-handbook',
conversation: 'User: MAGMAμμ λ€νμ νμ μ΄λ»κ² λ§λλμ?\nAssistant: MAGMAμμ λ€νμ νμ PolynomialRing ν¨μλ₯Ό μ¬μ©ν©λλ€.',
title: 'Enhanced MCP Test Conversation'
}
});
}, 8000);
// Summary
setTimeout(() => {
console.log('\n' + '='.repeat(60));
console.log('π ν
μ€νΈ κ²°κ³Ό μμ½:');
console.log('='.repeat(60));
console.log(`\nβ
μλ£λ ν
μ€νΈ: ${testResults.length}κ°`);
console.log('\nπ Enhanced MCP v3.0 μ£Όμ κΈ°λ₯:');
console.log(' β¨ Multi-query κ²μ - μ¬λ¬ κ΄μ μμ μ§λ¬Έ μμ±');
console.log(' π Hybrid κ²μ - μλ§¨ν± + ν€μλ κ²μ κ²°ν©');
console.log(' π Collection κ΄λ¦¬ - μ£Όμ λ³ λ¬Έμ λΆλ₯');
console.log(' π¬ Conversation μ μ₯ - AI λν λ΄μ© μ μ₯');
console.log(' β‘ λμ κ²μ νμ
- semantic/keyword/hybrid μ ν');
console.log('\nπ― λ©μ€ μ¬μ©λ²:');
console.log('1. search_magma: ν₯μλ κ²μ (κΈ°λ³Έμ μΌλ‘ multi-query + hybrid)');
console.log('2. list_collections: μ¬μ© κ°λ₯ν 컬λ μ
νμΈ');
console.log('3. save_conversation: μ μ©ν λν λ΄μ© μ μ₯');
console.log('4. create_collection: μλ‘μ΄ μ£Όμ λ³ μ»¬λ μ
μμ±');
serverProcess.kill();
process.exit(0);
}, 12000);
}, 2000);
process.on('SIGINT', () => {
serverProcess.kill();
process.exit(0);
});