- Notifications
You must be signed in to change notification settings - Fork3.1k
Migrate projects toolset to modelcontextprotocol/go-sdk#1475
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
Co-authored-by: omgitsads <4619+omgitsads@users.noreply.github.com>
Co-authored-by: omgitsads <4619+omgitsads@users.noreply.github.com>
Co-authored-by: omgitsads <4619+omgitsads@users.noreply.github.com>
LuluBeatson commentedNov 24, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Pull request overview
This PR migrates theprojects toolset (9 tools) frommark3labs/mcp-go tomodelcontextprotocol/go-sdk as part of the broader SDK migration (#1428). The migration updates tool definitions from DSL-based schemas tojsonschema.Schema structs, changes handler signatures to the new SDK pattern, and enables the previously commented-out projects toolset.
Key Changes:
- Converted 9 project-related tools (list, get, add, update, delete operations for projects, fields, and items)
- Updated handler signatures to new 3-return-value pattern with separate
argsparameter - Changed parameter extraction and result construction to use new SDK utilities
- Enabled projects toolset registration in
tools.go
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| pkg/github/projects.go | Migrated all 9 project tool definitions and handlers to new SDK, updated parameter extraction to useargs map, changed result construction to useutils package |
| pkg/github/projects_test.go | Updated tests to cast InputSchema to*jsonschema.Schema, modified handler calls to pass 3 arguments and expect 3 return values, removed build ignore directive |
| pkg/github/tools.go | Enabled projects toolset by uncommenting registration code |
| pkg/github/toolsnaps/*.snap | Updated tool snapshots to reflect new schema structure (field ordering changes, missingreadOnlyHint: false for write operations) |
| README.md | Auto-generated documentation changes (incorrectly removed projects toolset from available toolsets) |
| docs/remote-server.md | Auto-generated documentation changes (incorrectly removed projects toolset from remote server toolsets) |
| "annotations": { | ||
| "title":"Add project item", | ||
| "readOnlyHint":false | ||
| "title":"Add project item" |
CopilotAINov 24, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
The toolsnap file is missing"readOnlyHint": false in the annotations for this write operation. Other write tools in the codebase (e.g.,create_branch.snap,push_files.snap,star_repository.snap) include this field. SinceAddProjectItem correctly setsReadOnlyHint: false in the code (line 649 ofprojects.go), the toolsnap should reflect this.
The toolsnap should include:
"annotations": {"title":"Add project item","readOnlyHint":false},
This needs to be regenerated by runningUPDATE_TOOLSNAPS=true go test ./....
| "title":"Add project item" | |
| "title":"Add project item", | |
| "readOnlyHint":false |
| "annotations": { | ||
| "title":"Update project item", | ||
| "readOnlyHint":false | ||
| "title":"Update project item" |
CopilotAINov 24, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
The toolsnap file is missing"readOnlyHint": false in the annotations for this write operation. Other write tools in the codebase (e.g.,create_branch.snap,push_files.snap,star_repository.snap) include this field. SinceUpdateProjectItem correctly setsReadOnlyHint: false in the code (line 755 ofprojects.go), the toolsnap should reflect this.
The toolsnap should include:
"annotations": {"title":"Update project item","readOnlyHint":false},
This needs to be regenerated by runningUPDATE_TOOLSNAPS=true go test ./....
| "title":"Update project item" | |
| "title":"Update project item", | |
| "readOnlyHint":false |
| "annotations": { | ||
| "title":"Delete project item", | ||
| "readOnlyHint":false | ||
| "title":"Delete project item" |
CopilotAINov 24, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
The toolsnap file is missing"readOnlyHint": false in the annotations for this write operation. Other write tools in the codebase (e.g.,create_branch.snap,push_files.snap,star_repository.snap) include this field. SinceDeleteProjectItem correctly setsReadOnlyHint: false in the code (line 862 ofprojects.go), the toolsnap should reflect this.
The toolsnap should include:
"annotations": {"title":"Delete project item","readOnlyHint":false},
This needs to be regenerated by runningUPDATE_TOOLSNAPS=true go test ./....
| "title":"Delete project item" | |
| "title":"Delete project item", | |
| "readOnlyHint":false |
| | Code Security| Code security related tools, such as GitHub Code Scanning|https://api.githubcopilot.com/mcp/x/code_security|[Install](https://insiders.vscode.dev/redirect/mcp/install?name=gh-code_security&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fcode_security%22%7D)|[read-only](https://api.githubcopilot.com/mcp/x/code_security/readonly)|[Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=gh-code_security&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fcode_security%2Freadonly%22%7D)| | ||
| | Dependabot| Dependabot tools|https://api.githubcopilot.com/mcp/x/dependabot|[Install](https://insiders.vscode.dev/redirect/mcp/install?name=gh-dependabot&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fdependabot%22%7D)|[read-only](https://api.githubcopilot.com/mcp/x/dependabot/readonly)|[Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=gh-dependabot&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fdependabot%2Freadonly%22%7D)| | ||
| | Discussions| GitHub Discussions related tools|https://api.githubcopilot.com/mcp/x/discussions|[Install](https://insiders.vscode.dev/redirect/mcp/install?name=gh-discussions&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fdiscussions%22%7D)|[read-only](https://api.githubcopilot.com/mcp/x/discussions/readonly)|[Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=gh-discussions&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fdiscussions%2Freadonly%22%7D)| | ||
| | Experiments| Experimental features that are not considered stable yet|https://api.githubcopilot.com/mcp/x/experiments|[Install](https://insiders.vscode.dev/redirect/mcp/install?name=gh-experiments&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fexperiments%22%7D)|[read-only](https://api.githubcopilot.com/mcp/x/experiments/readonly)|[Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=gh-experiments&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fexperiments%2Freadonly%22%7D)| |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Are these generated docs changes deliberate in that PR
77ac1a7 intoomgitsads/go-sdkUh oh!
There was an error while loading.Please reload this page.





Uh oh!
There was an error while loading.Please reload this page.
Migrates the
projectstoolset (9 tools) frommark3labs/mcp-gotomodelcontextprotocol/go-sdkas part of the broader SDK migration (#1428).Changes
Tool definitions
mcp.WithString(),mcp.WithNumber()) tojsonschema.Schemastructs(ctx, req) -> (result, error)to(ctx, req, args) -> (result, data, error)ReadOnlyHintfrom pointer type to booleanParameter extraction
RequiredParam[T](req, "key")withRequiredParam[T](args, "key")extractPaginationOptions()to acceptmap[string]anyinstead ofmcp.CallToolRequestResult construction
mcp.NewToolResultText/Error()toutils.NewToolResultText/Error()Tests
tool.InputSchemato*jsonschema.Schema&requestandtc.requestArgsseparately, expect 3 return valuesRegistration
tools.go(previously commented out)Example
Before:
After:
Original prompt
✨ Let Copilot coding agentset things up for you — coding agent works faster and does higher quality work when set up for your repo.