mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-03 02:22:24 +00:00
fix(mcp): URL-encode server_id in env-var setup deep link
This commit is contained in:
parent
dbc5193fc0
commit
3392cd0e98
2 changed files with 13 additions and 1 deletions
|
|
@ -20,6 +20,7 @@ from typing import (
|
|||
import hashlib
|
||||
import importlib
|
||||
import os
|
||||
from urllib.parse import quote
|
||||
|
||||
# Constants
|
||||
LITELLM_MCP_SERVER_NAME = "litellm-mcp-server"
|
||||
|
|
@ -501,7 +502,7 @@ def interpolate_headers(
|
|||
def build_env_var_setup_url(server_id: str) -> str:
|
||||
"""The frontend URL where a user can fill in their per-user env vars."""
|
||||
base = os.environ.get("PROXY_BASE_URL", "").rstrip("/")
|
||||
path = f"/ui/?page=mcp-servers&fill_env_vars={server_id}"
|
||||
path = f"/ui/?page=mcp-servers&fill_env_vars={quote(server_id, safe='')}"
|
||||
return f"{base}{path}" if base else path
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -106,6 +106,17 @@ def test_build_env_var_setup_url_prepends_proxy_base_url(monkeypatch):
|
|||
assert "fill_env_vars=abc-123" in url
|
||||
|
||||
|
||||
def test_build_env_var_setup_url_encodes_unsafe_server_id(monkeypatch):
|
||||
from urllib.parse import parse_qs, urlsplit
|
||||
|
||||
monkeypatch.delenv("PROXY_BASE_URL", raising=False)
|
||||
server_id = "a&b=c #d/e"
|
||||
url = _u("build_env_var_setup_url")(server_id)
|
||||
assert "a&b=c #d/e" not in url
|
||||
parsed = parse_qs(urlsplit(url).query)
|
||||
assert parsed["fill_env_vars"] == [server_id]
|
||||
|
||||
|
||||
def test_missing_user_env_vars_error_message_is_friendly():
|
||||
with pytest.raises(_u("MCPMissingUserEnvVarsError")) as exc_info:
|
||||
raise _u("MCPMissingUserEnvVarsError")(
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue