Are you the author? Sign in to claim
MCP server for airflow
MCP server that exposes Apache Airflow REST API operations as tools. Built with FastMCP.
# Run directly with uvx (no install needed)
uvx mcp-airflow
# Or install with pip
pip install mcp-airflow
For development:
uv pip install -e ".[dev]"
# or with dependency groups
uv sync --group dev
Set these environment variables (or create a .env file from .env.example):
| Variable | Description | Example |
|---|---|---|
AIRFLOW_BASE_URL | Airflow REST API base URL. Use /api/v2 for Airflow 3.x or /api/v1 for 2.x | http://100.x.x.x:8080/api/v2 |
AIRFLOW_USERNAME | Auth username (JWT on 3.x, basic auth on 2.x) | admin |
AIRFLOW_PASSWORD | Auth password |
The client picks the auth scheme automatically based on your Airflow version:
/auth/token endpoint
using AIRFLOW_USERNAME/AIRFLOW_PASSWORD, sent as a Bearer token, and
refreshed automatically. Point AIRFLOW_BASE_URL at /api/v2.AIRFLOW_BASE_URL
at /api/v1.Run the server:
mcp-airflow
Or add to your MCP client config (e.g., Claude Desktop):
{
"mcpServers": {
"airflow": {
"command": "mcp-airflow",
"env": {
"AIRFLOW_BASE_URL": "http://100.x.x.x:8080/api/v2",
"AIRFLOW_USERNAME": "admin",
"AIRFLOW_PASSWORD": "your-password"
}
}
}
}
| Tool | Description |
|---|---|
list_dags | List all DAGs with paused/active status |
get_dag_runs_today | Get all DAG runs from today with status |
get_dag_run_status | Get the latest run status for a specific DAG |
trigger_dag_run | Trigger a manual DAG run |
get_task_instances | Get task instances for a specific DAG run |
check_failed_dags | Check for failed DAGs in the last 24 hours |
check_scheduler_health | Check scheduler heartbeat and metadatabase status |
pytest
MIT
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases
Official GitHub integration for repos, issues, PRs, and CI/CD workflows