feat(user_api_key_auth_mcp.py): correctly dereference mcp server name from ids

This commit is contained in:
Krrish Dholakia
2025-09-29 13:30:37 -07:00
parent bc6e6e7a28
commit df828718c5
3 changed files with 19 additions and 2 deletions
@@ -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}",