From 84c2db9ee3884690ea2531caf635c1e97761fe08 Mon Sep 17 00:00:00 2001 From: xbingW Date: Thu, 10 Apr 2025 17:22:46 +0800 Subject: [PATCH] fix: int64 --- .gitignore | 3 ++- mcp_go/main.go | 6 +++++- mcp_go/pkg/mcp/mcp.go | 1 - mcp_go/pkg/mcp/schema.go | 4 ++-- mcp_go/pkg/mcp/schema_test.go | 18 ++++++++++++++++++ 5 files changed, 27 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index ce3c366..d129edb 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ build.sh compose.yml __pycache__ -.cursor \ No newline at end of file +.cursor +.vscode \ No newline at end of file diff --git a/mcp_go/main.go b/mcp_go/main.go index ba75be9..9a8dcb0 100644 --- a/mcp_go/main.go +++ b/mcp_go/main.go @@ -1,6 +1,7 @@ package main import ( + "flag" "fmt" "github.com/chaitin/SafeLine/mcp_server/internal/api" @@ -11,7 +12,10 @@ import ( ) func main() { - if err := config.Load("config.yaml"); err != nil { + configPath := flag.String("config", "config.yaml", "path to config file") + flag.Parse() + + if err := config.Load(*configPath); err != nil { panic(fmt.Errorf("failed to load config: %v", err)) } diff --git a/mcp_go/pkg/mcp/mcp.go b/mcp_go/pkg/mcp/mcp.go index aa78628..3320cfc 100644 --- a/mcp_go/pkg/mcp/mcp.go +++ b/mcp_go/pkg/mcp/mcp.go @@ -125,7 +125,6 @@ func RegisterTool[T any, R any](s *MCPServer, tool Tool[T, R]) error { if err != nil { return err } - t := mcp.NewTool(tool.Name(), opts..., ) diff --git a/mcp_go/pkg/mcp/schema.go b/mcp_go/pkg/mcp/schema.go index 22f05d8..7461563 100644 --- a/mcp_go/pkg/mcp/schema.go +++ b/mcp_go/pkg/mcp/schema.go @@ -44,7 +44,7 @@ func SchemaToOptions(schema any) ([]mcp.ToolOption, error) { } switch field.Type.Kind() { - case reflect.Int: + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Float32, reflect.Float64: if defaultTag != "" { if defaultValue, err := strconv.Atoi(defaultTag); err == nil { opts = append(opts, mcp.DefaultNumber(float64(defaultValue))) @@ -112,7 +112,7 @@ func SchemaToOptions(schema any) ([]mcp.ToolOption, error) { var items map[string]any switch elemType.Kind() { - case reflect.Int: + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Float32, reflect.Float64: items = map[string]any{ "type": "number", } diff --git a/mcp_go/pkg/mcp/schema_test.go b/mcp_go/pkg/mcp/schema_test.go index b165819..6025f74 100644 --- a/mcp_go/pkg/mcp/schema_test.go +++ b/mcp_go/pkg/mcp/schema_test.go @@ -22,6 +22,24 @@ func TestSchemaToOptions(t *testing.T) { mcp.WithNumber("a", mcp.Required(), mcp.Description("number a")), ), }, + { + name: "test number int64", + args: struct { + A int64 `json:"a" desc:"number a" required:"true"` + }{}, + want: mcp.NewTool("test number int64", + mcp.WithNumber("a", mcp.Required(), mcp.Description("number a")), + ), + }, + { + name: "test number float64", + args: struct { + A float64 `json:"a" desc:"number a" required:"true"` + }{}, + want: mcp.NewTool("test number float64", + mcp.WithNumber("a", mcp.Required(), mcp.Description("number a")), + ), + }, { name: "test number default", args: struct {