@solangii/upbit-mcp-server
Version:
Upbit 암호화폐 거래소 API와 연동된 MCP 서버
69 lines (59 loc) • 1.53 kB
JavaScript
#!/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');
});