Find the DAG, find the run that failed, read the task log that explains it, then clear the run so it retries. In the Airflow UI that is four screens; here it is four calls in the window where you were already asking the question.
A Python MCP server for Apache Airflow 3, talking to REST API v2. Its tools list DAGs and their tasks, trigger and clear runs, pause and unpause a DAG, and read run history, task instances, logs and import errors.
- All DAGs listed with filters, and the tasks inside one of them
- A DAG run triggered, with optional run configuration
- A failed DAG run cleared so it retries
- A DAG paused or unpaused by setting its state
- Run history, task instances and aggregate statistics for a DAG
- The execution log for a task instance
- The DAG import and parsing errors Airflow is currently reporting
A reachable Airflow 3 instance and a .env holding airflow_baseurl and airflow_api_url. Authentication prefers a JWT in airflow_jwt_token — get one by posting your username and password to /auth/token on your Airflow URL — and falls back to airflow_username and airflow_password. Python dependencies come from requirements.txt.
Build from source — clone the repository and build it, then point your client at the binary
