Fix MCP connect base URL normalization

This commit is contained in:
Yu Cheng 2026-08-09 16:28:29 -07:00
parent 7ad1b5c32c
commit 4b137dd983
2 changed files with 29 additions and 3 deletions

View file

@ -49,4 +49,26 @@ describe("resolveMCPConnectBaseUrl", () => {
),
).toBe(fallbackBaseUrl);
});
it("trims trailing slashes before endpoint paths are appended", () => {
expect(
resolveMCPConnectBaseUrl(
{
LITELLM_UI_API_DOC_BASE_URL: " https://docs.litellm.test/// ",
},
fallbackBaseUrl,
),
).toBe("https://docs.litellm.test");
expect(
resolveMCPConnectBaseUrl(
{
PROXY_BASE_URL: "https://proxy.litellm.test/",
},
`${fallbackBaseUrl}/`,
),
).toBe("https://proxy.litellm.test");
expect(resolveMCPConnectBaseUrl(undefined, `${fallbackBaseUrl}/`)).toBe(fallbackBaseUrl);
});
});

View file

@ -3,19 +3,23 @@ export interface MCPConnectProxySettings {
LITELLM_UI_API_DOC_BASE_URL?: string | null;
}
function normalizeBaseUrl(baseUrl: string): string {
return baseUrl.trim().replace(/\/+$/, "");
}
export function resolveMCPConnectBaseUrl(
proxySettings: MCPConnectProxySettings | undefined,
fallbackBaseUrl: string,
): string {
const customDocBaseUrl = proxySettings?.LITELLM_UI_API_DOC_BASE_URL;
if (customDocBaseUrl && customDocBaseUrl.trim()) {
return customDocBaseUrl.trim();
return normalizeBaseUrl(customDocBaseUrl);
}
const proxyBaseUrl = proxySettings?.PROXY_BASE_URL;
if (proxyBaseUrl && proxyBaseUrl.trim()) {
return proxyBaseUrl.trim();
return normalizeBaseUrl(proxyBaseUrl);
}
return fallbackBaseUrl;
return normalizeBaseUrl(fallbackBaseUrl);
}