Incident Response MCP for Apache Airflow
Diagnose Airflow failures from UI links with bounded logs and optional recovery actions.
Connector by madamak · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/madamak-apache-airflow-mcp-server
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 11 read · 1 write · 2 delete · 2 not yet classified
- Secrets
- 2 (API keys, tokens or passwords)
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 16
Read from the source code; the running server may list different tools.
Read 11 · Look things up without changing anything.
airflow_dataset_eventsairflow_describe_instanceairflow_get_dagairflow_get_dag_runairflow_get_task_instanceairflow_get_task_instance_logsairflow_list_dag_runsairflow_list_dagsairflow_list_instancesairflow_list_task_instancesairflow_resolve_url
Write 1 · Create, change, send or run things.
airflow_trigger_dag
Delete 2 · Delete, drop, revoke or wipe things.
airflow_clear_dag_runairflow_clear_task_instances
Not yet classified 2 · We could not tell from the name and description.
airflow_pause_dagairflow_unpause_dag
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
AIRFLOW_MCP_PASSWORDAIRFLOW_MCP_TOKEN
Other settings (environment variables or headers).
AIRFLOW_MCP_API_VERSIONAIRFLOW_MCP_HOSTAIRFLOW_MCP_READ_ONLYAIRFLOW_MCP_USERNAME
Tools (16)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
airflow_clear_dag_runDestructively clear all task instances within one specific DAG run. Parameters - instance: Instance key (optional; mutually exclusive with ui_url) - ui_url: Airflow UI URL to resolve instance (optional; takes precedence) - dag_id: DAG identifier (required if ui_url not provided) - dag_run_id: DAG run identifier (required if ui_url not provided) - include_subdags: Include subDAGs (optional) - include_parentdag: Include parent DAG (optional) - include_upstream: Include upstream tasks (optional) - include_downstream: Include downstream tasks (optional) - dry_run: Preview without mutating (defaul…
airflow_clear_task_instancesClear task instances for a DAG across one or more runs using Airflow's native filter set (destructive). Parameters - instance: Instance key (optional; mutually exclusive with ui_url) - ui_url: Airflow UI URL to resolve instance (optional; takes precedence) - dag_id: DAG identifier (required if ui_url not provided) - task_ids: List of task IDs to clear (optional) - start_date: ISO8601 start date filter (optional) - end_date: ISO8601 end date filter (optional) - include_subdags: Include subDAGs (optional) - include_parentdag: Include parent DAG (optional) - include_upstream: Include upstream ta…
airflow_dataset_eventsread-onlyList dataset events. Parameters - instance: Instance key (optional) - ui_url: Airflow UI URL to resolve instance (optional) - dataset_uri: Dataset URI (required) - limit: Max results (default 50; accepts int/float/str, coerced to non-negative int, fractional values truncated) Returns - Response dict: { "events": [object], "count": int, "request_id": str }
airflow_describe_instanceread-onlyDescribe a configured Airflow instance (host + metadata, never secrets). Parameters - instance: Instance key (e.g., "data-stg") Returns - Response dict: { "instance", "host", "api_version", "verify_ssl", "auth_type", "request_id": str } - Raises: ToolError with compact JSON payload (`code`, `message`, `request_id`, optional `context`)
airflow_get_dagread-onlyGet DAG details and a UI link. Parameters - instance | ui_url: Provide one; `ui_url` auto-resolves/validates the host. - dag_id: Required when only `instance` is supplied. Returns - Response dict: { "dag": object, "ui_url": str, "request_id": str } - Raises: ToolError with compact JSON payload (`code`, `message`, `request_id`, optional `context`)
airflow_get_dag_runread-onlyGet a single DAG run and a UI link. Parameters - instance: Instance key (optional) - ui_url: Airflow UI URL to resolve instance/dag/dag_run (optional) - dag_id: DAG identifier - dag_run_id: DAG run identifier Returns - Response dict: { "dag_run": object, "ui_url": str, "request_id": str }
airflow_get_task_instanceread-onlyReturn task metadata, config, attempt summary, optional rendered fields, and UI URLs. Parameters - instance | ui_url: Target selection (URL precedence) - dag_id, dag_run_id, task_id: Required identifiers (unless resolved from ui_url) - include_rendered: When true, include rendered template fields (truncated using max_rendered_bytes) - max_rendered_bytes: Byte cap for rendered fields payload (default 100KB; accepts int/float/str, coerced to positive int, fractional values truncated) Returns - Response dict: { "task_instance": {...}, "task_config": {...}, "attempts": {...}, "ui_url": {...}, "r…
airflow_get_task_instance_logsread-onlyFetch task instance logs with optional filtering and truncation. Large log handling: Logs >100MB automatically tail to last 10,000 lines (sets auto_tailed=true). Host-segmented responses are flattened into a single string using headers of the form `--- [worker] ---`, ensuring agents can reason about multi-host output. The tool requires an explicit `try_number`; callers should first retrieve it via `airflow_get_task_instance`. Filter order of operations: 1. Auto-tail: If log >100MB, take last 10,000 lines 2. tail_lines: Extract last N lines from log 3. filter_level: Find matching lines by lev…
airflow_list_dag_runsread-onlyList DAG runs (defaults to execution_date DESC) with per-run UI URLs. Parameters - instance: Instance key (optional) - ui_url: Airflow UI URL to resolve instance/dag_id (optional) - dag_id: DAG identifier (required if ui_url not provided) - limit: Max results (default 100; accepts int/float/str, coerced to non-negative int, fractional values truncated) - offset: Offset for pagination (default 0; accepts int/float/str, coerced to non-negative int, fractional values truncated) - state: List of states to filter by (optional) - order_by: Optional `"start_date"`, `"end_date"`, `"execution_date"`, …
airflow_list_dagsread-onlyList DAGs (pause state + UI link) for the target instance. Parameters - instance: Instance key (optional; mutually exclusive with ui_url) - ui_url: Airflow UI URL to resolve instance (optional; takes precedence - must match a configured host) - limit: Max results (default 100; accepts int/float/str, coerced to non-negative int, fractional values truncated) - offset: Offset for pagination (default 0; accepts int/float/str, coerced to non-negative int, fractional values truncated) Returns - Response dict: { "dags": [{ "dag_id", "is_paused", "ui_url" }], "count": int, "request_id": str } - Rais…
airflow_list_instancesread-onlyList configured Airflow instance keys. Returns - Response dict: { "instances": [str], "default_instance": str | null, "request_id": str } - Raises: ToolError with compact JSON payload (`code`, `message`, `request_id`, optional `context`)
airflow_list_task_instancesread-onlyList task instances within one DAG run, including state and attempt log URLs. Parameters - instance: Instance key (optional) - ui_url: Airflow UI URL to resolve instance/dag/dag_run (optional) - dag_id: DAG identifier - dag_run_id: DAG run identifier - limit: Max results (default 100; accepts int/float/str, coerced to non-negative int, fractional values truncated) - offset: Offset for pagination (default 0; accepts int/float/str, coerced to non-negative int, fractional values truncated) - state: Optional list of task states (case-insensitive). When provided, only matching states are returned.…
airflow_pause_dagPause DAG scheduling (sets `is_paused=True` and returns UI link). Parameters - instance: Instance key (optional; mutually exclusive with ui_url) - ui_url: Airflow UI URL to resolve instance (optional; takes precedence) - dag_id: DAG identifier (required if ui_url not provided) Returns - Response dict: { "dag_id": str, "is_paused": true, "ui_url": str, "request_id": str } - Raises: ToolError with compact JSON payload (`code`, `message`, `request_id`, optional `context`)
airflow_resolve_urlread-onlyParse an Airflow UI URL, resolve instance and identifiers. Parameters - url: Airflow UI URL (http/https) Returns - Response dict: { "instance", "dag_id"?, "dag_run_id"?, "task_id"?, "try_number"?, "route", "request_id" } - Raises: ToolError with compact JSON payload (`code`, `message`, `request_id`, optional `context`)
airflow_trigger_dagTrigger a DAG run with optional configuration. Parameters - instance: Instance key (optional; mutually exclusive with ui_url) - ui_url: Airflow UI URL to resolve instance (optional; takes precedence) - dag_id: DAG identifier (required if ui_url not provided) - dag_run_id: Custom run id (optional) - logical_date: Optional ISO8601 logical date/time assigned to the new run - conf: Configuration object as dict or JSON string (optional) - note: Run note/comment (optional) Returns - Response dict: { "dag_run_id": str, "ui_url": str } - Raises: ToolError with compact JSON payload (`code`, `message`…
Show 1 more tools
airflow_unpause_dagResume DAG scheduling (sets `is_paused=False` and returns UI link). Parameters - instance: Instance key (optional; mutually exclusive with ui_url) - ui_url: Airflow UI URL to resolve instance (optional; takes precedence) - dag_id: DAG identifier (required if ui_url not provided) Returns - Response dict: { "dag_id": str, "is_paused": false, "ui_url": str, "request_id": str } - Raises: ToolError with compact JSON payload (`code`, `message`, `request_id`, optional `context`)
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 56
- Last commit
- Jul 16, 2026 (3 months ago)
- Last release
- Jul 16, 2026 (3 months ago)
- Last package publish
- Jul 16, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.madamak/apache-airflow-mcp-server- Version
- 1.0.2
- Auth
- API key
- Packages
- pypi apache-airflow-mcp-server
- License
- Apache-2.0
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Incident Response MCP for Apache Airflow. Agent Mart. https://agentmart.dev/connectors/madamak-apache-airflow-mcp-server (last updated 2026-10-24)