diff --git a/litellm/proxy/_experimental/mcp_server/outbound_credentials/resolver.py b/litellm/proxy/_experimental/mcp_server/outbound_credentials/resolver.py index 134e7438d4e..ceb709e140d 100644 --- a/litellm/proxy/_experimental/mcp_server/outbound_credentials/resolver.py +++ b/litellm/proxy/_experimental/mcp_server/outbound_credentials/resolver.py @@ -14,7 +14,6 @@ that each land in a follow-up PR with their seam. Pure v2: no imports from v1. from __future__ import annotations -from typing import Optional import httpx from typing_extensions import assert_never @@ -53,7 +52,7 @@ from litellm.proxy._experimental.mcp_server.outbound_credentials.types import ( class _NullOAuthTokenStore: """Fail-closed default: with no token store wired, every user reads as not authorized.""" - async def fetch(self, user_id: str, server_id: str) -> Optional[OAuthToken]: + async def fetch(self, user_id: str, server_id: str) -> OAuthToken | None: return None @@ -65,7 +64,7 @@ class UpstreamCredentialProvider: `authorization_code` reads the user's token from the injected `OAuthTokenStore`. """ - def __init__(self, oauth_token_store: Optional[OAuthTokenStore] = None) -> None: + def __init__(self, oauth_token_store: OAuthTokenStore | None = None) -> None: self._oauth_token_store: OAuthTokenStore = ( oauth_token_store or _NullOAuthTokenStore() ) @@ -115,7 +114,7 @@ class UpstreamCredentialProvider: async def _authz_token( self, subject: Subject, server: ServerSpec - ) -> Optional[OAuthToken]: + ) -> OAuthToken | None: """The user's authorization_code token, or None when absent or the store is unreachable. A store outage is mapped to None (the OAuth challenge), not raised, so a transient outage diff --git a/litellm/proxy/_experimental/mcp_server/outbound_credentials/v1_token_store.py b/litellm/proxy/_experimental/mcp_server/outbound_credentials/v1_token_store.py index 01cbff03bc4..97d37d7c97d 100644 --- a/litellm/proxy/_experimental/mcp_server/outbound_credentials/v1_token_store.py +++ b/litellm/proxy/_experimental/mcp_server/outbound_credentials/v1_token_store.py @@ -8,7 +8,6 @@ It imports v1, so it is kept out of the package ``__init__`` like the rest of th from __future__ import annotations -from typing import Optional from litellm.proxy._experimental.mcp_server.outbound_credentials.oauth_token_store import ( OAuthToken, @@ -24,7 +23,7 @@ class V1PerUserTokenStore: this never raises ``TokenStoreUnavailable``. """ - async def fetch(self, user_id: str, server_id: str) -> Optional[OAuthToken]: + async def fetch(self, user_id: str, server_id: str) -> OAuthToken | None: if not user_id: return None