io.github.us-all/airflow
Airflow MCP — list DAGs/runs/task instances, tail logs, trigger and clear (write-gated)
التثبيت
أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: .cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).
@us-all/airflow-mcpclaude mcp add airflow -e 'AIRFLOW_API_URL=<AIRFLOW_API_URL>' -e 'AIRFLOW_USERNAME=<AIRFLOW_USERNAME>' -e 'AIRFLOW_PASSWORD=<your airflow_password>' -e 'AIRFLOW_ALLOW_WRITE=false' -e 'AIRFLOW_TOOLS=<AIRFLOW_TOOLS>' -e 'AIRFLOW_DISABLE=<AIRFLOW_DISABLE>' -- npx -y @us-all/airflow-mcp@1.4.1
{
"mcpServers": {
"airflow": {
"command": "npx",
"args": [
"-y",
"@us-all/airflow-mcp@1.4.1"
],
"env": {
"AIRFLOW_API_URL": "<AIRFLOW_API_URL>",
"AIRFLOW_USERNAME": "<AIRFLOW_USERNAME>",
"AIRFLOW_PASSWORD": "<your airflow_password>",
"AIRFLOW_ALLOW_WRITE": "false",
"AIRFLOW_TOOLS": "<AIRFLOW_TOOLS>",
"AIRFLOW_DISABLE": "<AIRFLOW_DISABLE>"
}
}
}
}
متغيرات البيئة
AIRFLOW_API_URLإلزامي Airflow host base, e.g. 'http://airflow.example.com:8080'. Server prepends /api/v2 internally; trailing /api/v1 or /api/v2 is stripped if supplied.AIRFLOW_USERNAMEإلزامي Airflow username (used to mint a JWT via SimpleAuthManager /auth/token).AIRFLOW_PASSWORDإلزامي سري Airflow password (used to mint a JWT via SimpleAuthManager /auth/token).AIRFLOW_ALLOW_WRITESet to 'true' to enable trigger-dag and clear-task tools. Default read-only.AIRFLOW_TOOLSComma-separated category allowlist (airflow,meta).AIRFLOW_DISABLEComma-separated category disablelist.
التوثيق
مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.
المحتويات
@us-all/airflow-mcp
Airflow MCP server — read DAGs, runs, task instances, log tails; trigger and clear (write-gated). Built on
@us-all/mcp-toolkit.
A focused MCP for the Airflow 3.x REST API (/api/v2). Read by default; airflow-trigger-dag and airflow-clear-task are gated behind AIRFLOW_ALLOW_WRITE=true. Auth is JWT via SimpleAuthManager — supply AIRFLOW_USERNAME + AIRFLOW_PASSWORD and the server mints/refreshes the token transparently.
For deeper dbt integration (manifest parsing, run-results history, source freshness, per-column test coverage, lineage walks, custom DQ result tables), install the companion @us-all/dbt-mcp alongside.
- 7 tools in
airflow+metacategories - 2 MCP Prompts for DAG triage workflows
- 1 aggregation tool that replaces the list-runs → get-task-instances combo
Install
pnpm add -D @us-all/airflow-mcp
Run
AIRFLOW_API_URL=http://airflow.example.com:8080 \
AIRFLOW_USERNAME=admin AIRFLOW_PASSWORD=... \
npx @us-all/airflow-mcp
Pass the host base only — the server prepends /api/v2 internally. A trailing /api/v1 or /api/v2 is stripped if supplied. JWT tokens are cached for the lifetime of the session and refreshed 1 minute before they expire.
The server speaks MCP stdio; wire it into Claude Desktop / Cursor / any MCP client. Set MCP_TRANSPORT=http to opt in to Streamable HTTP transport (Bearer auth, /health endpoint).
Tools
airflow (6 + 1 aggregation)
| Tool | Description |
|---|---|
airflow-list-dags | List active DAGs with tag/search filters |
airflow-list-runs | Recent runs of one DAG (state filter, ordered newest first) |
airflow-get-task-instances | Task instances for a specific DAG run |
airflow-get-task-logs | Tail (last N kB) of one task instance log |
airflow-trigger-dag | Trigger a new run (write-gated) |
airflow-clear-task | Clear specific task instances → re-run (write-gated) |
dag-health-rollup | Aggregated DAG health: success rate + avg duration + last failed run + failing tasks |
meta
search-tools — natural-language tool discovery.
Prompts
| Prompt | Use when |
|---|---|
dag-failure-triage | "Why did DAG X fail?" — pulls runs, isolates failure, dumps logs, proposes remediation |
dag-schedule-audit | "Sweep all DAGs for low success rate and stuck runs" |
Environment variables
| Env | Required | Notes |
|---|---|---|
AIRFLOW_API_URL | yes | Airflow host base, e.g. http://airflow.example.com:8080. Trailing /api/v1 or /api/v2 is stripped if present |
AIRFLOW_USERNAME | yes | Username for JWT minting via SimpleAuthManager /auth/token |
AIRFLOW_PASSWORD | yes | Password for JWT minting (secret) |
AIRFLOW_ALLOW_WRITE | no | true enables airflow-trigger-dag / airflow-clear-task |
AIRFLOW_TOOLS / AIRFLOW_DISABLE | no | Category toggles |
Tested-against schemas
- Airflow 3.0–3.2
/api/v2(verified against 3.2.1, current Airflow release as of 2026-05). Airflow 2.x is not supported by v0.2+ because basic auth +/api/v1were removed; pin to@us-all/airflow-mcp@0.1.0for Airflow 2.x deployments.
Companion server
For dbt artifact parsing, run-results history, and DQ result tables, install @us-all/dbt-mcp alongside.
Build
pnpm install
pnpm run build # tsc → dist/
pnpm test # vitest
pnpm run smoke # spawns dist/index.js, calls initialize + tools/list (set env first)
License
MIT — see LICENSE.
الأسئلة الشائعة
ما هو io.github.us-all/airflow؟
Airflow MCP — list DAGs/runs/task instances, tail logs, trigger and clear (write-gated)
كيف أثبّت io.github.us-all/airflow؟
يعمل على جهازك. في Claude Code: claude mcp add airflow -e 'AIRFLOW_API_URL=<AIRFLOW_API_URL>' -e 'AIRFLOW_USERNAME=<AIRFLOW_USERNAME>' -e 'AIRFLOW_PASSWORD=<your airflow_password>' -e 'AIRFLOW_ALLOW_WRITE=false' -e 'AIRFLOW_TOOLS=<AIRFLOW_TOOLS>' -e 'AIRFLOW_DISABLE=<AIRFLOW_DISABLE>' -- npx -y @us-all/airflow-mcp@1.4.1. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.
هل يحتاج io.github.us-all/airflow إلى مفتاح API؟
نعم. يتطلب AIRFLOW_API_URL, AIRFLOW_USERNAME, AIRFLOW_PASSWORD، وتضبطها في إعداداته.
هل io.github.us-all/airflow مفتوح المصدر؟
نعم. شيفرته متاحة على GitHub بترخيص MIT.
من يصون io.github.us-all/airflow؟
ينشره us-all. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.
من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.