From f1456e304c40b35e7f4b20a752b4f7b5b986d965 Mon Sep 17 00:00:00 2001 From: "Namhyeon, Go" Date: Mon, 16 Mar 2026 21:37:16 +0900 Subject: [PATCH] Add tools call handling and translate docs Pass the serializer and request id to ResolveToolsCall and implement a basic dispatcher that extracts params.method. Add a handler stub for "run_jsrt_script" (extracts the script argument; implementation TODO) and log unknown tool methods. Also update McpToolsList.json scriptContract notes from Korean to English to improve readability/localization. --- .../ApiEndpoints/JsonRpc2.cs | 21 ++++++++++++++++--- .../WelsonJS.Launcher/McpToolsList.json | 4 ++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/WelsonJS.Augmented/WelsonJS.Launcher/ApiEndpoints/JsonRpc2.cs b/WelsonJS.Augmented/WelsonJS.Launcher/ApiEndpoints/JsonRpc2.cs index af9aaa0..a410c68 100644 --- a/WelsonJS.Augmented/WelsonJS.Launcher/ApiEndpoints/JsonRpc2.cs +++ b/WelsonJS.Augmented/WelsonJS.Launcher/ApiEndpoints/JsonRpc2.cs @@ -83,7 +83,7 @@ namespace WelsonJS.Launcher.ApiEndpoints break; case "tools/call": - await ResolveToolsCall(ser.ExtractFrom(id, "params", "name")); + await ResolveToolsCall(ser, id); break; } @@ -93,9 +93,24 @@ namespace WelsonJS.Launcher.ApiEndpoints } } - private async Task ResolveToolsCall(string toolsName) + private async Task ResolveToolsCall(JsSerializer ser, int id) { - // TODO: ex) get_weather + var toolsName = ser.ExtractFrom(id, "params", "method")?.Trim(); + + switch (toolsName) + { + case "run_jsrt_script": + { + var script = ser.ExtractFrom(id, "params", "arguments", "script")?.Trim(); + + // todo + } + break; + + default: + _logger.Warn($"[JsonRpc2] Unknown tools method: {toolsName}"); + break; + } } } } diff --git a/WelsonJS.Augmented/WelsonJS.Launcher/McpToolsList.json b/WelsonJS.Augmented/WelsonJS.Launcher/McpToolsList.json index 6718e2c..c197e33 100644 --- a/WelsonJS.Augmented/WelsonJS.Launcher/McpToolsList.json +++ b/WelsonJS.Augmented/WelsonJS.Launcher/McpToolsList.json @@ -10,8 +10,8 @@ "scriptContract": { "requiredEntryPoint": "function main(args) { /* ... */ }; exports.main = main;", "notes": [ - "모든 실행 스크립트 결과물은 main 함수를 export해야 합니다.", - "ES3 문법을 기본으로 작성하고, 필요한 경우 ES5 polyfill 범위 내에서만 확장하세요." + "All executable script outputs must export a main function.", + "Write using ES3 syntax by default, and extend only within the ES5 polyfill scope if necessary." ] }, "tools": [