Skip to content

Commit 933c35f

Browse files
ochafikclaude
andcommitted
fix(kotlin-host): pass tool arguments to callTool instead of empty map
The callTool method was being called with emptyMap() for arguments, ignoring the parsed input. This caused tools to receive no data. Fixed both: - callTool() in the direct tool call flow - forwardToolCall() for WebView-initiated tool calls 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 9672c87 commit 933c35f

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

examples/basic-host-kotlin/src/main/kotlin/com/example/mcpappshost/McpHostViewModel.kt

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,27 @@ class McpHostViewModel : ViewModel() {
222222
null
223223
}
224224

225+
// Convert JsonObject to Map<String, Any?> for SDK
226+
val argsMap = inputArgs?.let { args ->
227+
args.mapValues { (_, v) ->
228+
when (v) {
229+
is JsonPrimitive -> when {
230+
v.isString -> v.content
231+
v.booleanOrNull != null -> v.boolean
232+
v.intOrNull != null -> v.int
233+
v.longOrNull != null -> v.long
234+
v.doubleOrNull != null -> v.double
235+
else -> v.content
236+
}
237+
else -> v.toString()
238+
}
239+
}
240+
} ?: emptyMap()
241+
242+
Log.i(TAG, "Calling tool ${tool.name} with args: $argsMap")
243+
225244
// Call the tool (name, arguments, meta, options)
226-
val callResult = client.callTool(tool.name, emptyMap(), emptyMap())
245+
val callResult = client.callTool(tool.name, argsMap, emptyMap())
227246

228247
// Check for UI resource
229248
if (tool.uiResourceUri != null) {
@@ -340,7 +359,7 @@ class McpHostViewModel : ViewModel() {
340359

341360
Log.i(TAG, "Forwarding tool call: $name with args: $arguments")
342361

343-
val callResult = client.callTool(name, emptyMap(), emptyMap())
362+
val callResult = client.callTool(name, arguments ?: emptyMap(), emptyMap())
344363

345364
// Format result as JSON for the App
346365
val resultJson = json.encodeToString(

0 commit comments

Comments
 (0)