Skip to content

RFC: Partitioning tools by product/feature #189

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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
SamMorrowDrums opened this issue Apr 8, 2025 · 3 comments
Closed

RFC: Partitioning tools by product/feature #189

SamMorrowDrums opened this issue Apr 8, 2025 · 3 comments
Assignees
Labels
enhancement New feature or request question Further information is requested

Comments

@SamMorrowDrums
Copy link
Collaborator

As GitHub we have loads of tools, and we'd love to expose them all - but we don't want models to get confused and provide a bad experience. We imagine a future with a more dynamic solution, but so far to make more of our platform available via MCP, this is what we would propose:

  • Partition tools in groups according to product area, feature area
  • Enable setting the available features via ENV and CLI flags.
  • Have a default set of features that so far consists of repos, issues, pull_requests & search
  • Have a means of enabling everything
  • Additionally provide an experiments option that enables us to stage new tools, or variations of tools without breaking semver conventions, or requiring a version bumps.
  • Build and release Docker images that pass individual product features as arguments, so they can be used as separate servers.

PR for technical implementation details: http://github.com/github/github-mcp-server/pull/188

This means that if you start a server with limited tools, you would need to restart it or load an additional server to get access to the remaining tools.

We're curious to hear what people think, and as the MCP specification evolves, we anticipate that there will be more dynamic solutions in the future, but we want to enable users to access the full range of features possible, without breaking the experience generally.

@SamMorrowDrums SamMorrowDrums added enhancement New feature or request question Further information is requested labels Apr 8, 2025
@toby
Copy link
Member

toby commented Apr 8, 2025

This is great! I would say maybe we only need a single Docker image if we allow the toolsets to be defined by an env var since we could pass that in with docker run -e.

@digitarald
Copy link
Member

Two improvements, where list_changed notifications would be used to dynamically adjust the tools list for the clients:

  • It would be even better when the provided list be based on the scope of the current PAT. I usually just provide repo access; the other tools would just fail anyways.
  • Can the server provide a tool that toggle on groups of tools as needed?

@SamMorrowDrums
Copy link
Collaborator Author

This has landed in main, although not in a formal release - so I will close, and #275 can track any feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request question Further information is requested
Projects
None yet
Development

No branches or pull requests

3 participants