UNPKG

@solangii/upbit-mcp-server

Version:

Upbit 암호화폐 거래소 API와 연동된 MCP 서버

69 lines (59 loc) 1.53 kB
#!/usr/bin/env node const { spawn } = require('child_process'); const path = require('path'); const fs = require('fs'); const dotenv = require('dotenv'); // 환경 변수 설정 dotenv.config(); // 메인 스크립트 경로 확인 const pythonPath = path.join(__dirname, '../main.py'); if (!fs.existsSync(pythonPath)) { process.stderr.write(JSON.stringify({ jsonrpc: "2.0", error: { code: -32603, message: `메인 스크립트를 찾을 수 없습니다: ${pythonPath}` }, id: null }) + '\n'); process.exit(1); } // MCP 서버 시작 const python = spawn('python', [pythonPath], { stdio: ['pipe', 'pipe', process.stderr], shell: true }); // 표준 입력을 Python 프로세스로 연결 process.stdin.pipe(python.stdin); // Python 프로세스의 출력을 표준 출력으로 연결 python.stdout.pipe(process.stdout); // 에러 처리 python.on('error', (error) => { process.stderr.write(JSON.stringify({ jsonrpc: "2.0", error: { code: -32603, message: `서버 실행 오류: ${error.message}` }, id: null }) + '\n'); process.exit(1); }); // 프로세스 종료 처리 python.on('close', (code) => { if (code !== 0) { process.stderr.write(JSON.stringify({ jsonrpc: "2.0", error: { code: -32603, message: `서버가 코드 ${code}로 종료되었습니다` }, id: null }) + '\n'); process.exit(code); } }); // 종료 시그널 처리 process.on('SIGINT', () => { python.kill('SIGINT'); });