From fe6c033427402d0491760dfae633332e2b33b2a3 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Sat, 29 Mar 2025 16:01:34 -0700 Subject: [PATCH] render MCP tools on ui logs page --- litellm/constants.py | 1 + litellm/proxy/_experimental/mcp_server/server.py | 7 +++++++ .../src/components/view_logs/columns.tsx | 15 ++++++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/litellm/constants.py b/litellm/constants.py index e224b3d33e7..d5e0215ebf0 100644 --- a/litellm/constants.py +++ b/litellm/constants.py @@ -418,6 +418,7 @@ RESPONSE_FORMAT_TOOL_NAME = "json_tool_call" # default tool name used when conv ########################### Logging Callback Constants ########################### AZURE_STORAGE_MSFT_VERSION = "2019-07-07" +MCP_TOOL_NAME_PREFIX = "mcp_tool" ########################### LiteLLM Proxy Specific Constants ########################### ######################################################################################## diff --git a/litellm/proxy/_experimental/mcp_server/server.py b/litellm/proxy/_experimental/mcp_server/server.py index 0a0ec133402..1469f523b42 100644 --- a/litellm/proxy/_experimental/mcp_server/server.py +++ b/litellm/proxy/_experimental/mcp_server/server.py @@ -11,6 +11,7 @@ from fastapi.responses import StreamingResponse from pydantic import ValidationError from litellm._logging import verbose_logger +from litellm.constants import MCP_TOOL_NAME_PREFIX from litellm.litellm_core_utils.litellm_logging import Logging as LiteLLMLoggingObj from litellm.proxy._types import UserAPIKeyAuth from litellm.proxy.auth.user_api_key_auth import user_api_key_auth @@ -139,6 +140,12 @@ if MCP_AVAILABLE: litellm_logging_obj.model_call_details["mcp_tool_call_metadata"] = ( standard_logging_mcp_tool_call ) + litellm_logging_obj.model_call_details["model"] = ( + f"{MCP_TOOL_NAME_PREFIX}: {standard_logging_mcp_tool_call.get('name') or ''}" + ) + litellm_logging_obj.model_call_details["custom_llm_provider"] = ( + standard_logging_mcp_tool_call.get("mcp_server_name") + ) # Try managed server tool first if name in global_mcp_server_manager.tool_name_to_mcp_server_name_mapping: diff --git a/ui/litellm-dashboard/src/components/view_logs/columns.tsx b/ui/litellm-dashboard/src/components/view_logs/columns.tsx index 98f5bfbc9d4..2732fdaa77b 100644 --- a/ui/litellm-dashboard/src/components/view_logs/columns.tsx +++ b/ui/litellm-dashboard/src/components/view_logs/columns.tsx @@ -8,6 +8,19 @@ import { Tooltip } from "antd"; import { TimeCell } from "./time_cell"; import { Button } from "@tremor/react"; +// Helper to get the appropriate logo URL +const getLogoUrl = ( + row: LogEntry, + provider: string +) => { + // Check if mcp_tool_call_metadata exists and contains mcp_server_logo_url + if (row.metadata?.mcp_tool_call_metadata?.mcp_server_logo_url) { + return row.metadata.mcp_tool_call_metadata.mcp_server_logo_url; + } + // Fall back to default provider logo + return provider ? getProviderLogoAndName(provider).logo : ''; +}; + export type LogEntry = { request_id: string; api_key: string; @@ -177,7 +190,7 @@ export const columns: ColumnDef[] = [
{provider && ( {