From a90906f75ad3e4e0bec2eaa55d2b991410fa1365 Mon Sep 17 00:00:00 2001 From: Alvin Tang Date: Sat, 14 Mar 2026 21:48:16 +0800 Subject: [PATCH] fix: filter tools by disallowed_tools config during tool listing The MCP tool listing logic only checked allowed_tools but never filtered out tools in disallowed_tools, causing disallowed_tools config to have no effect in the UI or API responses. Add a filtering step in _get_tools_from_server() that uses the existing check_allowed_or_banned_tools() method to exclude tools matching the disallowed_tools list before returning them. Fixes #23549 --- .../proxy/_experimental/mcp_server/mcp_server_manager.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py b/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py index 43fe54fdfb7..7fc5d8ed1a5 100644 --- a/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py +++ b/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py @@ -1074,6 +1074,14 @@ class MCPServerManager: else: tools = await self._fetch_tools_with_timeout(client, server.name) + # Filter tools based on allowed_tools / disallowed_tools config + if server.allowed_tools or server.disallowed_tools: + tools = [ + tool + for tool in tools + if self.check_allowed_or_banned_tools(tool.name, server) + ] + prefixed_or_original_tools = self._create_prefixed_tools( tools, server, add_prefix=add_prefix )