diff --git a/litellm/proxy/mcp_registry.json b/litellm/proxy/mcp_registry.json index 1f1d4a272a2..20e62838b07 100644 --- a/litellm/proxy/mcp_registry.json +++ b/litellm/proxy/mcp_registry.json @@ -278,6 +278,7 @@ "registry_url": null, "transport": "http", "url": "https://mcp.nimbleway.com/mcp", + "auth_type": "bearer_token", "env_vars": [ {"name": "NIMBLE_API_KEY", "description": "Nimble API Key", "secret": true} ] diff --git a/tests/unit/proxy/_experimental/mcp_server/test_mcp_discovery.py b/tests/unit/proxy/_experimental/mcp_server/test_mcp_discovery.py index f37bd87d69a..2ab2ac7dbdb 100644 --- a/tests/unit/proxy/_experimental/mcp_server/test_mcp_discovery.py +++ b/tests/unit/proxy/_experimental/mcp_server/test_mcp_discovery.py @@ -106,6 +106,7 @@ class TestMCPRegistryFile: "registry_url": None, "transport": "http", "url": "https://mcp.nimbleway.com/mcp", + "auth_type": "bearer_token", "env_vars": [ { "name": "NIMBLE_API_KEY", diff --git a/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/CreateMCPServer.integration.test.tsx b/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/CreateMCPServer.integration.test.tsx index 65656a053ce..835994c14c0 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/CreateMCPServer.integration.test.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/CreateMCPServer.integration.test.tsx @@ -1934,20 +1934,23 @@ describe("CreateMCPServer", () => { describe("when prefillData is provided", () => { it("should populate form fields from discovery data", async () => { const prefillData = { - name: "github-mcp", - title: "GitHub MCP", - description: "GitHub integration server", - category: "Development", + name: "nimble", + title: "Nimble", + description: "Nimble search server", + category: "Search", transport: "http", - url: "https://github-mcp.example.com", + url: "https://mcp.nimbleway.com/mcp", + auth_type: "bearer_token", }; render(); await waitFor(() => { - // Server name should be sanitized (hyphens replaced with underscores) const nameInput = getServerNameInput(); - expect(nameInput).toHaveValue("github_mcp"); + expect(nameInput).toHaveValue("nimble"); + expect(screen.getByPlaceholderText("https://your-mcp-server.com")).toHaveValue("https://mcp.nimbleway.com/mcp"); + expect(screen.getByText("Bearer Token")).toBeInTheDocument(); + expect(screen.getByText("Authentication Value")).toBeInTheDocument(); }); }); diff --git a/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/CreateMCPServer.tsx b/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/CreateMCPServer.tsx index 07618abb9a4..b457e9ee88a 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/CreateMCPServer.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/mcp-servers/_components/CreateMCPServer.tsx @@ -384,6 +384,7 @@ const CreateMCPServer: React.FC = ({ alias: sanitizedName, description: prefillData.description || "", transport: transport, + auth_type: prefillData.auth_type || undefined, }; if (transport === "stdio") { diff --git a/ui/litellm-dashboard/src/components/mcp_tools/types.tsx b/ui/litellm-dashboard/src/components/mcp_tools/types.tsx index 2a6b3f2793b..4aceab15beb 100644 --- a/ui/litellm-dashboard/src/components/mcp_tools/types.tsx +++ b/ui/litellm-dashboard/src/components/mcp_tools/types.tsx @@ -549,6 +549,7 @@ export interface DiscoverableMCPServer { category: string; registry_url?: string | null; transport: string; + auth_type?: string | null; url?: string | null; command?: string | null; args?: string[] | null;