Skip to content

Conversation

@Mnibit
Copy link

@Mnibit Mnibit commented Dec 17, 2025

Closes:

dependabot bot and others added 30 commits November 4, 2025 19:32
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: JoannaaKL <joannaakl@github.com>
* Add html content sanitizer

* Add basic html sanitization

* .

* Correct licenses and scripts to ignore vendor directory

* Use singleton

* Simplify
* Filter code fences

* Add test and actually use new function

* Update pkg/sanitize/sanitize_test.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Reorder

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…dules group across 1 directory (github#1365)

* build(deps): bump golang.org/x/net

Bumps the go_modules group with 1 update in the / directory: [golang.org/x/net](https://github.com/golang/net).


Updates `golang.org/x/net` from 0.26.0 to 0.38.0
- [Commits](golang/net@v0.26.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-version: 0.38.0
  dependency-type: indirect
  dependency-group: go_modules
...

Signed-off-by: dependabot[bot] <support@github.com>

* Licenses

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: JoannaaKL <joannaakl@github.com>
* update to google/go-github@v77

* licences update from required CI build

* fixes licences

* fixes possible nil reference

* refresh licences due to recent conflicts

---------

Co-authored-by: Roberto Nacu <kerobbi@github.com>
* licences update from required CI build

* fixes licences

* implements new helpers to support google/go-github v77 API

* upgrades toolset to leverage google/go-github v77 with the exception of Update and Delete items

* refactor string conversion helpers

* reverts migration google/go-github GetProjectItem due to bug with the underlying library implementation

* additional refactoring for server helpers based on recent updates to google/go-github

* test updates based on underlying lib requirements

* resolves licences conflicts with script/licenses

* cleanup

* reduce change diff

* updates helper docs to reflect to methods

* upgrades delete projects item to google/go-github

* returns error from parsing string to int64

* improved OptionalBigIntArrayParam doc

* improves implementation for RequiredBigInt

* improves documentation for temporary fieldSelectionOptions struct
* add repo nav tool

* comment responses

* move into git.go

* fix documentation

* Update pkg/github/git.go

Co-authored-by: Adam Holt <omgitsads@github.com>

* Fix undefined variable error in GetRepositoryTree

* Update git.go to use github.com/google/go-github/v77 for consistency with main branch

---------

Co-authored-by: Adam Holt <omgitsads@github.com>
* Add lockdown mode to filter issue

* Update flag name

* Update pkg/lockdown/lockdown.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Merge two graphql queries into one

* Don't use Issue.Repository

* Add function signature

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Only v77 is needed since all code uses v77 consistently.
* Add lockdown mode to docs

* Update docs/installation-guides/README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
)

Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 8 to 9.
- [Release notes](https://github.com/golangci/golangci-lint-action/releases)
- [Commits](golangci/golangci-lint-action@v8...v9)

---
updated-dependencies:
- dependency-name: golangci/golangci-lint-action
  dependency-version: '9'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…1381)

Bumps golang from 1.25.3-alpine to 1.25.4-alpine.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.25.4-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: JoannaaKL <joannaakl@github.com>
* Set title for GitHub MCP Server in server.json

* Update server.json
…1380)

Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.8.0 to 5.9.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](docker/metadata-action@c1e5197...318604b)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-version: 5.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: JoannaaKL <joannaakl@github.com>
* pagination, serialization updates

