mirror of
https://github.com/tiennm99/litellm.git
synced 2026-07-15 20:20:28 +00:00
feat(user_api_key_auth_mcp.py): correctly dereference mcp server name from ids
This commit is contained in:
@@ -294,6 +294,9 @@ class MCPRequestHandler:
|
||||
) -> List[str]:
|
||||
"""
|
||||
Get list of allowed MCP servers for the given user/key based on permissions
|
||||
|
||||
Returns:
|
||||
List[str]: List of allowed MCP servers by server id
|
||||
"""
|
||||
from typing import List
|
||||
|
||||
@@ -331,7 +334,7 @@ class MCPRequestHandler:
|
||||
return []
|
||||
|
||||
@staticmethod
|
||||
async def is_tool_allowed(
|
||||
def is_tool_allowed(
|
||||
allowed_mcp_servers: List[str],
|
||||
server_name: str,
|
||||
) -> bool:
|
||||
|
||||
@@ -919,6 +919,14 @@ class MCPServerManager:
|
||||
return server
|
||||
return None
|
||||
|
||||
def get_mcp_server_names_from_ids(self, server_ids: List[str]) -> List[str]:
|
||||
server_names = []
|
||||
registry = self.get_registry()
|
||||
for server in registry.values():
|
||||
if server.server_id in server_ids:
|
||||
server_names.append(server.name)
|
||||
return server_names
|
||||
|
||||
def get_mcp_server_by_name(self, server_name: str) -> Optional[MCPServer]:
|
||||
"""
|
||||
Get the MCP Server from the server name
|
||||
|
||||
@@ -561,13 +561,19 @@ if MCP_AVAILABLE:
|
||||
)
|
||||
|
||||
## CHECK IF USER IS ALLOWED TO CALL THIS TOOL
|
||||
allowed_mcp_servers = await MCPRequestHandler.get_allowed_mcp_servers(
|
||||
allowed_mcp_server_ids = await MCPRequestHandler.get_allowed_mcp_servers(
|
||||
user_api_key_auth=user_api_key_auth,
|
||||
)
|
||||
|
||||
allowed_mcp_servers = global_mcp_server_manager.get_mcp_server_names_from_ids(
|
||||
allowed_mcp_server_ids
|
||||
)
|
||||
|
||||
if not MCPRequestHandler.is_tool_allowed(
|
||||
allowed_mcp_servers=allowed_mcp_servers,
|
||||
server_name=server_name_from_prefix,
|
||||
):
|
||||
|
||||
raise HTTPException(
|
||||
status_code=403,
|
||||
detail=f"User not allowed to call this tool. Allowed MCP servers: {allowed_mcp_servers}",
|
||||
|
||||
Reference in New Issue
Block a user