diff --git a/litellm/proxy/mcp_registry.json b/litellm/proxy/mcp_registry.json
index b618961262a..ae3bfb26295 100644
--- a/litellm/proxy/mcp_registry.json
+++ b/litellm/proxy/mcp_registry.json
@@ -267,6 +267,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/test_litellm/proxy/_experimental/mcp_server/test_mcp_discovery.py b/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_discovery.py
index 3a14d0d881d..f4ba1e52939 100644
--- a/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_discovery.py
+++ b/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_discovery.py
@@ -109,6 +109,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 c9007e29c3e..85921f02b31 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
@@ -1897,20 +1897,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 476e43e49aa..8f52da93615 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
@@ -361,6 +361,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 8d0d6dd0b89..1b2e72d7e83 100644
--- a/ui/litellm-dashboard/src/components/mcp_tools/types.tsx
+++ b/ui/litellm-dashboard/src/components/mcp_tools/types.tsx
@@ -519,6 +519,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;