Skip to main content
Glama
BrianLondon

airflow-dev-mcp

by BrianLondon

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
AIRFLOW_URLNoBase URL of the cluster, no path.http://localhost:8080
AIRFLOW_TOKENNoExplicit bearer token; skips username/password entirely.
AIRFLOW_TIMEOUTNoHTTP timeout, in seconds.30
AIRFLOW_PASSWORDNoPassword for authentication.
AIRFLOW_USERNAMENoUsername for authentication.
AIRFLOW_AUTH_MODENoauto, jwt, or basic.auto
AIRFLOW_API_PREFIXNoAPI path prefix. Use /api/v1 for Airflow 2.x./api/v2
AIRFLOW_VERIFY_SSLNoSet false to skip TLS verification (self-signed dev certs).true
AIRFLOW_TOKEN_ENDPOINTNoPath used to exchange credentials for a JWT./auth/token

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
trigger_dagA

Trigger a manual run of a DAG in the dev Airflow cluster.

Args: dag_id: DAG identifier as it appears in Airflow. conf: Optional dict passed to the run (accessible as dag_run.conf inside tasks). logical_date: Optional ISO-8601 timestamp for the run's logical date. Defaults to now. note: Optional human-readable note attached to the run.

Returns: DagRunSummary for the created run, including dag_run_id needed for status/log lookups. Note: if the DAG is paused, the run is created in queued state but will not execute until the DAG is unpaused (see set_dag_paused).

get_run_statusA

Get the state of a DAG run and (optionally) its task instances.

Args: dag_id: DAG identifier. run_id: DAG run identifier returned by trigger_dag (e.g. manual__2026-07-02T14:23:11+00:00). include_tasks: When True (default), also fetch per-task states.

Returns: RunStatus with run (a DagRunSummary) and, if requested, tasks (a list of TaskInstanceSummary: task_id, state, try_number, operator, start/end dates, duration, map_index). tasks is null when include_tasks is False.

get_task_logsA

Fetch logs for a single task instance attempt.

Args: dag_id: DAG identifier. run_id: DAG run identifier. task_id: Task identifier within the DAG. try_number: Attempt number (1-indexed). Retried tasks have multiple attempts — call get_run_status to see the latest try_number per task. map_index: Mapped task index for dynamic task mapping. Use -1 for a normal task. tail_lines: Return only the last N lines (default 500). Pass null for the full log — beware, large tasks can produce many MB of output that will blow up context.

Returns: TaskLogResult with content (log text), truncated (True if tailing dropped earlier lines), line_count (lines returned), and try_number (echoed back).

list_dagsA

List DAGs registered in the cluster with their paused / import-error flags.

Use this to confirm a DAG parsed and registered. Important: a DAG whose file fails to import at module load does NOT appear here at all — call get_import_errors for that.

Args: limit: Max DAGs to return (default 100). offset: Pagination offset. dag_id_pattern: Optional case-insensitive substring filter on dag_id. tags: Optional list of tags; only DAGs carrying one of them are returned.

Returns: DagList with dags (dag_id, is_paused, is_active, has_import_errors, fileloc, description, tags, next_dagrun, last_parsed_time) and total_entries.

get_import_errorsA

List DAG import errors (parse failures) recorded by the scheduler.

The primary debugging tool when a DAG you just wrote isn't showing up: a file that raises at import time is recorded here with its filename and full traceback.

Args: limit: Max errors to return (default 100). offset: Pagination offset.

Returns: ImportErrorList with import_errors (filename, stack_trace, timestamp, import_error_id) and total_entries.

set_dag_pausedA

Pause or unpause a DAG.

Locally, newly added DAGs are paused by default, so trigger_dag will queue a run that never executes until the DAG is unpaused. Call this with paused=False to enable it.

Args: dag_id: DAG identifier. paused: True to pause, False to unpause.

Returns: DagInfo reflecting the updated state.

list_dag_runsA

List recent runs of a DAG — useful when you don't already hold a run_id.

Args: dag_id: DAG identifier. Pass "~" to list runs across all DAGs. limit: Max runs to return (default 25). offset: Pagination offset. state: Optional filter, e.g. ["running"], ["failed"], ["success", "queued"].

Returns: DagRunList with dag_runs (each a DagRunSummary) and total_entries.

clear_task_instancesA

Clear task instances so they re-run — the fast way to re-test a task after a fix.

Defaults to a DRY RUN: it reports which task instances would be cleared without touching them. Pass dry_run=False to actually clear; with reset_dag_runs=True the affected run is put back into a running state so cleared tasks re-execute.

Args: dag_id: DAG identifier. dag_run_id: Restrict to a single run (recommended). If omitted, the API's other filters apply across runs. task_ids: Restrict to specific task_ids. If omitted, all matching tasks are cleared. only_failed: When True, only clear failed task instances. reset_dag_runs: When True (default), set affected runs back to running so cleared tasks are re-scheduled. dry_run: When True (default), preview only. Set False to actually clear.

Returns: ClearResult with dry_run (echoed) and task_instances (the affected TIs).

list_variablesA

List Airflow Variables (read-only) — handy when troubleshooting why a task can't find config it expects.

Values flagged sensitive by Airflow's secrets masker come back masked. Read-only by design: this tool cannot create or modify variables.

Args: limit: Max variables to return (default 100). offset: Pagination offset.

Returns: VariableList with variables (key, value, description) and total_entries.

list_connectionsA

List Airflow Connections (read-only) — passwords are never returned by the API.

Read-only by design: use it to confirm a connection exists with the expected conn_type / host / schema when a task fails to connect.

Args: limit: Max connections to return (default 100). offset: Pagination offset.

Returns: ConnectionList with connections (connection_id, conn_type, host, db_schema, login, port, description) and total_entries.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/BrianLondon/airflow-dev-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server