UNPKG

@devyhan/naver-maps-mcp

Version:

MCP 서버 for 네이버 지도 API

129 lines (107 loc) 4.12 kB
/** * 네이버 지도 MCP 서버 테스트 * MCP 서버의 기능을 확인하기 위한 테스트 코드입니다. */ import { spawnSync } from 'child_process'; import { fileURLToPath } from 'url'; import { dirname, resolve } from 'path'; import dotenv from 'dotenv'; // 환경 변수 로드 const __dirname = dirname(fileURLToPath(import.meta.url)); const rootDir = resolve(__dirname, '../'); dotenv.config({ path: resolve(rootDir, '.env') }); // 색상 정의 (콘솔 출력용) const colors = { reset: '\x1b[0m', bright: '\x1b[1m', green: '\x1b[32m', red: '\x1b[31m', yellow: '\x1b[33m', blue: '\x1b[34m' }; // 테스트 상태 출력 함수들 function logSuccess(message) { console.log(`${colors.green}${message}${colors.reset}`); } function logError(message, error) { console.error(`${colors.red}${message}${colors.reset}`); if (error) console.error(error); } function logInfo(message) { console.log(`${colors.blue}${message}${colors.reset}`); } function logHeader(message) { console.log(`\n${colors.bright}${colors.yellow}${message}${colors.reset}`); } /** * 테스트를 실행합니다. */ async function runTests() { logHeader('네이버 지도 MCP 서버 테스트'); logInfo('환경 변수 확인 중...'); // 필수 환경 변수 확인 const requiredVars = ['NAVER_CLIENT_ID', 'NAVER_CLIENT_SECRET']; const missingVars = requiredVars.filter(varName => !process.env[varName]); if (missingVars.length > 0) { logError(`필요한 환경 변수가 설정되지 않았습니다: ${missingVars.join(', ')}`); logInfo('테스트를 실행하려면 .env 파일을 생성하고 필요한 환경 변수를 설정하세요.'); return; } logSuccess('환경 변수가 올바르게 설정되었습니다.'); // 서버 시작 테스트 logHeader('서버 시작 테스트'); logInfo('서버를 시작합니다 (5초 후 종료)...'); try { // 서버 프로세스 시작 (별도 프로세스로) const serverProcess = spawnSync('node', ['index.js'], { cwd: rootDir, timeout: 5000, stdio: 'pipe', encoding: 'utf-8' }); if (serverProcess.error) { logError('서버 시작 실패', serverProcess.error); return; } const output = serverProcess.stdout || ''; const errorOutput = serverProcess.stderr || ''; if (errorOutput.includes('Error') || errorOutput.includes('error')) { logError('서버 시작 중 오류 발생:', errorOutput); } else if (output.includes('성공적으로 시작') || !errorOutput) { logSuccess('서버가 성공적으로 시작되었습니다.'); } else { logInfo('서버 시작 - 확정할 수 없음, 출력 확인:'); console.log(output); if (errorOutput) { console.log('오류 출력:'); console.log(errorOutput); } } } catch (error) { logError('서버 시작 테스트 중 오류 발생', error); } // API 클라이언트 테스트 logHeader('API 클라이언트 테스트'); logInfo('API 클라이언트를 테스트합니다...'); try { // 실제 테스트를 위해 클라이언트 모듈을 가져오고 API 호출을 수행할 수 있음 // 현재는 직접 API 호출 없이 모듈 가져오기만 테스트 const { default: naverMapsClient } = await import('../src/api/naverMapsClient.js'); if (naverMapsClient) { logSuccess('API 클라이언트 모듈이 성공적으로 로드되었습니다.'); } else { logError('API 클라이언트 모듈 로드 실패'); } } catch (error) { logError('API 클라이언트 테스트 중 오류 발생', error); } // 최종 결과 logHeader('테스트 완료'); logInfo('모든 테스트가 완료되었습니다. 자세한 테스트를 위해서는 MCP Inspector를 사용하세요.'); logInfo('MCP Inspector 실행: npx @modelcontextprotocol/inspector node index.js'); } // 테스트 실행 runTests().catch(error => { logError('테스트 실행 중 예상치 못한 오류 발생', error); process.exit(1); });