Skip to content

Commit 65dd96a

Browse files
committed
chore: switch to MCP go-sdk for JSON Schema
Signed-off-by: Donnie Adams <[email protected]>
1 parent 9129819 commit 65dd96a

File tree

4 files changed

+49
-51
lines changed

4 files changed

+49
-51
lines changed

go.mod

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
module github.com/gptscript-ai/go-gptscript
22

3-
go 1.23.0
4-
5-
replace github.com/danielgtaylor/huma/v2 => github.com/gptscript-ai/huma v0.0.0-20250617131016-b2081da6c65b
3+
go 1.24.2
64

75
require (
8-
github.com/danielgtaylor/huma/v2 v2.32.1-0.20250509235652-c7ead6f3c67f
6+
github.com/modelcontextprotocol/go-sdk v0.2.0
97
github.com/stretchr/testify v1.10.0
108
)
119

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
22
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3-
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
4-
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
5-
github.com/gptscript-ai/huma v0.0.0-20250617131016-b2081da6c65b h1:QReUetqY+ep2sj6g83oqldPHzwH2T2TG1sv0IWE2hL0=
6-
github.com/gptscript-ai/huma v0.0.0-20250617131016-b2081da6c65b/go.mod h1:y2Eq35Y5Xy6+MZRPgn81/bjNBiEHqEQba+vY+fLigjU=
3+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
4+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
75
github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
86
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
97
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
108
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
119
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
10+
github.com/modelcontextprotocol/go-sdk v0.2.0 h1:PESNYOmyM1c369tRkzXLY5hHrazj8x9CY1Xu0fLCryM=
11+
github.com/modelcontextprotocol/go-sdk v0.2.0/go.mod h1:0sL9zUKKs2FTTkeCCVnKqbLJTw5TScefPAzojjU459E=
1212
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
1313
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
1414
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=

gptscript_test.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
"testing"
1414
"time"
1515

16-
humav2 "github.com/danielgtaylor/huma/v2"
16+
"github.com/modelcontextprotocol/go-sdk/jsonschema"
1717
"github.com/stretchr/testify/require"
1818
)
1919

