M
Mcp Airflow
antonio-mello-ai
0 Views
0 Installs
🐍 🏠 - Manage Apache Airflow through its REST API — list DAGs, inspect DAG runs and task instances, trigger runs, and check failed-DAG and scheduler/metadatabase health. 7 tools, built with FastMCP. Install: uvx mcp-airflow.
Quick Install
One-Click IDE Configuration
claude_desktop_config.json
{
"mcpServers": {
"antonio-mello-ai-mcp-airflow": {
"command": "npx",
"args": [
"-y",
"antonio-mello-ai-mcp-airflow"
]
}
}
}Or
Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.
Documentation Overview
mcp-airflow
MCP server that exposes Apache Airflow REST API operations as tools. Built with FastMCP.
Install
# 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
Configuration
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 |
Authentication
The client picks the auth scheme automatically based on your Airflow version:
- Airflow 3.x (JWT) — a JWT token is obtained from the
/auth/tokenendpoint usingAIRFLOW_USERNAME/AIRFLOW_PASSWORD, sent as aBearertoken, and refreshed automatically. PointAIRFLOW_BASE_URLat/api/v2. - Airflow 2.x (basic auth) — if the JWT flow is unavailable, the client falls
back to HTTP basic auth with the same username/password. Point
AIRFLOW_BASE_URLat/api/v1.
Usage
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"
}
}
}
}
Tools
| 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 |
Tests
pytest
License
MIT