Skip to content

Commit d4c9b69

Browse files
committed
wip: fix setup for tool mokapi_execute_code
1 parent 1a83866 commit d4c9b69

3 files changed

Lines changed: 82 additions & 14 deletions

File tree

mcp/run.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ Use this tool to:
7272
Prefer this tool over retrieving full API specifications, as it returns only the computed result.`,
7373
InputSchema: inputSchema,
7474
OutputSchema: outputSchema,
75-
}, s.GenerateHttpMockResponse)
75+
}, s.GetRunResponse)
7676

7777
server.AddResource(&mcp.Resource{
7878
URI: "api://execute-types",

mcp/run_test.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,22 @@ func TestService_Run(t *testing.T) {
2222
app *runtime.App
2323
test func(t *testing.T, s *mcp.Service)
2424
}{
25+
{
26+
name: "run JavaScript code",
27+
app: runtimetest.NewHttpApp(
28+
openapitest.NewConfig("3.1.0"),
29+
),
30+
test: func(t *testing.T, s *mcp.Service) {
31+
r, err := s.GetRunResponse(
32+
context.Background(),
33+
mcp.RunInput{
34+
Code: `1+1`,
35+
},
36+
)
37+
require.NoError(t, err)
38+
require.Equal(t, int64(2), r.Result)
39+
},
40+
},
2541
{
2642
name: "List APIs skip empty name",
2743
app: runtimetest.NewHttpApp(

mcp/server_test.go

Lines changed: 65 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,69 @@ func TestServer(t *testing.T) {
2929
require.NotNil(t, session)
3030
defer func() { _ = session.Close() }()
3131

32-
list, err := session.ListTools(ctx, &gomcp.ListToolsParams{})
33-
require.NoError(t, err)
34-
require.Len(t, list.Tools, 9)
35-
// alphabetical order
36-
require.Equal(t, "mokapi_execute_code", list.Tools[0].Name)
37-
require.Equal(t, "mokapi_generate_http_mock_response", list.Tools[1].Name)
38-
require.Equal(t, "mokapi_get_api_spec", list.Tools[2].Name)
39-
require.Equal(t, "mokapi_get_events", list.Tools[3].Name)
40-
require.Equal(t, "mokapi_get_http_mock_template", list.Tools[4].Name)
41-
require.Equal(t, "mokapi_get_scenarios", list.Tools[5].Name)
42-
require.Equal(t, "mokapi_get_typescript_api", list.Tools[6].Name)
43-
require.Equal(t, "mokapi_produce_kafka_message", list.Tools[7].Name)
44-
require.Equal(t, "mokapi_send_http_request", list.Tools[8].Name)
32+
testcases := []struct {
33+
name string
34+
test func(t *testing.T)
35+
}{
36+
{
37+
name: "test tool list",
38+
test: func(t *testing.T) {
39+
list, err := session.ListTools(ctx, &gomcp.ListToolsParams{})
40+
require.NoError(t, err)
41+
require.Len(t, list.Tools, 9)
42+
// alphabetical order
43+
require.Equal(t, "mokapi_execute_code", list.Tools[0].Name)
44+
require.Equal(t, "mokapi_generate_http_mock_response", list.Tools[1].Name)
45+
require.Equal(t, "mokapi_get_api_spec", list.Tools[2].Name)
46+
require.Equal(t, "mokapi_get_events", list.Tools[3].Name)
47+
require.Equal(t, "mokapi_get_http_mock_template", list.Tools[4].Name)
48+
require.Equal(t, "mokapi_get_scenarios", list.Tools[5].Name)
49+
require.Equal(t, "mokapi_get_typescript_api", list.Tools[6].Name)
50+
require.Equal(t, "mokapi_produce_kafka_message", list.Tools[7].Name)
51+
require.Equal(t, "mokapi_send_http_request", list.Tools[8].Name)
52+
},
53+
},
54+
{
55+
name: "run code",
56+
test: func(t *testing.T) {
57+
r, err := session.CallTool(ctx, &gomcp.CallToolParams{
58+
Name: "mokapi_execute_code",
59+
Arguments: mcp.RunInput{
60+
Code: "1+1",
61+
},
62+
})
63+
require.NoError(t, err)
64+
require.IsType(t, &gomcp.TextContent{}, r.Content[0])
65+
tc := r.Content[0].(*gomcp.TextContent)
66+
require.Equal(t, `{"result":2}`, tc.Text)
67+
},
68+
},
69+
{
70+
name: "get mokapi_execute_code tool information",
71+
test: func(t *testing.T) {
72+
list, err := session.ListTools(ctx, &gomcp.ListToolsParams{
73+
Meta: nil,
74+
Cursor: "",
75+
})
76+
require.NoError(t, err)
77+
require.Contains(t, list.Tools[0].Description, "api://execute-types")
78+
},
79+
},
80+
{
81+
name: "get resource execute-types",
82+
test: func(t *testing.T) {
83+
list, err := session.ListResources(ctx, &gomcp.ListResourcesParams{})
84+
require.NoError(t, err)
85+
require.Equal(t, "api-docs", list.Resources[0].Name)
86+
require.Equal(t, "api://execute-types", list.Resources[0].URI)
87+
},
88+
},
89+
}
90+
91+
for _, tc := range testcases {
92+
t.Run(tc.name, func(t *testing.T) {
93+
tc.test(t)
94+
})
95+
}
96+
4597
}

0 commit comments

Comments
 (0)