fix(mcp): Use ProviderName enum directly instead of str() for credential provider

Python 3.13 changed str(StrEnum) to return "ClassName.MEMBER" instead of
the plain value. This caused MCP credentials to be stored with provider
"ProviderName.MCP" instead of "mcp", leading to type/provider mismatch
errors during graph validation and execution.

Fix: Pass the enum directly to Pydantic (which extracts .value automatically),
matching the pattern used by all other OAuth handlers. Use .value explicitly
only in non-Pydantic contexts (string comparisons, API calls).
This commit is contained in:
Zamil Majdy
2026-02-10 09:06:29 +04:00
parent 7744b89e96
commit 8eed4ad653

View File

@@ -113,7 +113,7 @@ class MCPOAuthHandler(BaseOAuthHandler):
expires_in = tokens.get("expires_in")
return OAuth2Credentials(
provider=getattr(self.PROVIDER_NAME, "value", self.PROVIDER_NAME),
provider=self.PROVIDER_NAME,
title=None,
access_token=SecretStr(tokens["access_token"]),
refresh_token=(
@@ -163,7 +163,7 @@ class MCPOAuthHandler(BaseOAuthHandler):
return OAuth2Credentials(
id=credentials.id,
provider=getattr(self.PROVIDER_NAME, "value", self.PROVIDER_NAME),
provider=self.PROVIDER_NAME,
title=credentials.title,
access_token=SecretStr(tokens["access_token"]),
refresh_token=(