@@ -768,12 +768,12 @@ func TestFmt(t *testing.T) {
768768
ToolDef: ToolDef{
769769
Name: "echo",
770770
Instructions: "#!/bin/bash\necho hello there",
771-
Arguments: &humav2.Schema{
772-
Type: humav2.TypeObject,
773-
Properties: map[string]*humav2.Schema{
771+
Arguments: &jsonschema.Schema{
772+
Type: "object",
773+
Properties: map[string]*jsonschema.Schema{
774774
"input": {
775775
Description: "The string input to echo",
776-
Type: humav2.TypeString,
776+
Type: "string",
777777
},
778778
},
779779
},
@@ -827,12 +827,12 @@ func TestFmtWithTextNode(t *testing.T) {
827827
ToolDef: ToolDef{
828828
Instructions: "#!/bin/bash\necho hello there",
829829
Name: "echo",
830-
Arguments: &humav2.Schema{
831-
Type: humav2.TypeObject,
832-
Properties: map[string]*humav2.Schema{
830+
Arguments: &jsonschema.Schema{
831+
Type: "object",
832+
Properties: map[string]*jsonschema.Schema{
833833
"input": {
834834
Description: "The string input to echo",
835-
Type: humav2.TypeString,
835+
Type: "string",
836836
},
837837
},
838838
},

tool.go

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,38 +4,38 @@ import (
44
"fmt"
55
"strings"
66

7-
humav2 "github.com/danielgtaylor/huma/v2"
7+
"github.com/modelcontextprotocol/go-sdk/jsonschema"
88
)
99

1010
// ToolDef struct represents a tool with various configurations.
1111
type ToolDef struct {
12-
Name string `json:"name,omitempty"`
13-
Description string `json:"description,omitempty"`
14-
MaxTokens int `json:"maxTokens,omitempty"`
15-
ModelName string `json:"modelName,omitempty"`
16-
ModelProvider bool `json:"modelProvider,omitempty"`
17-
JSONResponse bool `json:"jsonResponse,omitempty"`
18-
Chat bool `json:"chat,omitempty"`
19-
Temperature *float32 `json:"temperature,omitempty"`
20-
Cache *bool `json:"cache,omitempty"`
21-
InternalPrompt *bool `json:"internalPrompt"`
22-
Arguments *humav2.Schema `json:"arguments,omitempty"`
23-
Tools []string `json:"tools,omitempty"`
24-
GlobalTools []string `json:"globalTools,omitempty"`
25-
GlobalModelName string `json:"globalModelName,omitempty"`
26-
Context []string `json:"context,omitempty"`
27-
ExportContext []string `json:"exportContext,omitempty"`
28-
Export []string `json:"export,omitempty"`
29-
Agents []string `json:"agents,omitempty"`
30-
Credentials []string `json:"credentials,omitempty"`
31-
ExportCredentials []string `json:"exportCredentials,omitempty"`
32-
InputFilters []string `json:"inputFilters,omitempty"`
33-
ExportInputFilters []string `json:"exportInputFilters,omitempty"`
34-
OutputFilters []string `json:"outputFilters,omitempty"`
35-
ExportOutputFilters []string `json:"exportOutputFilters,omitempty"`
36-
Instructions string `json:"instructions,omitempty"`
37-
Type string `json:"type,omitempty"`
38-
MetaData map[string]string `json:"metadata,omitempty"`
12+
Name string `json:"name,omitempty"`
13+
Description string `json:"description,omitempty"`
14+
MaxTokens int `json:"maxTokens,omitempty"`
15+
ModelName string `json:"modelName,omitempty"`
16+
ModelProvider bool `json:"modelProvider,omitempty"`
17+
JSONResponse bool `json:"jsonResponse,omitempty"`
18+
Chat bool `json:"chat,omitempty"`
19+
Temperature *float32 `json:"temperature,omitempty"`
20+
Cache *bool `json:"cache,omitempty"`
21+
InternalPrompt *bool `json:"internalPrompt"`
22+
Arguments *jsonschema.Schema `json:"arguments,omitempty"`
23+
Tools []string `json:"tools,omitempty"`
24+
GlobalTools []string `json:"globalTools,omitempty"`
25+
GlobalModelName string `json:"globalModelName,omitempty"`
26+
Context []string `json:"context,omitempty"`
27+
ExportContext []string `json:"exportContext,omitempty"`
28+
Export []string `json:"export,omitempty"`
29+
Agents []string `json:"agents,omitempty"`
30+
Credentials []string `json:"credentials,omitempty"`
31+
ExportCredentials []string `json:"exportCredentials,omitempty"`
32+
InputFilters []string `json:"inputFilters,omitempty"`
33+
ExportInputFilters []string `json:"exportInputFilters,omitempty"`
34+
OutputFilters []string `json:"outputFilters,omitempty"`
35+
ExportOutputFilters []string `json:"exportOutputFilters,omitempty"`
36+
Instructions string `json:"instructions,omitempty"`
37+
Type string `json:"type,omitempty"`
38+
MetaData map[string]string `json:"metadata,omitempty"`
3939
}
4040

4141
func ToolDefsToNodes(tools []ToolDef) []Node {
@@ -52,16 +52,16 @@ func ToolDefsToNodes(tools []ToolDef) []Node {
5252
return nodes
5353
}
5454

55-
func ObjectSchema(kv ...string) *humav2.Schema {
56-
s := &humav2.Schema{
57-
Type: humav2.TypeObject,
58-
Properties: make(map[string]*humav2.Schema, len(kv)/2),
55+
func ObjectSchema(kv ...string) *jsonschema.Schema {
56+
s := &jsonschema.Schema{
57+
Type: "object",
58+
Properties: make(map[string]*jsonschema.Schema, len(kv)/2),
5959
}
6060
for i, v := range kv {
6161
if i%2 == 1 {
62-
s.Properties[kv[i-1]] = &humav2.Schema{
62+
s.Properties[kv[i-1]] = &jsonschema.Schema{
6363
Description: v,
64-
Type: humav2.TypeString,
64+
Type: "string",
6565
}
6666
}
6767
}

0 commit comments

Comments
 (0)