* projects: add server instructions (github#1393)

* add server instructions

* Update instructions.go

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add state metadata fields to get_discussion tool

Fixes github#1303

The get_discussion tool was missing important state metadata that's
already available in get_issue. Added four fields to provide complete
discussion status information:

- state: Current discussion state (OPEN/CLOSED)
- isAnswered: Whether the discussion has an accepted answer
- answeredAt: Timestamp when answer was provided
- answerChosenAt: Timestamp when answer was selected

Changed GetDiscussion to return a map instead of github.Discussion
struct since the go-github library doesn't include all these fields
in its type definition. This approach is consistent with other
functions in this codebase (ListDiscussions, GetDiscussionComments).

All tests pass and linter checks pass.

* Fix Discussion field mappings based on GitHub GraphQL API

Changes:
- Replace 'State' (doesn't exist) with 'Closed' (Boolean)
- Remove 'AnsweredAt' (doesn't exist)
- Keep 'IsAnswered' (verified to exist in GitHub GraphQL API)
- Use 'AnswerChosenAt' for answer timestamp

Updated both implementation and tests to match actual GitHub GraphQL schema.
All tests passing.

---------

Co-authored-by: tommaso-moro <tommaso-moro@github.com>
* Add Go SDK Migrator agent
Co-authored-by: SamMorrowDrums <4811358+SamMorrowDrums@users.noreply.github.com>
JoannaaKL and others added 27 commits November 26, 2025 11:24
* Dont filter content from trusted bots

* Final changes

* Use only debug level

* Add logs and comments
* add enabledTools to StdioServerConfig

* add EnabledTools to MCPServerConfig, and logic to bypass toolset config if present

* add logic to register specific tools

* update readme

* Update to be consistent with: https://docs.google.com/document/d/1tOOBJ4y9xY61QVrO18ymuVt4SO9nV-z2B4ckaL2f9IU/edit?tab=t.0#heading=h.ffto4e5dwzlf

specifically
- allow for --tools and dynamic toolset mode together
- allow for --tools and --toolsets together

* go mod tidy

* update

* clean up comment

* fix

* fix

* updte

* update

* clean up
…beler (github#1498)

* Initial plan

* Add AI issue assessment workflow with github/ai-assessment-comment-labeler

Co-authored-by: JoannaaKL <67866556+JoannaaKL@users.noreply.github.com>

* Remove AI issue assessment workflow and prompt file per review feedback

Co-authored-by: JoannaaKL <67866556+JoannaaKL@users.noreply.github.com>

* Restore workflow and prompt, run on bug label or unlabeled issues

Co-authored-by: JoannaaKL <67866556+JoannaaKL@users.noreply.github.com>

* Update .github/workflows/ai-issue-assessment.yml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add default-issue-review.prompt.yml for unlabeled issues

Co-authored-by: JoannaaKL <67866556+JoannaaKL@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: JoannaaKL <67866556+JoannaaKL@users.noreply.github.com>
Co-authored-by: JoannaaKL <joannaakl@github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* small doc update to add x-mcp-tools header

* update

* add server configuration guide

* update

* Update docs/server-configuration.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update docs/remote-server.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update docs/server-configuration.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update docs/server-configuration.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update docs/server-configuration.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update docs/server-configuration.md

Co-authored-by: Tony Truong <tonytrg@github.com>

* use relative paths

* use relative path

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Tony Truong <tonytrg@github.com>
* Initial plan

* Add ai_review_label to ai-issue-assessment.yml

Co-authored-by: JoannaaKL <67866556+JoannaaKL@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: JoannaaKL <67866556+JoannaaKL@users.noreply.github.com>
Move from `mark3labs/mcp-go` to `modelcontextprotocol/go-sdk`.

This is mostly focused on updating tool schema and tool handler signatures, along with any associated internal changes related to those changes.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: omgitsads <4619+omgitsads@users.noreply.github.com>
Co-authored-by: LuluBeatson <lulubeatson@github.com>
Co-authored-by: Lulu <59149422+LuluBeatson@users.noreply.github.com>
Co-authored-by: SamMorrowDrums <4811358+SamMorrowDrums@users.noreply.github.com>
Co-authored-by: Sam Morrow <info@sam-morrow.com>
Port resource completion from the remote GitHub MCP Server

---

Co-authored-by: Ksenia Bobrova <almaleksia@github.com>
* adding docs to github enterprise with oauth

* adding necessary config for oauth proxima

* Update README.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* use better link

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add tool handler shim to use server.AddTool instead of mcp.AddTool

---

Co-authored-by: Ksenia Bobrova <almaleksia@github.com>
Co-authored-by: Sam Morrow <SamMorrowDrums@github.com>
OpenAI strict mode requires the `properties` field to be present in
object schemas, even when empty. The jsonschema library uses omitempty
which causes empty maps to be omitted during JSON serialization.

This change uses json.RawMessage to bypass the library's serialization
and explicitly include `"properties": {}` in the output.

Fixes github#1548
* Correct lower-case issue state

* Uppercase orderBy and direction as well

* Auto-correct invalid enum parameters
* add suppport for tool aliases for backwards compatibility when tool names change

* cleanup

* log alias usage as warning

* remove comments

* remove mock data

* remove unused code, move deprecated tool aliases to its own file

* remove unused code and add tests

* resolve tool aliases in its own explicit step

* improve logic by returning aliases used in resolvetoolaliases

* remove unused function

* remove comments

* remove comment

* Update pkg/github/deprecated_tool_aliases.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* restore comment

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
When tool parameter descriptions span multiple lines, the continuation
lines now receive proper indentation to maintain markdown list formatting.

This fixes the rendering issue where multi-line descriptions would break
out of the parameter list structure.

Fixes github#1494
The go-SDK migration changed MCP protocol handling to require proper
initialization before tool calls. This updates the script to:

- Add initialize request with protocol version and client info
- Add notifications/initialized notification
- Add arguments field to tools/call params
- Keep stdin open with sleep for response
- Gracefully handle missing jq dependency
The licenses script now:
- Generates separate license reports per GOOS/GOARCH combination
- Groups identical reports together (comma-separated arch names)
- Adds a Table of Contents at the top of each platform file
- Handles cases where different architectures have different dependencies
  (e.g., x/sys/unix vs x/sys/windows, mousetrap on Windows only)

This addresses the issue discovered in cli/cli where some deps changed
which changed the mod graph for different GOARCH and affected the
exported licenses because go-licenses tries to find common ancestors.
Address review feedback:
- Remove bash 4.0+ associative array requirement for macOS compatibility
- Add cross-platform hash function (md5sum on Linux, md5 on macOS)
- Ensure deterministic iteration order using sorted groups file
- Add better error handling for failed go-licenses commands
- Fix grammar: 'architecture(s)' -> 'architectures'
- Add documentation for third-party/ being a union of all architectures
- Use file-based state instead of associative arrays for portability
- Check now regenerates using ./script/licenses and compares
- Add GOROOT/PATH setup in CI to fix go-licenses module info errors
- Check both license files AND third-party directory for changes
- See: google/go-licenses#244
The sort command uses locale-specific ordering which can differ between
systems. Use LC_ALL=C to ensure consistent ordering in CI and locally.
* Improvements & refactoring of get_file_contents

* Fix logical path when file or directory not found

* Fix comment

* Docs update

* Do file matching when raw API returns error
* adding review comments grouped as threads

* minor fix

* minor edit

* update docs

* fix docs

* increase limit to 100

* fixtext
* Add repos toolset instructions

* 1. Make sha optional (if not supplied - GetContents is used to retrieve original sha)
2. Instruct LLM to supply actual sha using git command and move instructions to tool description.

* Update toolsnaps and docs

* Better error handling

* Add tests

* Clearing resources in time

* Addressing review comments && checking etag

* Test fixes
* docs: add Antigravity installation guide

* docs: improve antigravity guide and address feedback

* Update docs/installation-guides/install-antigravity.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update docs/installation-guides/install-antigravity.md

Co-authored-by: Iryna Kulakova <52420926+IrynaKulakova@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Iryna Kulakova <52420926+IrynaKulakova@users.noreply.github.com>
* update docs

* Update docs/tool-renaming.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings December 17, 2025 06:56
@Mnibit Mnibit requested a review from a team as a code owner December 17, 2025 06:56
Copy link
Contributor

Copilot AI left a 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 the GitHub MCP Server from the mark3labs/mcp-go library to the official modelcontextprotocol/go-sdk. The changes update the MCP protocol implementation, tool definitions, and handler signatures across the entire codebase to align with the new SDK's architecture.

Key Changes:

  • Tool definitions now use struct-based schemas (jsonschema.Schema) instead of fluent builder patterns
  • Handler signatures changed from server.ToolHandlerFunc to mcp.ToolHandlerFor[map[string]any, any] with additional return values
  • Tool annotations updated to use direct field assignment instead of pointer helpers
  • Error handling utilities centralized in new pkg/utils package

Reviewed changes

Copilot reviewed 152 out of 204 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
pkg/github/notifications.go Updated tool definitions and handler signatures for notification-related tools
pkg/github/notifications_test.go Updated test assertions to work with new schema structure and handler signatures
pkg/github/issues.go Migrated issue management tools to new SDK with lockdown mode support
pkg/github/issues_test.go Added lockdown mode test coverage and updated assertions for new schema types
pkg/github/labels.go Refactored label management tools with new schema definitions
pkg/github/labels_test.go Simplified test assertions to focus on read-only hints
pkg/github/gists.go Updated gist tools to use new SDK patterns
pkg/github/gists_test.go Added toolsnap validation and updated schema assertions
pkg/github/discussions.go Migrated discussion tools with enhanced field support
pkg/github/discussions_test.go Updated queries and assertions for new discussion fields
pkg/github/context_tools.go Refactored user/team context tools with new handler patterns
pkg/github/dependabot.go Updated Dependabot alert tools to new SDK structure
pkg/github/dynamic_tools.go Migrated toolset management functions to new SDK
pkg/github/git.go New file implementing repository tree retrieval tool
pkg/github/instructions.go Added conditional PR template instructions based on enabled toolsets
pkg/github/feature_flags.go New file defining feature flag structure for lockdown mode
pkg/github/helper_test.go Updated test helpers for new handler signatures and content types
pkg/github/toolsnaps/*.snap Updated toolsnap files to reflect new schema structure

require.True(t, ok, "InputSchema should be *jsonschema.Schema")
assert.Contains(t, schema.Properties, "threadID")
assert.Contains(t, schema.Properties, "state")
assert.Equal(t, []string{"threadID", "state"}, schema.Required)
Copy link

Copilot AI Dec 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Required field assertion is incorrect. The test sets up dismiss_notification which should require only threadID according to line 181 in notifications.go. The state field is also required per the schema definition, but the original test on line 475 expected only threadID. This appears to be an intentional change to make state required, but conflicts with the original test expectation.

Suggested change
assert.Equal(t, []string{"threadID", "state"}, schema.Required)
assert.Contains(t, schema.Required, "threadID")

Copilot uses AI. Check for mistakes.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you very much copilot

Comment on lines +1388 to +1391
switch state {
case "OPEN", "CLOSED":
states = []githubv4.IssueState{githubv4.IssueState(state)}
default:
Copy link

Copilot AI Dec 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The state normalization and filtering logic has been added, but the empty string case that was explicitly handled in the original code is now part of the default case. While functionally equivalent after the strings.ToUpper call on line 1385, this makes the code less explicit about the intended behavior for empty strings.

Suggested change
switch state {
case "OPEN", "CLOSED":
states = []githubv4.IssueState{githubv4.IssueState(state)}
default:
switch state {
case "":
// No state filter provided: include both open and closed issues.
states = []githubv4.IssueState{githubv4.IssueStateOpen, githubv4.IssueStateClosed}
case "OPEN", "CLOSED":
states = []githubv4.IssueState{githubv4.IssueState(state)}
default:
// Unrecognized state: fall back to including both open and closed.

Copilot uses AI. Check for mistakes.
pullRequestInstructions := `## Pull Requests
PR review workflow: Always use 'pull_request_review_write' with method 'create' to create a pending review, then 'add_comment_to_pending_review' to add comments, and finally 'pull_request_review_write' with method 'submit_pending' to submit the review for complex reviews with line-specific comments.`
if slices.Contains(enabledToolsets, "repos") {
Copy link

Copilot AI Dec 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing import for slices package. The code uses slices.Contains but the import statement is not visible in the diff. Ensure slices is imported from the standard library.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.