Title: Tools filtering · Issue #285 · modelcontextprotocol/modelcontextprotocol · GitHub
Open Graph Title: Tools filtering · Issue #285 · modelcontextprotocol/modelcontextprotocol
X Title: Tools filtering · Issue #285 · modelcontextprotocol/modelcontextprotocol
Description: Is your feature request related to a problem? Please describe. Some MCP servers expose tools which provides same functionality e.g. Claude Code: FileReadTool FileEditTool FileWriteTool Intellij MCP plugin: ReplaceCurrentFileTextTool Repl...
Open Graph Description: Is your feature request related to a problem? Please describe. Some MCP servers expose tools which provides same functionality e.g. Claude Code: FileReadTool FileEditTool FileWriteTool Intellij MCP...
X Description: Is your feature request related to a problem? Please describe. Some MCP servers expose tools which provides same functionality e.g. Claude Code: FileReadTool FileEditTool FileWriteTool Intellij MCP...
Opengraph URL: https://github.com/modelcontextprotocol/modelcontextprotocol/issues/285
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Tools filtering","articleBody":"**Is your feature request related to a problem? Please describe.**\nSome MCP servers expose tools which provides same functionality e.g.\n\nClaude Code:\n- FileReadTool\t\n- FileEditTool\t\n- FileWriteTool\t\n\nIntellij MCP plugin:\n- ReplaceCurrentFileTextTool\n- ReplaceSelectedTextTool\n- ReplaceSpecificTextTool\n- ReplaceTextByPathTool\n\nWhich make if hard to control what tools should be used for which purpose. And prompting often times do not stop the agent from using the tools it was told not to use. Over time as ecosystem grows more mature this problem will become even bigger.\n\n**Describe the solution you'd like**\nProvide the way to explicitly request the list of desired tools for agent. E.g. in case I'm using claude code I may prefer using built-in tools and exclude Intellij text tools offerings, but still continue using rest of Intellij MCP tools.\n\nE.g. InitializeRequest may have extra `requestedTools` or `excludedTools` field which users can specify in MCP configuration e.g.\n\n```json\n{\n \"mcpServers\": {\n \"jetbrains\": {\n \"command\": \"npx\",\n \"requestedTools\": [\"get_run_configurations_tool\", \"list_available_actions_tool\"]\n \"args\": [\"-y\", \"@jetbrains/mcp-proxy\"]\n }\n }\n}\n```\n\n**Describe alternatives you've considered**\n\n### MCP proxy\nProvide an MCP server which will act as filter to strip tool announcements from server responses, downside of that is maintaining extra proxy layers, possibly for multiple servers, as well as lack of transparency since the server itself does not know that tools is unused, this info may be used to prevent spending resources of initialization of unused tools.\n\n### Server configuration\nDifferent servers may have it's own ways to turn tools on and off, including [UI toggles ](https://github.com/JetBrains/mcp-server-plugin/issues/18#issuecomment-2778929211), this approach may lead to fragmentation, and it's unclear what would be the path forward for the tools which decide to avoid implementing the configuration.\n\n### Client configuration\nAllow client to maintain the list of banned tools and manage the logic/prompts to prevent this tools from being used. Not a bad option but It will complicate client implementations as well as some waste on a protocol level since information about all available tools will be exchanged even if it would never be used during the session. \n\n**Additional context**\nRelated discussions \nhttps://github.com/JetBrains/mcp-server-plugin/issues/18\nhttps://github.com/JetBrains/mcp-jetbrains/issues/34\n","author":{"url":"https://github.com/stepango","@type":"Person","name":"stepango"},"datePublished":"2025-04-08T00:46:47.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/285/modelcontextprotocol/issues/285"}
| 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:3e1caccb-a0fa-c3e6-8cc2-69f5138c48f8 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | A46A:251DF3:2D4AA0C:3BE6C13:6A5CEC1F |
| html-safe-nonce | c6ad5984b7473392fa12bd180da224fc3de4acd3c4afff599dbdbac5eb556845 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBNDZBOjI1MURGMzoyRDRBQTBDOjNCRTZDMTM6NkE1Q0VDMUYiLCJ2aXNpdG9yX2lkIjoiNDEyMzc4NTYxMjM1NjI4MzQyMyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 98b943fd672458d30fa73ec4699f33733033ebceac4534eaf8e99709921b5d17 |
| hovercard-subject-tag | issue:2978308899 |
| 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/modelcontextprotocol/modelcontextprotocol/285/issue_layout |
| twitter:image | https://opengraph.githubassets.com/2b4b54e383c06bed73d28619af6c8fca7cc8e232b1a42380ef9072ddd284006b/modelcontextprotocol/modelcontextprotocol/issues/285 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/2b4b54e383c06bed73d28619af6c8fca7cc8e232b1a42380ef9072ddd284006b/modelcontextprotocol/modelcontextprotocol/issues/285 |
| og:image:alt | Is your feature request related to a problem? Please describe. Some MCP servers expose tools which provides same functionality e.g. Claude Code: FileReadTool FileEditTool FileWriteTool Intellij MCP... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | stepango |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5290d7e14309ad1e76106a9c4237bd1041517e83ea182c8ab756752cb0c6940b |
| turbo-cache-control | no-preview |
| go-import | github.com/modelcontextprotocol/modelcontextprotocol git https://github.com/modelcontextprotocol/modelcontextprotocol.git |
| octolytics-dimension-user_id | 182288589 |
| octolytics-dimension-user_login | modelcontextprotocol |
| octolytics-dimension-repository_id | 862570523 |
| octolytics-dimension-repository_nwo | modelcontextprotocol/modelcontextprotocol |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 862570523 |
| octolytics-dimension-repository_network_root_nwo | modelcontextprotocol/modelcontextprotocol |
| 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 | 9c975978430e9ad293956f2bbdaf153b1bd84a99 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width