From 8678fab51a2161f4bd24ac3af203813717b76996 Mon Sep 17 00:00:00 2001 From: Adam Holt Date: Thu, 4 Dec 2025 14:34:48 +0100 Subject: [PATCH 1/4] Add tool handler shim to use server.AddTool instead of mcp.AddTool --- pkg/toolsets/toolsets.go | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/pkg/toolsets/toolsets.go b/pkg/toolsets/toolsets.go index 5a90b381f..5d577fff8 100644 --- a/pkg/toolsets/toolsets.go +++ b/pkg/toolsets/toolsets.go @@ -1,6 +1,8 @@ package toolsets import ( + "context" + "encoding/json" "fmt" "os" "strings" @@ -35,9 +37,23 @@ type ServerTool struct { RegisterFunc func(s *mcp.Server) } -func NewServerTool[In, Out any](tool mcp.Tool, handler mcp.ToolHandlerFor[In, Out]) ServerTool { +func NewServerTool[In any, Out any](tool mcp.Tool, handler mcp.ToolHandlerFor[In, Out]) ServerTool { return ServerTool{Tool: tool, RegisterFunc: func(s *mcp.Server) { - mcp.AddTool(s, &tool, handler) + th := func(ctx context.Context, req *mcp.CallToolRequest) (*mcp.CallToolResult, error) { + var arguments In + if err := json.Unmarshal(req.Params.Arguments, &arguments); err != nil { + return nil, err + } + + resp, _, err := handler(ctx, req, arguments) + if err != nil { + return nil, err + } + + return resp, err + } + + s.AddTool(&tool, th) }} } From b5a0165656a399fd1a4df3dce3a5fc74b76d8655 Mon Sep 17 00:00:00 2001 From: Adam Holt Date: Thu, 4 Dec 2025 14:38:48 +0100 Subject: [PATCH 2/4] Add empty JSON schema for GetMe tool --- pkg/github/context_tools.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/github/context_tools.go b/pkg/github/context_tools.go index 4f892b528..36a682f62 100644 --- a/pkg/github/context_tools.go +++ b/pkg/github/context_tools.go @@ -43,6 +43,9 @@ func GetMe(getClient GetClientFn, t translations.TranslationHelperFunc) (mcp.Too Title: t("TOOL_GET_ME_USER_TITLE", "Get my user profile"), ReadOnlyHint: true, }, + InputSchema: &jsonschema.Schema{ + Type: "object", + }, }, mcp.ToolHandlerFor[map[string]any, any](func(ctx context.Context, _ *mcp.CallToolRequest, _ map[string]any) (*mcp.CallToolResult, any, error) { client, err := getClient(ctx) From 6cd9bc49f011fded5c940759163e1bf591e8ebb7 Mon Sep 17 00:00:00 2001 From: Adam Holt Date: Thu, 4 Dec 2025 15:35:03 +0100 Subject: [PATCH 3/4] Update Toolsnaps --- pkg/github/__toolsnaps__/get_me.snap | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/github/__toolsnaps__/get_me.snap b/pkg/github/__toolsnaps__/get_me.snap index 2ccdeda5b..f62131f7d 100644 --- a/pkg/github/__toolsnaps__/get_me.snap +++ b/pkg/github/__toolsnaps__/get_me.snap @@ -4,6 +4,8 @@ "title": "Get my user profile" }, "description": "Get details of the authenticated GitHub user. Use this when a request is about the user's own profile for GitHub. Or when information is missing to build other tool calls.", - "inputSchema": null, + "inputSchema": { + "type": "object" + }, "name": "get_me" } \ No newline at end of file From 6842886d6ba9f168279a67ee22d0e32b6af32974 Mon Sep 17 00:00:00 2001 From: Adam Holt Date: Thu, 4 Dec 2025 15:40:28 +0100 Subject: [PATCH 4/4] Dont bother checking the error, just pass it back --- pkg/toolsets/toolsets.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkg/toolsets/toolsets.go b/pkg/toolsets/toolsets.go index 5d577fff8..d4964ee5f 100644 --- a/pkg/toolsets/toolsets.go +++ b/pkg/toolsets/toolsets.go @@ -46,9 +46,6 @@ func NewServerTool[In any, Out any](tool mcp.Tool, handler mcp.ToolHandlerFor[In } resp, _, err := handler(ctx, req, arguments) - if err != nil { - return nil, err - } return resp, err }