diff --git a/src/backend/base/langflow/api/v1/mcp_projects.py b/src/backend/base/langflow/api/v1/mcp_projects.py index d85049cc9c24..2ef1b2f99287 100644 --- a/src/backend/base/langflow/api/v1/mcp_projects.py +++ b/src/backend/base/langflow/api/v1/mcp_projects.py @@ -39,7 +39,6 @@ from langflow.base.mcp.util import sanitize_mcp_name from langflow.services.database.models import Flow, Folder from langflow.services.deps import get_settings_service, session_scope -from langflow.services.settings.feature_flags import FEATURE_FLAGS logger = logging.getLogger(__name__) @@ -368,7 +367,6 @@ async def install_mcp_config( # Determine command and args based on operating system os_type = platform.system() command = "uvx" - mcp_tool = "mcp-composer" if FEATURE_FLAGS.mcp_composer else "mcp-proxy" # Check if running on WSL (will appear as Linux but with Microsoft in release info) is_wsl = os_type == "Linux" and "microsoft" in platform.uname().release.lower() @@ -398,33 +396,8 @@ async def install_mcp_config( sse_url = sse_url.replace(f"http://{host}:{port}", f"http://{wsl_ip}:{port}") except OSError as e: logger.warning("Failed to get WSL IP address: %s. Using default URL.", str(e)) - - # Configure args based on the MCP tool - oauth_env = None - if FEATURE_FLAGS.mcp_composer: - args = [mcp_tool, "--sse-url", sse_url] - - # Check for auth settings and add auth parameters - if project.auth_settings: - from langflow.api.v1.schemas import AuthSettings - - auth_settings = AuthSettings(**project.auth_settings) - args.extend(["--auth_type", auth_settings.auth_type]) - - oauth_env = { - "OAUTH_HOST": auth_settings.oauth_host, - "OAUTH_PORT": auth_settings.oauth_port, - "OAUTH_SERVER_URL": auth_settings.oauth_server_url, - "OAUTH_CALLBACK_PATH": auth_settings.oauth_callback_path, - "OAUTH_CLIENT_ID": auth_settings.oauth_client_id, - "OAUTH_CLIENT_SECRET": auth_settings.oauth_client_secret, - "OAUTH_AUTH_URL": auth_settings.oauth_auth_url, - "OAUTH_TOKEN_URL": auth_settings.oauth_token_url, - "OAUTH_MCP_SCOPE": auth_settings.oauth_mcp_scope, - "OAUTH_PROVIDER_SCOPE": auth_settings.oauth_provider_scope, - } else: - args = [mcp_tool, sse_url] + args = ["mcp-proxy", sse_url] if os_type == "Windows": command = "cmd" @@ -439,10 +412,6 @@ async def install_mcp_config( "args": args, } - # Add environment variables if mcp-composer feature flag is enabled and auth settings exist - if FEATURE_FLAGS.mcp_composer and oauth_env is not None: - server_config["env"] = oauth_env # type: ignore[assignment] - mcp_config = { "mcpServers": {f"lf-{sanitize_mcp_name(name)[: (MAX_MCP_SERVER_NAME_LENGTH - 4)]}": server_config} } diff --git a/src/backend/base/langflow/api/v1/schemas.py b/src/backend/base/langflow/api/v1/schemas.py index bd55ddf82d9e..34e7eb01bd89 100644 --- a/src/backend/base/langflow/api/v1/schemas.py +++ b/src/backend/base/langflow/api/v1/schemas.py @@ -444,12 +444,8 @@ class CancelFlowResponse(BaseModel): class AuthSettings(BaseModel): """Model representing authentication settings for MCP.""" - auth_type: Literal["none", "apikey", "basic", "bearer", "iam", "oauth"] = "none" + auth_type: Literal["none", "apikey", "oauth"] = "none" api_key: SecretStr | None = None - username: str | None = None - password: SecretStr | None = None - bearer_token: SecretStr | None = None - iam_endpoint: str | None = None oauth_host: str | None = None oauth_port: str | None = None oauth_server_url: str | None = None diff --git a/src/frontend/src/modals/authModal/index.tsx b/src/frontend/src/modals/authModal/index.tsx index 4b894d5dcf48..bd067554ffe9 100644 --- a/src/frontend/src/modals/authModal/index.tsx +++ b/src/frontend/src/modals/authModal/index.tsx @@ -21,10 +21,6 @@ const AuthModal = ({ open, setOpen, authSettings, onSave }: AuthModalProps) => { ); const [authFields, setAuthFields] = useState<{ apiKey?: string; - iamEndpoint?: string; - username?: string; - password?: string; - bearerToken?: string; oauthHost?: string; oauthPort?: string; oauthServerUrl?: string; @@ -37,10 +33,6 @@ const AuthModal = ({ open, setOpen, authSettings, onSave }: AuthModalProps) => { oauthProviderScope?: string; }>({ apiKey: authSettings?.api_key || "", - iamEndpoint: authSettings?.iam_endpoint || "", - username: authSettings?.username || "", - password: authSettings?.password || "", - bearerToken: authSettings?.bearer_token || "", oauthHost: authSettings?.oauth_host || "", oauthPort: authSettings?.oauth_port || "", oauthServerUrl: authSettings?.oauth_server_url || "", @@ -59,10 +51,6 @@ const AuthModal = ({ open, setOpen, authSettings, onSave }: AuthModalProps) => { setAuthType(authSettings.auth_type || "none"); setAuthFields({ apiKey: authSettings.api_key || "", - iamEndpoint: authSettings.iam_endpoint || "", - username: authSettings.username || "", - password: authSettings.password || "", - bearerToken: authSettings.bearer_token || "", oauthHost: authSettings.oauth_host || "", oauthPort: authSettings.oauth_port || "", oauthServerUrl: authSettings.oauth_server_url || "", @@ -93,15 +81,6 @@ const AuthModal = ({ open, setOpen, authSettings, onSave }: AuthModalProps) => { const authSettingsToSave: AuthSettingsType = { auth_type: authType, ...(authType === "apikey" && { api_key: authFields.apiKey }), - ...(authType === "basic" && { - username: authFields.username, - password: authFields.password, - }), - ...(authType === "iam" && { - iam_endpoint: authFields.iamEndpoint, - api_key: authFields.apiKey, - }), - ...(authType === "bearer" && { bearer_token: authFields.bearerToken }), ...(authType === "oauth" && { oauth_host: authFields.oauthHost, oauth_port: authFields.oauthPort, @@ -188,95 +167,6 @@ const AuthModal = ({ open, setOpen, authSettings, onSave }: AuthModalProps) => { )} - {authType === "basic" && ( -