Skip to content

Conversation

@SamMorrowDrums
Copy link
Collaborator

Summary

The copilot toolset contains important tools like create_pull_request_with_copilot and get_copilot_job_status that should be available by default in the remote MCP server.

Changes

  • Set Default: true on ToolsetMetadataCopilot

Why this approach?

By setting Default: true on the toolset metadata in OSS, the remote server automatically picks it up via GetDefaultToolsetIDs() without needing any special handling.

Even though no tools in OSS currently use this toolset (the copilot tools are remote-only), having the metadata here allows the remote server to benefit from the default expansion logic already built into the inventory system.

This is cleaner than having the remote server:

  1. Override the toolset metadata to set Default: true
  2. Build a temporary inventory just to determine defaults
  3. Maintain its own list of additional default toolsets

Impact on OSS users

None - since no OSS tools belong to the copilot toolset, this change has no effect on the local MCP server. The toolset will simply be expanded as part of defaults but result in zero additional tools being enabled.

Closes github/github-mcp-server-remote#619

The copilot toolset contains important tools like
`create_pull_request_with_copilot` and `get_copilot_job_status` that
should be available by default in the remote MCP server.

By setting `Default: true` on the toolset metadata in OSS, the remote
server automatically picks it up without needing any special handling.
Even though no tools in OSS use this toolset, having the metadata here
allows consistent behavior when the remote server loads defaults.

This is a cleaner approach than having the remote server maintain its
own list of additional default toolsets.
Copilot AI review requested due to automatic review settings January 16, 2026 11:02
@SamMorrowDrums SamMorrowDrums requested a review from a team as a code owner January 16, 2026 11:02
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 attempts to make the copilot toolset default for the remote MCP server by setting Default: true on the ToolsetMetadataCopilot metadata definition in OSS.

Changes:

  • Added Default: true field to ToolsetMetadataCopilot in pkg/github/tools.go

@SamMorrowDrums
Copy link
Collaborator Author

@copilot - I'd like to change the approach here. Instead of just setting Default: true on the metadata (which doesn't work because GetDefaultToolsetIDs() only iterates actual tools), let's make the inventory builder handle "default" properly:

Current problem:

  • GetDefaultToolsetIDs() collects defaults by iterating through actual tools that have Toolset.Default == true
  • If a toolset has Default: true but no tools in the OSS repo use it (like copilot), it won't appear in defaults
  • This makes it impossible for remote servers to declare toolsets as defaults via metadata alone

Proposed solution:

  1. In the inventory builder, when processing .WithToolsets(), treat "default" as a special keyword
  2. Instead of expanding "default" to a list of toolset IDs, add a filter that includes tools where tool.Toolset.Default == true
  3. Remove "default" from the toolset list before matching against specific toolset IDs
  4. Alternatively, have a method like DefaultToolsetMetadatas() that returns all ToolsetMetadata where Default: true, not just those with tools

This way:

  • Setting Default: true on ToolsetMetadataCopilot will actually work
  • Remote servers that add tools to the copilot toolset will automatically get them in defaults
  • The declarative Default: true on metadata becomes the source of truth

Please implement this change to make Default: true on toolset metadata actually control whether tools in that toolset are included by default.

Copy link
Contributor

Copilot AI commented Jan 16, 2026

@SamMorrowDrums I've opened a new pull request, #1824, to work on those changes. Once the pull request is ready, I'll request review from you.

Copilot AI and others added 2 commits January 16, 2026 17:44
- Added `toolsetMetadata` field to Builder for registering standalone toolset metadata
- Added `SetToolsetMetadata()` method to Builder for setting standalone metadata
- Updated `processToolsets()` to include standalone metadata in default toolsets
- Updated `NewInventory()` to register remote-only toolset metadata
- Updated test expectations to include `copilot` in defaults

This change enables toolset metadata with `Default: true` to control whether
tools in that toolset are included by default, even if no tools in the OSS
repo use that toolset. The remote server can now register tools in the
`copilot` toolset and they will automatically be included in defaults.

Co-authored-by: SamMorrowDrums <[email protected]>
- Enhanced field comment to clarify use case
- Added note about additive behavior to SetToolsetMetadata docstring

Co-authored-by: SamMorrowDrums <[email protected]>
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.

2 participants