all_dag_event_summary
[Tool Role]: Provides summary of event logs across all DAGs.
Ask an Airflow cluster what is running, what failed and why — DAG runs, task instances, logs, XComs, import errors, durations — and pause, unpause or trigger a DAG once you know.
LABSCO SUMMARY
The read surface is wide enough that most incident questions never reach the web UI, and the write surface is deliberately small — trigger, pause, unpause, and connection create, update and delete. The thing to check first is version: list_users, list_roles, list_permissions, list_datasets and the dataset event tools are marked v1 API only, so on a v2 cluster those are the calls that will not behave, while DAG, task instance and config coverage is unaffected.
A server over the Airflow REST API, 54 tools spanning DAGs and their runs, task instances and their logs, configuration, pools, variables, connections, users and roles, plugins, providers and datasets.
An Airflow cluster reachable over its REST API, with an account whose role permits the endpoints in play — the connection tools write to it. The user, role, permission and dataset tools are documented as v1 API only, and the dataset ones note that v2 uses Assets instead. MIT licensed.
One command plus credentials — uvx --python 3.12 mcp-airflow-api, then supply credentials
USE CASES
Start from the failed runs rather than the DAG list, compare task durations inside the run that broke, open the failing task instance and read the log for the attempt that matters.
A DAG that fails to import never appears in the run history at all. The import error tools show it directly, with the summary telling you whether it is one broken file or a shared import that took several DAGs down with it.
Check what is in flight before touching anything, pause the DAGs that must not start, then unpause them and trigger a catch-up run once the window closes.
Compare run durations over recent history, then break the worst run down by task, and pull the task instances across a date and state range to see whether the delay is one operator or queueing.
Find the connection the DAG uses, read what it currently holds, and update it in place — the connection tools write, so the change does not need a trip to the UI.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
all_dag_event_summary[Tool Role]: Provides summary of event logs across all DAGs.
all_dag_import_summary[Tool Role]: Provides summary of import errors across all DAGs.
create_connection[Tool Role]: Creates a new connection.
dag_calendar[Tool Role]: Shows DAG schedule and execution calendar for a date range.
dag_code[Tool Role]: Retrieves the source code for the specified DAG.
dag_graph[Tool Role]: Retrieves task graph structure for the specified DAG.
dag_run_duration[Tool Role]: Analyzes DAG run durations and performance metrics.
dag_task_duration[Tool Role]: Analyzes task durations within a DAG run.
delete_connection[Tool Role]: Deletes a connection.
failed_dags[Tool Role]: Lists all recently failed DAG runs in the Airflow cluster.
get_config[Tool Role]: Retrieves Airflow configuration.
get_config_section[Tool Role]: Gets all options within a specific configuration section.
get_connection[Tool Role]: Gets details for a specific connection.
get_dag[Tool Role]: Retrieves detailed information for a specific DAG.
get_dags_detailed_batch[Tool Role]: Retrieves detailed information for multiple DAGs in batch with latest run information.
get_dataset[Tool Role]: Gets details of a specific dataset (v1 API only - v2 uses Assets).
get_dataset_events[Tool Role]: Gets events for a specific dataset (v1 API only - v2 uses Assets).
get_event_log[Tool Role]: Retrieves a specific event log entry.
get_health[Tool Role]: Checks Airflow cluster health status.
get_import_error[Tool Role]: Retrieves a specific import error.
get_pool[Tool Role]: Gets details for a specific pool.
get_prompt_template[Tool Role]: Provides comprehensive prompt template for LLM interactions with Airflow operations.
get_provider[Tool Role]: Gets details of a specific provider package.
get_task_instance_details[Tool Role]: Gets detailed information for a specific task instance.
get_task_instance_extra_links[Tool Role]: Gets extra links for a task instance.
get_task_instance_logs[Tool Role]: Retrieves logs for a specific task instance.
get_user[Tool Role]: Gets details of a specific user (v1 API only).
get_variable[Tool Role]: Gets the value of a specific variable.
get_version[Tool Role]: Gets Airflow version information.
get_xcom_entry[Tool Role]: Gets a specific XCom entry.
list_config_sections[Tool Role]: Lists all configuration sections with summary.
list_connections[Tool Role]: Lists all connections in Airflow.
list_dags[Tool Role]: Lists all DAGs registered in the Airflow cluster with pagination support.
list_dataset_events[Tool Role]: Lists dataset events for data lineage tracking (v1 API only - v2 uses Assets).
list_datasets[Tool Role]: Lists all datasets in the Airflow system (v1 API only - v2 uses Assets).
list_event_logs[Tool Role]: Lists event logs from Airflow.
list_import_errors[Tool Role]: Lists import errors in Airflow.
list_permissions[Tool Role]: Lists all permissions available in the Airflow system (v1 API only).
list_plugins[Tool Role]: Lists all installed plugins in the Airflow system.
list_pools[Tool Role]: Lists all pools in Airflow.
list_providers[Tool Role]: Lists all provider packages installed in the Airflow system.
list_roles[Tool Role]: Lists all roles in the Airflow system (v1 API only).
list_task_instances_all[Tool Role]: Lists task instances with comprehensive filtering options.
list_task_instances_batch[Tool Role]: Lists task instances in batch with date and state filtering.
list_tasks[Tool Role]: Lists all tasks within the specified DAG.
list_users[Tool Role]: Lists all users in the Airflow system (v1 API only).
list_variables[Tool Role]: Lists all variables in Airflow.
list_xcom_entries[Tool Role]: Lists XCom entries for a specific task instance.
pause_dag[Tool Role]: Pauses the specified Airflow DAG (prevents scheduling new runs).
running_dags[Tool Role]: Lists all currently running DAG runs in the Airflow cluster.
search_config_options[Tool Role]: Searches for configuration options matching a term.
trigger_dag[Tool Role]: Triggers a new DAG run for a specified Airflow DAG.
unpause_dag[Tool Role]: Unpauses the specified Airflow DAG (allows scheduling new runs).
update_connection[Tool Role]: Updates an existing connection.
BEFORE YOU INSTALL
54 tools when we connected. The documented totals of 43 for API v1 and 45 for v2 are out of date. AIRFLOW_API_VERSION still changes the set: the README marks the asset tools, list_assets and list_asset_events, as API v2 only.
CONTEXT COST
Rated by the size of the 54 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
uvx --python 3.12 mcp-airflow-api{
"mcpServers": {
"mcp-airflow-api": {
"command": "uvx",
"args": [
"--python",
"3.12",
"mcp-airflow-api"
],
"env": {
"AIRFLOW_API_VERSION": "v2",
"AIRFLOW_API_BASE_URL": "http://localhost:8080/api",
"AIRFLOW_API_USERNAME": "airflow",
"AIRFLOW_API_PASSWORD": "airflow"
}
}
}
}{
"mcpServers": {
"mcp-airflow-api": {
"type": "streamable-http",
"url": "http://localhost:8000/mcp"
}
}
}Clients spell the "type" value differently: Claude Code and VS Code use "http", Cline uses "streamableHttp", and Roo Code uses "streamable-http". Claude Desktop does not accept a URL entry in its config file.
{
"mcpServers": {
"mcp-airflow-api": {
"type": "streamable-http",
"url": "http://localhost:8000/mcp",
"headers": {
"Authorization": "Bearer <YOUR_SECURE_SECRET_KEY>"
}
}
}
}Clients spell the "type" value differently: Claude Code and VS Code use "http", Cline uses "streamableHttp", and Roo Code uses "streamable-http". Claude Desktop does not accept a URL entry in its config file.
git clone https://github.com/call518/MCP-Airflow-API.git
cd MCP-Airflow-API
cp .env.example .envEdit .env with your Airflow API settings
docker-compose up -dOpen OpenWebUI at http://localhost:3002/