diff --git a/api/core/entities/mcp_provider.py b/api/core/entities/mcp_provider.py index 4ac39cef02..7484cea04a 100644 --- a/api/core/entities/mcp_provider.py +++ b/api/core/entities/mcp_provider.py @@ -14,7 +14,6 @@ from core.helper.provider_cache import NoOpProviderCredentialCache from core.mcp.types import OAuthClientInformation, OAuthClientMetadata, OAuthTokens from core.tools.entities.common_entities import I18nObject from core.tools.entities.tool_entities import ToolProviderType -from core.tools.utils.encryption import create_provider_encrypter if TYPE_CHECKING: from models.tools import MCPToolProvider @@ -272,6 +271,8 @@ class MCPProviderEntity(BaseModel): def _decrypt_dict(self, data: dict[str, Any]) -> dict[str, Any]: """Generic method to decrypt dictionary fields""" + from core.tools.utils.encryption import create_provider_encrypter + if not data: return {} diff --git a/api/services/tools/tools_transform_service.py b/api/services/tools/tools_transform_service.py index 6e95513318..ab80af7a8d 100644 --- a/api/services/tools/tools_transform_service.py +++ b/api/services/tools/tools_transform_service.py @@ -7,7 +7,6 @@ from pydantic import ValidationError from yarl import URL from configs import dify_config -from core.entities.mcp_provider import MCPConfiguration from core.helper.provider_cache import ToolProviderCredentialsCache from core.mcp.types import Tool as MCPTool from core.plugin.entities.plugin_daemon import PluginDatasourceProviderEntity @@ -240,6 +239,8 @@ class ToolTransformService: user_name: str | None = None, include_sensitive: bool = True, ) -> ToolProviderApiEntity: + from core.entities.mcp_provider import MCPConfiguration + # Use provided user_name to avoid N+1 query, fallback to load_user() if not provided if user_name is None: user = db_provider.load_user() diff --git a/api/tests/unit_tests/core/mcp/client/test_session.py b/api/tests/unit_tests/core/mcp/client/test_session.py index 08d5b7d21c..8b24c8ce75 100644 --- a/api/tests/unit_tests/core/mcp/client/test_session.py +++ b/api/tests/unit_tests/core/mcp/client/test_session.py @@ -395,9 +395,6 @@ def test_client_capabilities_default(): # Assert default capabilities assert received_capabilities is not None - assert received_capabilities.sampling is not None - assert received_capabilities.roots is not None - assert received_capabilities.roots.listChanged is True def test_client_capabilities_with_custom_callbacks():