diff --git a/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py b/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py index 67a7d4f47f..7e90c64efd 100644 --- a/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py +++ b/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py @@ -2604,6 +2604,7 @@ class MCPServerManager: server.mcp_info.get("description") if server.mcp_info else None ), url=server.url, + spec_path=server.spec_path, transport=server.transport, auth_type=server.auth_type, created_at=datetime.now(), diff --git a/ui/litellm-dashboard/src/components/mcp_tools/mcp_server_columns.tsx b/ui/litellm-dashboard/src/components/mcp_tools/mcp_server_columns.tsx index 78e9c6f465..d49949e7e0 100644 --- a/ui/litellm-dashboard/src/components/mcp_tools/mcp_server_columns.tsx +++ b/ui/litellm-dashboard/src/components/mcp_tools/mcp_server_columns.tsx @@ -47,7 +47,13 @@ export const mcpServerColumns = ( { accessorKey: "transport", header: "Transport", - cell: ({ getValue }) => {((getValue() as string) || "http").toUpperCase()}, + cell: ({ row }) => { + const transport = row.original.transport || "http"; + const specPath = row.original.spec_path; + // If server has spec_path, display as "OPENAPI" instead of the raw transport type + const displayTransport = specPath && transport !== "stdio" ? "OPENAPI" : transport; + return {displayTransport.toUpperCase()}; + }, }, { accessorKey: "auth_type", diff --git a/ui/litellm-dashboard/src/components/mcp_tools/mcp_server_edit.tsx b/ui/litellm-dashboard/src/components/mcp_tools/mcp_server_edit.tsx index 7cb590e319..4209d8bf11 100644 --- a/ui/litellm-dashboard/src/components/mcp_tools/mcp_server_edit.tsx +++ b/ui/litellm-dashboard/src/components/mcp_tools/mcp_server_edit.tsx @@ -159,9 +159,9 @@ const MCPServerEdit: React.FC = ({ }, [mcpServer.env]); - // If server has spec_path and no url, show it as "openapi" transport in the UI + // If server has spec_path, show it as "openapi" transport in the UI const effectiveTransport = React.useMemo(() => { - if (mcpServer.spec_path && !mcpServer.url && mcpServer.transport !== "stdio") { + if (mcpServer.spec_path && mcpServer.transport !== "stdio") { return TRANSPORT.OPENAPI; } return mcpServer.transport; diff --git a/ui/litellm-dashboard/src/components/mcp_tools/mcp_server_view.tsx b/ui/litellm-dashboard/src/components/mcp_tools/mcp_server_view.tsx index 628e61a8d3..cb7768ab21 100644 --- a/ui/litellm-dashboard/src/components/mcp_tools/mcp_server_view.tsx +++ b/ui/litellm-dashboard/src/components/mcp_tools/mcp_server_view.tsx @@ -131,7 +131,7 @@ export const MCPServerView: React.FC = ({ Transport
- {handleTransport(mcpServer.transport ?? undefined)} + {handleTransport(mcpServer.transport ?? undefined, mcpServer.spec_path ?? undefined).toUpperCase()}
@@ -221,7 +221,7 @@ export const MCPServerView: React.FC = ({
Transport -
{handleTransport(mcpServer.transport)}
+
{handleTransport(mcpServer.transport, mcpServer.spec_path).toUpperCase()}
Extra Headers diff --git a/ui/litellm-dashboard/src/components/mcp_tools/types.tsx b/ui/litellm-dashboard/src/components/mcp_tools/types.tsx index f13ec198c7..1fa447c0e6 100644 --- a/ui/litellm-dashboard/src/components/mcp_tools/types.tsx +++ b/ui/litellm-dashboard/src/components/mcp_tools/types.tsx @@ -25,11 +25,16 @@ export const TRANSPORT = { OPENAPI: "openapi", }; -export const handleTransport = (transport?: string | null): string => { +export const handleTransport = (transport?: string | null, specPath?: string | null): string => { if (transport === null || transport === undefined) { return TRANSPORT.SSE; } + // If server has spec_path, display as "openapi" instead of the raw transport type + if (specPath && transport !== TRANSPORT.STDIO) { + return TRANSPORT.OPENAPI; + } + return transport; };