Airflow Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Airflow Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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](https://www.npmjs.com/package/@us-all/dbt-mcp) alongside.
airflow + meta categoriespnpm add -D @us-all/airflow-mcpAIRFLOW_API_URL=http://airflow.example.com:8080 \
AIRFLOW_USERNAME=admin AIRFLOW_PASSWORD=... \
npx @us-all/airflow-mcpPass 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).
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 |
metasearch-tools — natural-language tool discovery.
| 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" |
| 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 |
/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/v1 were removed; pin to @us-all/[email protected] for Airflow 2.x deployments.For dbt artifact parsing, run-results history, and DQ result tables, install @us-all/dbt-mcp alongside.
pnpm install
pnpm run build # tsc → dist/
pnpm test # vitest
pnpm run smoke # spawns dist/index.js, calls initialize + tools/list (set env first)MIT — see LICENSE.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.