From 8eed4ad653214037f3e25e99041fbe48966de8e9 Mon Sep 17 00:00:00 2001 From: Zamil Majdy Date: Tue, 10 Feb 2026 09:06:29 +0400 Subject: [PATCH] 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). --- autogpt_platform/backend/backend/blocks/mcp/oauth.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/autogpt_platform/backend/backend/blocks/mcp/oauth.py b/autogpt_platform/backend/backend/blocks/mcp/oauth.py index 9636c42e8b..0849540300 100644 --- a/autogpt_platform/backend/backend/blocks/mcp/oauth.py +++ b/autogpt_platform/backend/backend/blocks/mcp/oauth.py @@ -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=(