Uh oh!
There was an error while loading. Please reload this page.
Migrate gists toolset to modelcontextprotocol/go-sdk - #1431
Conversation
- Remove //go:build ignore tags from gists.go and gists_test.go - Update imports to use modelcontextprotocol/go-sdk instead of mark3labs/mcp-go - Migrate all 4 tools (ListGists, GetGist, CreateGist, UpdateGist): - Updated tool definitions to use jsonschema.Schema for InputSchema - Changed handler signatures to new SDK format with generics - Updated parameter extraction to use args map instead of request object - Replaced result helpers with utils package equivalents - Updated all tests to match new handler signatures - Added toolsnap tests for all 4 tools - Added parseISOTimestamp utility function to minimal_types.go - Created toolsnaps for all 4 tools Related to #1428 Co-authored-by: omgitsads <4619+omgitsads@users.noreply.github.com>
There was a problem hiding this comment.
Pull Request Overview
This PR migrates the gists toolset from mark3labs/mcp-go to modelcontextprotocol/go-sdk as part of the broader SDK migration effort (#1428). The migration updates tool definitions, handler signatures, and test infrastructure while maintaining backward compatibility.
Key Changes
- Tool definitions converted from DSL-style builders to explicit
jsonschema.Schemastructures - Handler signatures updated to use generics (
mcp.ToolHandlerFor[map[string]any, any]) with 3-value returns - Parameter extraction migrated from request-based to args-based helper functions
- Result helpers replaced with utils package equivalents
- Added shared
parseISOTimestamputility function tominimal_types.go - Fixed JSON Schema type casing in pagination helpers (Number→number, String→string)
- Toolset registration for gists uncommented in
tools.go
Reviewed Changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| pkg/github/gists.go | Migrated all 4 gist tools (list, get, create, update) to new SDK with proper schema definitions and handler signatures |
| pkg/github/gists_test.go | Updated tests to use new handler signature (3-value returns) and added toolsnap validation for each tool |
| pkg/github/minimal_types.go | Added shared parseISOTimestamp utility function for ISO 8601 timestamp parsing |
| pkg/github/server.go | Fixed JSON Schema type casing in pagination helper functions (lowercase 'number' and 'string') |
| pkg/github/tools.go | Uncommented gists toolset registration to enable the migrated tools |
| pkg/github/toolsnaps/*.snap | Added snapshots for all 4 gist tools to document API schema changes |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
| return t, nil | ||
| } | ||
| return time.Time{}, fmt.Errorf("invalid timestamp format: %s", timestamp) |
There was a problem hiding this comment.
Error message in parseISOTimestamp could be more helpful. The current error message is generic:
return time.Time{}, fmt.Errorf("invalid timestamp format: %s", timestamp)Consider using a more descriptive error message that includes the supported formats, similar to the version in issues.go (line 1623):
return time.Time{}, fmt.Errorf("invalid ISO 8601 timestamp: %s (supported formats: YYYY-MM-DDThh:mm:ssZ or YYYY-MM-DD)", timestamp)This provides better guidance to users when they provide an incorrectly formatted timestamp.
| return time.Time{}, fmt.Errorf("invalid timestamp format: %s", timestamp) | |
| return time.Time{}, fmt.Errorf("invalid ISO 8601 timestamp: %s (supported formats: YYYY-MM-DDThh:mm:ssZ or YYYY-MM-DD)", timestamp) |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>




Part of #1428 - migrates the
giststoolset frommark3labs/mcp-gotomodelcontextprotocol/go-sdk.Changes
Tool definitions: Converted from DSL to
jsonschema.SchemaformatHandler signatures: Updated to use generics
mcp.ToolHandlerFor[map[string]any, any]with 3-value returns(*mcp.CallToolResult, any, error)Parameter extraction: Migrated from
OptionalParam[T](request, "key")toOptionalParam[T](args, "key")using passed mapResult helpers: Replaced
mcp.NewToolResultText/Errorwithutils.NewToolResultText/ErrorUtilities: Added
parseISOTimestamptominimal_types.go(shared utility, extracted from pending-migrationissues.go)Tools Migrated
list_gists- List user's gists with pagination and filteringget_gist- Retrieve specific gist contentcreate_gist- Create new gistupdate_gist- Update existing gistAll tests passing, toolsnaps updated.
Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.