From 3d5ca7ce3fcd81b6aec2f9c7d06ec592aa2f4959 Mon Sep 17 00:00:00 2001 From: Sisyphus Date: Mon, 31 Aug 2026 22:22:34 +0800 Subject: [PATCH] fix(mcp): avoid eager YAML dependency import --- .../proxy/_experimental/mcp_server/openapi_to_mcp_generator.py | 3 ++- pyproject.toml | 2 +- uv.lock | 2 -- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/litellm/proxy/_experimental/mcp_server/openapi_to_mcp_generator.py b/litellm/proxy/_experimental/mcp_server/openapi_to_mcp_generator.py index 23b34ade96e..179d9997750 100644 --- a/litellm/proxy/_experimental/mcp_server/openapi_to_mcp_generator.py +++ b/litellm/proxy/_experimental/mcp_server/openapi_to_mcp_generator.py @@ -13,7 +13,6 @@ from typing import Any, Final, TypedDict from urllib.parse import quote import httpx -import yaml from typing_extensions import ReadOnly, Required from litellm.llms.custom_httpx.http_handler import MaskedHTTPStatusError @@ -181,6 +180,8 @@ def _parse_openapi_spec(text: str) -> Mapping[str, Any]: try: parsed: Any = json.loads(text) except json.JSONDecodeError: + import yaml + parsed = yaml.safe_load(text) if not isinstance(parsed, dict): diff --git a/pyproject.toml b/pyproject.toml index a41c7109701..e670b10547e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -123,7 +123,7 @@ utils = [ "numpydoc>=1.8.0,<2.0", ] caching = ["diskcache>=5.6.3,<6.0"] -mcp = ["mcp>=2.2.0,<3", "httpx2>=2.5.0,<3", "pydantic>=2.12.0,<3", "pyyaml>=6.0.3,<7.0"] +mcp = ["mcp>=2.2.0,<3", "httpx2>=2.5.0,<3", "pydantic>=2.12.0,<3"] # Driver for the MongoDB Atlas vector store; Atlas Vector Search has no HTTP query API. # The floor is 4.9 because that is the release AsyncMongoClient landed in. # SAML SSO for the admin UI. python3-saml pulls in xmlsec/lxml, whose wheels diff --git a/uv.lock b/uv.lock index 0a5d1634a1f..a481ecb2a2c 100644 --- a/uv.lock +++ b/uv.lock @@ -4562,7 +4562,6 @@ mcp = [ { name = "httpx2" }, { name = "mcp" }, { name = "pydantic" }, - { name = "pyyaml" }, ] mlflow = [ { name = "mlflow" }, @@ -4841,7 +4840,6 @@ requires-dist = [ { name = "python3-saml", marker = "extra == 'saml'", specifier = ">=1.16.0,<2.0" }, { name = "pyyaml", specifier = ">=6.0.3,<7.0" }, { name = "pyyaml", marker = "extra == 'cli'", specifier = ">=6.0.3,<7.0" }, - { name = "pyyaml", marker = "extra == 'mcp'", specifier = ">=6.0.3,<7.0" }, { name = "pyyaml", marker = "extra == 'proxy'", specifier = ">=6.0.3,<7.0" }, { name = "redisvl", marker = "extra == 'extra-proxy'", specifier = ">=0.4.1,<1.0" }, { name = "requests", marker = "extra == 'cli'", specifier = ">=2.32.0,<3.0" },