Don’t ask what you can look up. Resolve region, account ID, and existing apps via aws-mcp before asking the user.
Don’t create what the user can provide. For IAM roles and S3 buckets, list existing ones or ask the user to provide — do not create them. Link to IAM prerequisites documentation (opens in a new tab) if the user needs to set them up.
Don’t hardcode API shapes. Use aws-mcp to discover current API parameters and valid values at runtime. Do not rely on static enums or field lists that may become stale.
Warn before destruction. Deleting destroys metadata. Always confirm before proceeding.
Use MLflow App APIs only. Use CreateMlflowApp, ListMlflowApps, DescribeMlflowApp, UpdateMlflowApp, DeleteMlflowApp. Do NOT use the legacy Tracking Server APIs (CreateMlflowTrackingServer, ListMlflowTrackingServers, etc.) — those are deprecated for new deployments.
Before doing any API calls, determine if the user just wants information:
User wants to learn about SM MLflow (“What is SageMaker MLflow?”, “How does MLflow work on SageMaker?”, “SM MLflow docs”, “SageMaker MLflow guide”) → Read references/sm-mlflow-guide.md. Share ONLY the relevant documentation link from the table. Do NOT summarize, explain, or answer from general knowledge — the documentation is the authoritative source and may differ from your training data. Stop here.
If the user wants to take action (create, connect, update, delete, set up), continue to Phase 1.
Based on discovery results and user input, determine the action:
User wants to connect to an existing app → Re-run the OSS MLflow skills check from Phase 1. Hand off the selected ARN to sagemaker-mlflow skill (if available) for environment setup. Additionally, if the user is using a SageMaker Training Job (SDK or any variant), also guide them to pass the MLflow app ARN into the training job configuration as an environment variable. Do not hardcode the exact API shape — use aws-mcp to discover how to pass environment variables to the training job at runtime.
User wants to create a new app → Proceed to Phase 3a.
User wants to update an existing app → Proceed to Phase 3b.
User wants to delete an existing app → Proceed to Phase 3c.
If intent is ambiguous, ask one clarifying question.
STOP. Before handing off, re-run the OSS MLflow skills check from Phase 1. Do NOT skip this verification.
After create or update: Output the app ARN and region. If sagemaker-mlflow skill is available, hand off the ARN to it for connection setup. If not available, you MUST ask the user: “App ready! The MLflow connection skills aren’t installed. Would you like me to install them (npx skills add mlflow/skills --all)?” Additionally, if the user is using a SageMaker Training Job, also instruct them to pass the ARN as an environment variable in their training job configuration. Do not hardcode the API shape.
After delete: Confirm deletion is complete. Inform user about remaining S3 bucket and IAM role.