Title: Feedback for dynamic tool selection 馃殌 路 Issue #275 路 github/github-mcp-server 路 GitHub
Open Graph Title: Feedback for dynamic tool selection 馃殌 路 Issue #275 路 github/github-mcp-server
X Title: Feedback for dynamic tool selection 馃殌 路 Issue #275 路 github/github-mcp-server
Description: 馃摙 馃敂 we have been experimenting with the ability to let the LLM find and select tools from the GitHub MCP server, rather than having them all enabled up-front. The idea here is that too many tools causing LLM models to experience tool con...
Open Graph Description: 馃摙 馃敂 we have been experimenting with the ability to let the LLM find and select tools from the GitHub MCP server, rather than having them all enabled up-front. The idea here is that too many tools c...
X Description: 馃摙 馃敂 we have been experimenting with the ability to let the LLM find and select tools from the GitHub MCP server, rather than having them all enabled up-front. The idea here is that too many tools c...
Opengraph URL: https://github.com/github/github-mcp-server/issues/275
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Feedback for dynamic tool selection 馃殌","articleBody":" 馃摙 馃敂 we have been experimenting with the ability to let the LLM find and select tools from the GitHub MCP server, rather than having them all enabled up-front.\n\nThe idea here is that too many tools causing LLM models to experience tool confusion, and we have a lot of tools to add to cover our variety of GitHub products.\n\nWith `--dynamic-toolsets` enabled, you start with only 4 tools:\n\n\n\nYou try something like:\n\n`Can you search for issues assigned to me on GitHub?`\n\nAnd it will check and enable the tools it needs, so you end up with the tools you need enabled: \n\n\n\n**We want your feedback 馃檹** \n\n- Did you encounter any issues?\n- What software and what models did you try it with?\n- What did you try to achieve?\n\n### Brief Demo\n\nhttps://github.com/user-attachments/assets/d280fae0-cfe6-40a0-aadf-e367b35135e9\n\n\n### To test this out \n\nUse the `:latest` or `v0.2.0` docker tag, and add the dynamic toolsets env:\n\nImage: ghcr.io/github/github-mcp-server:latest\nEnv: GITHUB_DYNAMIC_TOOLSETS=1\n\n**Make sure you run the following to upgrade the server when using Docker**\n\n```shell\ndocker pull ghcr.io/github/github-mcp-server:latest\n```\n\nYou can create or edit your configuration to try it out. Here is an example of a .vscode/mcp.json file in your workspace that will enable the feature:\n\n```json\n{\n \"inputs\": [\n {\n \"id\": \"github-pat\",\n \"type\": \"promptString\",\n \"description\": \"Github Personal Access Token\",\n \"password\": true\n }\n ],\n \"servers\": {\n \"github-mcp-server\": {\n \"type\": \"stdio\",\n \"command\": \"docker\",\n \"args\": [\n \"run\", \"-i\", \"--rm\", \"-e\", \"GITHUB_DYNAMIC_TOOLSETS=1\", \"-e\", \"GITHUB_PERSONAL_ACCESS_TOKEN\", \"ghcr.io/github/github-mcp-server:main\",\n \"./github-mcp-server\", \"stdio\"\n ],\n \"env\": {\n \"GITHUB_PERSONAL_ACCESS_TOKEN\": \"${input:github-pat}\"\n }\n },\n }\n} \n\n```\n\n## Tool Configuration\n\nThe GitHub MCP Server supports enabling or disabling specific groups of functionalities via the `--toolsets` flag. This allows you to control which GitHub API capabilities are available to your AI tools.\n\n### Available Toolsets\n\nThe following sets of tools are available (all are on by default):\n\n| Toolset | Description |\n| ----------------------- | ------------------------------------------------------------- |\n| `repos` | Repository-related tools (file operations, branches, commits) |\n| `issues` | Issue-related tools (create, read, update, comment) |\n| `users` | Anything relating to GitHub Users |\n| `pull_requests` | Pull request operations (create, merge, review) |\n| `code_security` | Code scanning alerts and security features |\n| `experiments` | Experimental features (not considered stable) |\n\n#### Specifying Toolsets\n\nTo reduce the available tools, you can pass an allow-list in two ways:\n\n1. **Using Command Line Argument**:\n\n ```bash\n github-mcp-server --toolsets repos,issues,pull_requests,code_security\n ```\n\n2. **Using Environment Variable**:\n ```bash\n GITHUB_TOOLSETS=\"repos,issues,pull_requests,code_security\" ./github-mcp-server\n ```\n\nThe environment variable `GITHUB_TOOLSETS` takes precedence over the command line argument if both are provided.\n\nAny toolsets you specify will be enabled from the start, including when `--dynamic-toolsets` is on.\n\nYou might want to do this if the model is confused about which tools to call and you only require a subset.\n\n\n### Using Toolsets With Docker\n\nWhen using Docker, you can pass the toolsets as environment variables:\n\n```bash\ndocker run -i --rm \\\n -e GITHUB_PERSONAL_ACCESS_TOKEN=\u003cyour-token\u003e \\\n -e GITHUB_TOOLSETS=\"repos,issues,pull_requests,code_security,experiments\" \\\n ghcr.io/github/github-mcp-server\n```\n\n### The \"all\" Toolset\n\nThe special toolset `all` can be provided to enable all available toolsets regardless of any other configuration:\n\n```bash\n./github-mcp-server --toolsets all\n```\n\nOr using the environment variable:\n\n```bash\nGITHUB_TOOLSETS=\"all\" ./github-mcp-server\n```\n\n## Dynamic Tool Discovery\n\nInstead of starting with all tools enabled, you can turn on Dynamic Toolset Discovery. \nThis feature provides tools that help the MCP Host application to discover and enable sets of GitHub tools only when needed.\nThis helps to avoid situations where models get confused by the shear number of tools available to them, which varies by model.\n\n### Using Dynamic Tool Discovery\n\nWhen using the binary, you can pass the `--dynamic-toolsets` flag.\n\n```bash\n./github-mcp-server --dynamic-toolsets\n```\n\nWhen using Docker, you can pass the toolsets as environment variables:\n\n```bash\ndocker run -i --rm \\\n -e GITHUB_PERSONAL_ACCESS_TOKEN=\u003cyour-token\u003e \\\n -e GITHUB_DYNAMIC_TOOLSETS=1 \\\n ghcr.io/github/github-mcp-server\n```\n\n\nLet us know how you get on!","author":{"url":"https://github.com/SamMorrowDrums","@type":"Person","name":"SamMorrowDrums"},"datePublished":"2025-04-14T23:15:35.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":14},"url":"https://github.com/275/github-mcp-server/issues/275"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:a2f03bd4-cfea-5d97-25b4-720934574b33 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | EC0E:1F830A:E8211:155BDA:6A61DCBA |
| html-safe-nonce | 101d90e95180f04a141fd0995a2de92dac8ecaf13d8f6475aa3e5f2ab0013564 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFQzBFOjFGODMwQTpFODIxMToxNTVCREE6NkE2MURDQkEiLCJ2aXNpdG9yX2lkIjoiMTYxMDEwNjcxNzYyMjg4NTU2MiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 8f9b12a11bf771c0d52ed179279b2813a4a03da8ecefba5dc8f149b5f64b85ef |
| hovercard-subject-tag | issue:2994493262 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/github/github-mcp-server/275/issue_layout |
| twitter:image | https://opengraph.githubassets.com/37f3754e67baceaebfa2378af9c467ca01804a8594421a1e37a9b3ad8f27dfd6/github/github-mcp-server/issues/275 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/37f3754e67baceaebfa2378af9c467ca01804a8594421a1e37a9b3ad8f27dfd6/github/github-mcp-server/issues/275 |
| og:image:alt | 馃摙 馃敂 we have been experimenting with the ability to let the LLM find and select tools from the GitHub MCP server, rather than having them all enabled up-front. The idea here is that too many tools c... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | SamMorrowDrums |
| hostname | github.com |
| expected-hostname | github.com |
| None | b2de8c74e5e61e893155ba46ee41bc66170c1644cb795adefa8386d490f7781c |
| turbo-cache-control | no-preview |
| go-import | github.com/github/github-mcp-server git https://github.com/github/github-mcp-server.git |
| octolytics-dimension-user_id | 9919 |
| octolytics-dimension-user_login | github |
| octolytics-dimension-repository_id | 942771284 |
| octolytics-dimension-repository_nwo | github/github-mcp-server |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 942771284 |
| octolytics-dimension-repository_network_root_nwo | github/github-mcp-server |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | d1866027ded575df8a15c731dd8b9986c9483ceb |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width