fix(mcp): describe dynamic outputs with explicit schemas (#1626)

This commit is contained in:
Levi authored and GitHub committed 2026-10-28 22:32:52 +08:00
1 parent 91edba9af6
commit be0fb05edd
3 files changed
+225 -13

No files matched your search

+30
View File
@@ -192,6 +192,36 @@ func TestStreamableHTTPTools(t *testing.T) {
if tasks, ok := structured["tasks"].([]any); !ok || len(tasks) != 0 {
t.Fatalf("tasks = %#v, want empty array", structured["tasks"])
}
result, err = session.CallTool(context.Background(), &mcp.CallToolParams{
Name: "create_task",
Arguments: map[string]any{
"req": map[string]any{
"url": downloadServer.URL,
"extra": map[string]any{"header": map[string]any{"X-Gopeed-Test": "mcp-object"}},
},
"opts": map[string]any{"path": t.TempDir()},
},
})
if err != nil {
t.Fatal(err)
}
if result.IsError {
t.Fatalf("create_task returned tool error: %+v", result.Content)
}
created := result.StructuredContent.(map[string]any)
for _, name := range []string{"get_task", "get_task_stats"} {
result, err := session.CallTool(context.Background(), &mcp.CallToolParams{
Name: name,
Arguments: map[string]any{"id": created["id"]},
})
if err != nil {
t.Fatalf("%s: %v", name, err)
}
if result.IsError {
t.Fatalf("%s returned tool error: %+v", name, result.Content)
}
}
}
func nestedSchemaProperty(t *testing.T, schema map[string]any, path ...string) map[string]any {