@takch02/server-doctor 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +45 -45
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -8,63 +8,63 @@ import { createRequire } from "module";
|
|
|
8
8
|
|
|
9
9
|
const require = createRequire(import.meta.url);
|
|
10
10
|
const EventSource = require("eventsource");
|
|
11
|
-
global.EventSource = EventSource;
|
|
12
11
|
|
|
12
|
+
// ⭐ AWS 서버 주소 (본인 주소 확인!)
|
|
13
13
|
const SERVER_URL = "http://ec2-52-79-247-25.ap-northeast-2.compute.amazonaws.com/mcp/sse";
|
|
14
14
|
|
|
15
|
+
global.EventSource = EventSource;
|
|
15
16
|
|
|
16
17
|
async function main() {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
// 연결 시도
|
|
25
|
-
try {
|
|
26
|
-
await client.connect(transport);
|
|
27
|
-
} catch (err) {
|
|
28
|
-
console.error("AWS 서버 연결 실패:", err);
|
|
29
|
-
process.exit(1);
|
|
30
|
-
}
|
|
18
|
+
const transport = new SSEClientTransport(new URL(SERVER_URL));
|
|
19
|
+
const client = new Client(
|
|
20
|
+
{ name: "bridge-client", version: "1.0.0" },
|
|
21
|
+
{ capabilities: {} }
|
|
22
|
+
);
|
|
31
23
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
24
|
+
try {
|
|
25
|
+
await client.connect(transport);
|
|
26
|
+
} catch (err) {
|
|
27
|
+
console.error("❌ AWS 서버 연결 실패:", err);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
37
30
|
|
|
38
|
-
|
|
39
|
-
|
|
31
|
+
const server = new McpServer({
|
|
32
|
+
name: "ServerDoctor-Bridge",
|
|
33
|
+
version: "1.0.0",
|
|
34
|
+
});
|
|
40
35
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
console.error(`[Bridge Debug] RawArgs:`, JSON.stringify(rawArgs));
|
|
36
|
+
const tools = await client.listTools();
|
|
37
|
+
|
|
38
|
+
for (const tool of tools.tools) {
|
|
39
|
+
// Java에서 정의한 스키마를 그대로 Node.js 서버에 등록
|
|
40
|
+
server.tool(tool.name, tool.description, tool.inputSchema, async (args) => {
|
|
47
41
|
|
|
48
|
-
|
|
42
|
+
// 🔍 [디버깅] Claude가 보낸 데이터 확인
|
|
43
|
+
console.error(`[Bridge Log] Tool 호출됨: ${tool.name}`);
|
|
44
|
+
console.error(`[Bridge Log] 받은 인자(args):`, JSON.stringify(args));
|
|
49
45
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
const result = await client.callTool({
|
|
55
|
-
name: tool.name,
|
|
56
|
-
arguments: realArgs, // 정제된 인자 전송
|
|
57
|
-
});
|
|
58
|
-
return result;
|
|
59
|
-
});
|
|
60
|
-
}
|
|
46
|
+
// 🚨 안전장치: 인자가 비어있거나 이상하게 올 경우를 대비한 로직
|
|
47
|
+
// (Node SDK 버전에 따라 args가 래핑되어 올 수 있음)
|
|
48
|
+
let finalArgs = args;
|
|
61
49
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
50
|
+
// 만약 args가 아예 비어있는데({}) 필수 파라미터가 필요한 도구라면?
|
|
51
|
+
// 일단 그대로 AWS로 넘겨서 AWS가 "값 내놔"라고 에러를 뱉게 하는 게 낫습니다.
|
|
52
|
+
// (여기서 임의로 수정하면 오히려 꼬임)
|
|
53
|
+
|
|
54
|
+
const result = await client.callTool({
|
|
55
|
+
name: tool.name,
|
|
56
|
+
arguments: finalArgs,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
return result;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const stdioTransport = new StdioServerTransport();
|
|
64
|
+
await server.connect(stdioTransport);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
main().catch((error) => {
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
console.error("❌ Bridge 오류 발생:", error);
|
|
69
|
+
process.exit(1);
|
|
70
70
|
});
|