airflow-mcp-server
This server provides a curated interface for inspecting and operating Apache Airflow 2 via its REST API, offering both read-only access and guarded write capabilities.
Read capabilities:
get_airflow_version– Check the Airflow version and confirm API connectivityget_airflow_health– View health status of Airflow components (metadatabase, scheduler, triggerer, dag-processor)list_dags– List DAGs with pause state, schedule, owners, and tags (filterable by tag, paused state, and dag_id pattern)get_dag– Get details of a single DAG by IDlist_dag_runs– List runs of a DAG, most recent first (filterable by state, limit, offset)get_dag_run– Get a single DAG run by DAG ID and run IDlist_task_instances– List task instances in a DAG run with states and timings (filterable by state)get_task_instance– Get a single task instance by DAG ID, run ID, and task IDget_task_logs– Read logs for a specific task attempt (supports tailing for large logs)list_import_errors– List DAG parse/import errors with filenames and stack traceslist_pools– List worker pools with slot usage (occupied, running, queued, open)
Write capabilities (disabled when AIRFLOW_MCP_READ_ONLY=true):
trigger_dag_run– Trigger a new DAG run, optionally with a custom run ID, logical date, config, and noteset_dag_paused– Pause or unpause a DAG to stop/resume schedulingclear_task_instances– Clear (retry) task instances; supportsdry_run=Trueto preview affected tasks without making changes, with options to filter by task IDs, run ID, failed-only, and include upstream/downstream tasks
Allows inspection and operation of Apache Airflow over its REST API, providing tools for managing DAGs, DAG runs, task instances, logs, pools, and import errors.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@airflow-mcp-serverwhat's the health of my Airflow instance?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
airflow-mcp-server
An MCP server that lets Claude inspect and operate Apache Airflow over its REST API. It exposes safe, curated tools (read + a few guarded writes) rather than mirroring the whole API.
Targets Airflow 2 (stable REST API /api/v1). Airflow 3 is intentionally
out of scope.
Runs as a local stdio server: each user runs it on their own machine with their own Airflow credentials, which keeps Airflow RBAC intact.
Status
Working read and write tools against Airflow 2; not yet published.
Read: get_airflow_version, get_airflow_health, list_pools,
list_dags, get_dag, list_dag_runs, get_dag_run, list_task_instances,
get_task_instance, get_task_logs, list_import_errors.
Write (refused when AIRFLOW_MCP_READ_ONLY=true): trigger_dag_run,
set_dag_paused, clear_task_instances (supports dry_run to preview).
Related MCP server: MCP Server for Apache Airflow
Configuration
All settings come from AIRFLOW_MCP_* environment variables (prefixed to avoid
clashing with Airflow's own env). See .env.example.
Variable | Required | Default | Notes |
| yes | - | e.g. |
| one auth method | - | Basic auth |
| one auth method | - | Bearer token; wins over basic auth |
| no |
|
|
| no |
| |
| no |
| seconds |
Use with Claude
Run it straight from GitHub - no clone needed (uvx fetches and runs it):
{
"mcpServers": {
"airflow": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/ssasuoirafen/airflow-mcp-server",
"airflow-mcp"
],
"env": {
"AIRFLOW_MCP_BASE_URL": "http://localhost:8080",
"AIRFLOW_MCP_USERNAME": "airflow",
"AIRFLOW_MCP_PASSWORD": "airflow"
}
}
}
}Pin a version by appending a ref, e.g. git+https://github.com/ssasuoirafen/airflow-mcp-server@v0.1.0.
For local development, point at a checkout instead:
"command": "uv",
"args": ["run", "--directory", "C:\\path\\to\\airflow-mcp-server", "airflow-mcp"]The package also installs an airflow-mcp-server executable (same thing) for the longer name.
If published to PyPI later, this simplifies to "command": "uvx", "args": ["airflow-mcp"].
Development
uv sync # install deps
uv run pytest # unit tests (mocked, no network)
uv run pytest -m e2e # opt-in live test; needs a .env pointing at a real Airflow 2
uv run airflow-mcp # run the server (expects an MCP client on stdio)Roadmap
Foundation + connectivity (version, health). done
Read tools: DAGs, DAG runs, task instances, logs, import errors, pools. done
Safe writes: trigger DAG, pause/unpause, clear/retry tasks (gated by read-only). done
Packaging metadata and LICENSE. done
Publish to PyPI. pending
License
MIT - see LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ssasuoirafen/airflow-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server