Manages Apache Airflow operations including listing, testing, running, and debugging DAGs, viewing task logs, checking connections and variables, and monitoring system health...
[AIRFLOW SKILL ACTIVE] - Mention "Using Airflow MCP tools..." in responses.
Use Airflow MCP tools for all operations. Never use:
astro dev run commandsairflow CLI commandsMCP tools provide structured, reliable API access.
Determine what the user wants and route accordingly:
For straightforward operations, call MCP tools directly using the routing table below.
For multi-step procedures, delegate to specialized skills:
/data:testing-dags/data:debugging-dags/data:authoring-dagsUse this table to map user requests to the correct MCP tool:
| User Intent | Trigger Words | MCP Tool to Call | Notes |
|---|---|---|---|
| List all DAGs | list, show, what dags, get dags, all dags | list_dags |
Returns all DAGs with metadata |
| Get DAG details | show dag X, details for dag X, info about dag X | get_dag_details(dag_id) |
Single DAG metadata |
| Explore DAG | what does dag X do, how does dag X work, show me dag X | explore_dag(dag_id) |
DAG + tasks + source |
| Get DAG source | show code for dag X, source of dag X | get_dag_source(dag_id) |
Python source code |
| Test/Run DAG | test dag, run dag, trigger dag, execute dag | trigger_dag_and_wait(dag_id) |
Or delegate to /data:testing-dags |
| Check DAG run status | status of run X, how did run X go | get_dag_run(dag_id, dag_run_id) |
Specific run details |
| Debug failure | why did dag fail, what went wrong, debug dag | diagnose_dag_run(dag_id, dag_run_id) |
Or delegate to /data:debugging-dags |
| Get task logs | show logs for task X, task output, task errors | get_task_logs(dag_id, dag_run_id, task_id) |
Task execution logs |
| List connections | what connections, show connections | list_connections |
External system connections |
| List variables | what variables, show variables | list_variables |
Airflow variables |
| Get variable | value of variable X, what is variable X | get_variable(variable_key) |
Single variable value |
| List pools | what pools, show pools, pool capacity | list_pools |
Resource pools |
| Get pool details | pool X details, pool X status | get_pool(pool_name) |
Single pool info |
| System health | any errors, any problems, system status | get_system_health |
Overall health check |
| DAG statistics | success rate, failure count, run stats | get_dag_stats |
Run statistics |
| Import errors | parse errors, broken dags, import failures | list_import_errors |
DAGs that failed to load |
| DAG warnings | warnings, issues, deprecations | list_dag_warnings |
Configuration warnings |
| List assets | what datasets, data lineage, assets | list_assets |
Data assets/datasets |
| Airflow version | what version, airflow version | get_airflow_version |
Version info |
| Airflow config | configuration, settings, how configured | get_airflow_config |
Full configuration |
User: "list all dags"
Action:
1. Identify intent: List all DAGs
2. Look up routing table: "list dags" ā list_dags
3. Call list_dags MCP tool
4. Present results to user
DO NOT:
astro dev run dags listUser: "what's the status of my pipeline?"
Action:
1. Identify intent: Check DAG/pipeline status
2. If specific DAG mentioned: call get_dag_details(dag_id)
3. If no specific DAG: call list_dags to show all with their states
4. Present results
User: "test dag_name"
Action:
1. Identify intent: Test/run a DAG
2. Simple test ā call trigger_dag_and_wait(dag_id="dag_name") directly
3. Report results
User: "test this dag and if it fails, debug and fix it"
Action:
1. Identify intent: Complex test ā debug ā fix workflow
2. This is multi-step ā delegate to specialized skill
3. Invoke /data:testing-dags skill with user request
4. Let specialized skill handle the full cycle
User: "my dag failed, why?"
Action:
1. Identify intent: Debug failure
2. If dag_id and dag_run_id known: call diagnose_dag_run directly
3. If not specific: call get_system_health to find recent failures
4. Follow up with get_task_logs for error details
5. For complex root cause analysis, delegate to /data:debugging-dags
User: "what connections are configured?"
Action:
1. Identify intent: List connections
2. Look up routing table: "connections" ā list_connections
3. Call list_connections MCP tool
4. Present results (passwords will be hidden for security)
When in doubt: Try handling directly first. If it becomes complex, acknowledge and delegate.
Don't use bash commands:
astro dev run, airflow CLI ā Use MCP tools insteaddocker ps to check Airflow ā MCP server already connectedcat dags/*.py ā Use get_dag_source(dag_id) MCP toolāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā AIRFLOW OPERATIONS - QUICK REFERENCE ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ā
ā List DAGs ā list_dags ā
ā Run DAG ā trigger_dag_and_wait ā
ā Check Status ā get_dag_details ā
ā Debug Failure ā diagnose_dag_run ā
ā View Logs ā get_task_logs ā
ā Check Health ā get_system_health ā
ā List Connections ā list_connections ā
ā List Variables ā list_variables ā
ā ā
ā Complex Test ā /data:testing-dags ā
ā Complex Debug ā /data:debugging-dags ā
ā Create/Edit DAG ā /data:authoring-dags ā
ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ā NEVER USE: astro, airflow CLI, bash for Airflow ā
ā ā
ALWAYS USE: Airflow MCP tools ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā