airflow-mcp-server
This server provides tools to interact with Airflow 3.x via its REST API, enabling both read access and write-gated actions for DAG and task management.
Core Tools
airflow-list-dags: Browse active DAGs with optional tag filtering, DAG ID substring search, and paused DAG exclusion.airflow-list-runs: Retrieve recent runs for a specific DAG, filterable by state (success, failed, running, etc.), ordered newest first.airflow-get-task-instances: Inspect all task instances within a DAG run, including state, try number, and duration.airflow-get-task-logs: Tail the last N kilobytes of a task instance's log for a specific try number — useful for debugging failures.dag-health-rollup: Aggregated health summary for a DAG including success rate, run count breakdown, average duration, last failed run, and failing task instances.airflow-trigger-dag(requiresAIRFLOW_ALLOW_WRITE=true): Trigger a new DAG run with optional conf payload, note, and logical date.airflow-clear-task(requiresAIRFLOW_ALLOW_WRITE=true): Clear specific task instances to force re-execution, with optional upstream/downstream inclusion.search-tools: Discover available tools via natural language queries.
Pre-built Prompts / Workflows
dag-failure-triage: Guided workflow to diagnose DAG failures — pulls runs, isolates the failure, dumps logs, and proposes remediation.dag-schedule-audit: Sweeps all DAGs to identify those with low success rates or stuck runs.
Auth & Transport
Authenticates via JWT (SimpleAuthManager) using
AIRFLOW_USERNAMEandAIRFLOW_PASSWORD; tokens are auto-refreshed.Supports stdio (default) or Streamable HTTP transport (
MCP_TRANSPORT=http).Compatible with Claude Desktop, Cursor, and any MCP client.
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-serverlist all active DAGs"
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.
@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+metacategories2 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-mcpRelated MCP server: Apache Airflow MCP Server
Run
AIRFLOW_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).
Tools
airflow (6 + 1 aggregation)
Tool | Description |
| List active DAGs with tag/search filters |
| Recent runs of one DAG (state filter, ordered newest first) |
| Task instances for a specific DAG run |
| Tail (last N kB) of one task instance log |
| Trigger a new run (write-gated) |
| Clear specific task instances → re-run (write-gated) |
| Aggregated DAG health: success rate + avg duration + last failed run + failing tasks |
meta
search-tools — natural-language tool discovery.
Prompts
Prompt | Use when |
| "Why did DAG X fail?" — pulls runs, isolates failure, dumps logs, proposes remediation |
| "Sweep all DAGs for low success rate and stuck runs" |
Environment variables
Env | Required | Notes |
| yes | Airflow host base, e.g. |
| yes | Username for JWT minting via SimpleAuthManager |
| yes | Password for JWT minting (secret) |
| no |
|
| 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.
Available Tools
8 toolsairflow-clear-taskA
Clear specific task instances in an Airflow DAG run (re-run them); supports include_upstream / include_downstream. Write-gated by AIRFLOW_ALLOW_WRITE.
| Name | Required | Description | Default |
|---|---|---|---|
| dagId | Yes | ||
| dagRunId | Yes | ||
| taskIds | Yes | List of task_ids to clear (and re-run) | |
| includeDownstream | No | ||
| includeUpstream | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It mentions that tasks are cleared and re-run, and that writes are gated by an environment variable. However, it does not disclose effects on downstream dependencies, reversibility, or state changes beyond the high-level action. The transparency is adequate but not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that conveys the core action, key features, and a usage constraint. No unnecessary words or redundancy. Efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 5 parameters and no output schema or annotations, the description covers the basic purpose and two important flags. However, it lacks details on return values, prerequisites (e.g., DAG run state), and deeper behavioral context. It is minimally complete but has notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (20%), so the description must clarify parameters. The description explains the boolean parameters (include_upstream/downstream) but does not elaborate on dagId or dagRunId beyond their names. The taskIds parameter already has a schema description. Overall, the description adds some value but leaves some parameter meanings implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (clear/re-run), the resource (specific task instances in an Airflow DAG run), and the supported flags (include_upstream/downstream). It effectively distinguishes this tool from siblings like airflow-get-task-instances (read-only) and airflow-trigger-dag (new run).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for re-running tasks but does not explicitly state when to use this tool versus alternatives like triggering a new run or reading task instances. The write gate is mentioned, which provides a usage constraint, but no exclusions or comparative guidance are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airflow-get-task-instancesB
List task instances for a specific Airflow DAG run with state, try_number, duration
| Name | Required | Description | Default |
|---|---|---|---|
| dagId | Yes | ||
| dagRunId | Yes | dag_run_id (e.g. 'scheduled__2026-05-06T00:00:00+00:00') | |
| extractFields | No | Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'list', implying a read operation, but does not disclose any behavioral traits such as pagination, permissions, limits, or side effects. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 14 words, front-loaded with action and resource. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with no output schema, the description adequately states the core function but lacks details on parameter usage and return format. Could be more complete with examples or constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain any input parameters; it only mentions output fields. Of the three parameters (dagId, dagRunId, extractFields), only dagRunId and extractFields have schema descriptions, but dagId has none. The description adds no additional meaning to the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists task instances for a specific Airflow DAG run, specifying returned fields (state, try_number, duration). This distinguishes it from sibling tools like airflow-list-runs (which lists runs) and airflow-get-task-logs (which gets logs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to list task instances) but provides no explicit guidance on when not to use it or alternatives. The sibling list is given but the description doesn't help choose between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airflow-get-task-logsB
Fetch the tail (last N kB) of an Airflow task instance log for a specific try_number
| Name | Required | Description | Default |
|---|---|---|---|
| dagId | Yes | ||
| dagRunId | Yes | ||
| taskId | Yes | ||
| tryNumber | No | ||
| tailKb | No | Return only the last N kilobytes of log | |
| extractFields | No | Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It mentions 'tail (last N kB)' implying it returns a truncated portion of the log, but it does not describe permissions, rate limits, response format, or what happens if the log is smaller than tailKb. This is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and resource. It contains no extraneous information and is easily parseable by an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, no output schema, and no annotations, the description is insufficiently complete. It does not explain return values (e.g., log content format), error conditions, or behavior when parameters are missing or invalid. The agent would need additional context to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low (33%, only tailKb and extractFields are described). The description adds value by explaining 'tail' and mentioning 'try_number', which relates to the tryNumber parameter. However, it does not elaborate on dagId, dagRunId, or taskId beyond their names, leaving the agent to infer their purposes from context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch'), the resource ('tail of Airflow task instance log'), and the specific context ('for a specific try_number'). It effectively distinguishes itself from sibling tools like airflow-clear-task or airflow-list-dags, which handle different aspects of Airflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, such as needing a successful task run or that logs are only available after execution. The description lacks context for appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airflow-list-dagsB
List Airflow DAGs (active by default) with optional tag filter and dag_id substring search
| Name | Required | Description | Default |
|---|---|---|---|
| onlyActive | No | Filter out paused DAGs (Airflow 3.x: is_paused=false) | |
| tag | No | Filter to DAGs that carry this tag | |
| search | No | Substring match on dag_id (case-insensitive) | |
| limit | No | ||
| extractFields | No | Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context not in the schema, such as 'active by default', which is useful. However, it does not disclose other important traits like rate limits, return format, or read-only nature, which are critical given no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the main purpose and key features. Every word serves a clear purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks completeness for a list tool with 5 parameters and no output schema. It does not mention response structure, pagination limits, or how results are ordered, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so baseline is 3. The description paraphrases parameter capabilities (optional tag filter, dag_id search) without adding meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List), resource (Airflow DAGs), and distinguishes from siblings by mentioning default active filtering, tag filter, and dag_id substring search. It is specific and leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While the description implies use for listing DAGs, it does not mention when to use it over sibling tools like 'dag-health-rollup' or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airflow-list-runsA
List recent runs of one Airflow DAG, optionally filtered by state, ordered newest first
| Name | Required | Description | Default |
|---|---|---|---|
| dagId | Yes | Airflow DAG id | |
| state | No | Filter by state (success | running | failed | queued | up_for_retry | ...) | |
| limit | No | ||
| extractFields | No | Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that it lists runs, filters by state, and orders newest first, but lacks details on auth needs, rate limits, or behavior when no runs exist. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that conveys key information efficiently with no wasted words. Front-loaded with action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with 4 parameters and no output schema, the description covers basic functionality. Lacks details on return format, pagination, and error scenarios. Could be more complete but is sufficient for a straightforward list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so baseline is 3. Description adds ordering context ('ordered newest first') but otherwise does not elaborate beyond schema. The 'limit' parameter lacks full description in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'list', resource 'runs of one Airflow DAG', and specifies optional filter by state and ordering. Differentiates from siblings by specifying one DAG and ordering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for listing DAG runs but does not provide explicit guidance on when to use this tool vs siblings like airflow-get-task-instances or search-tools. No exclusions or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airflow-trigger-dagA
Trigger a new Airflow DAG run with optional conf payload and note. Write-gated by AIRFLOW_ALLOW_WRITE.
| Name | Required | Description | Default |
|---|---|---|---|
| dagId | Yes | ||
| dagRunId | No | Optional run id; auto-generated if omitted | |
| conf | No | DAG run conf payload | |
| note | No | Optional note attached to the run | |
| logicalDate | No | Optional logical_date (ISO 8601) — Airflow 3.x replacement for execution_date |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the write constraint and optional parameters, but does not mention potential side effects, error behavior, or whether the operation is synchronous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the purpose and add a constraint. No unnecessary words, efficiently communicates key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing critical details: no output schema or description of return value (run ID?), no mention of asynchronous behavior, error conditions, or required permissions beyond write-gate. For a trigger action, agents need to know what to expect after invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so baseline is 3. The description adds 'write-gated' context but largely repeats schema info (optional conf and note). Does not add deeper semantics for nested 'conf' object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (trigger) and resource (new Airflow DAG run), and mentions optional conf and note. It distinguishes from siblings, as no other sibling tool triggers a DAG run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes write-gating via AIRFLOW_ALLOW_WRITE, implying usage context, but does not explicitly state when to use this tool versus alternatives (e.g., when to trigger vs clear tasks). No direct comparison with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dag-health-rollupA
Aggregated DAG health: success-rate over the last N runs + count breakdown (succeeded/failed/queued) + average duration + last-failed-run id + (optional) failing task instances. Replaces the airflow-list-runs + airflow-get-task-instances combo for 'is this DAG healthy right now?'.
| Name | Required | Description | Default |
|---|---|---|---|
| dagId | Yes | Airflow DAG id | |
| recentRuns | No | ||
| includeFailingTasks | No | If true, fetch task instances for the most recent failed run | |
| extractFields | No | Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lists what the tool returns (success-rate, count breakdown, average duration, last-failed-run id, optional failing tasks). It implies a read-only operation but does not explicitly state safety or discuss side effects, auth needs, or rate limits. With no annotations, the description carries the full burden and covers main behavior adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence. It front-loads the key purpose ('Aggregated DAG health') and lists outputs efficiently. Slight improvement could be splitting into two sentences, but overall concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 4 parameters with 75% coverage, the description provides a good high-level overview of output. It does not specify exact field names or types, but the context of replacing a combo tool makes it fairly complete for the intended use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75% (recentRuns lacks a description). The description adds no further parameter details beyond what the schema provides. Baseline 3 is appropriate given high schema coverage but no extra param guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides aggregated DAG health metrics (success-rate, counts, duration, last failed run, optional failing tasks) and explicitly distinguishes it from siblings by stating it replaces the airflow-list-runs + airflow-get-task-instances combo for a health check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use: for a quick health summary ('is this DAG healthy right now?') and that it replaces a two-tool combo. It implies alternatives (the individual tools for detailed info) but does not explicitly state when not to use it. Clear context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search-toolsA
Discover available Airflow MCP tools by natural language query.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language query. Discover available Airflow MCP tools — call this first to find the right tool. | |
| category | No | Restrict search to a specific category | |
| limit | No | Max results (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the tool's purpose as a discovery tool but does not mention read-only behavior, rate limits, or side effects. For a search tool, this is adequate but leaves some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It conveys the essential purpose and usage guidance efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (3 parameters, all documented, no output schema), the description covers the core purpose and entry-point guidance. Missing details about output format, but the agent can infer a list of tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add new semantic info beyond the schema; it repeats 'call this first' which is already in the query parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Discover' and the resource 'available Airflow MCP tools' via natural language query. This distinguishes it from sibling tools which are specific Airflow operations (e.g., clear task, trigger DAG).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises 'call this first to find the right tool,' providing clear when-to-use guidance. It lacks explicit exclusions or alternatives but strongly implies this is the entry point.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
8 tool updates
v1.0.4- Added
airflow-clear-task - Added
airflow-get-task-instances - Added
airflow-get-task-logs - Added
airflow-list-dags - Added
airflow-list-runs - Added
airflow-trigger-dag - Added
dag-health-rollup - Added
search-tools
8 tool updates
v1.0.2- Removed
airflow-clear-task - Removed
airflow-get-task-instances - Removed
airflow-get-task-logs - Removed
airflow-list-dags - Removed
airflow-list-runs - Removed
airflow-trigger-dag - Removed
dag-health-rollup - Removed
search-tools
5 tool updates
v1.0.0- Changed
airflow-get-task-instances1 field changed- added
Input schema / properties / extractFieldsAdded value: +{ + "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.", + "type": "string" +}
- Changed
airflow-get-task-logs1 field changed- added
Input schema / properties / extractFieldsAdded value: +{ + "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.", + "type": "string" +}
- Changed
airflow-list-dags1 field changed- added
Input schema / properties / extractFieldsAdded value: +{ + "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.", + "type": "string" +}
- Changed
airflow-list-runs1 field changed- added
Input schema / properties / extractFieldsAdded value: +{ + "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.", + "type": "string" +}
- Changed
dag-health-rollup1 field changed- added
Input schema / properties / extractFieldsAdded value: +{ + "description": "Comma-separated dotted paths to project from response (e.g. 'id,name,owner.name,columns.*.name'). Use `*` as wildcard for arrays/objects. Wrap field names with dots in backticks. Reduces response tokens dramatically on large entities.", + "type": "string" +}
3 tool updates
v0.2.0- Changed
airflow-list-dags1 field changed- added
Input schema / properties / onlyActive / descriptionAdded value: +"Filter out paused DAGs (Airflow 3.x: is_paused=false)"
- Changed
airflow-list-runs1 field changed- changed
Input schema / properties / state / descriptionPrevious value: -"Filter by state (success | running | failed | queued | ...)"New value: +"Filter by state (success | running | failed | queued | up_for_retry | ...)"
- Changed
airflow-trigger-dag1 field changed- added
Input schema / properties / logicalDateAdded value: +{ + "description": "Optional logical_date (ISO 8601) — Airflow 3.x replacement for execution_date", + "type": "string" +}
8 tool updates
v0.1.0- First observed
airflow-clear-task - First observed
airflow-get-task-instances - First observed
airflow-get-task-logs - First observed
airflow-list-dags - First observed
airflow-list-runs - First observed
airflow-trigger-dag - First observed
dag-health-rollup - First observed
search-tools
TDQS
Each tool targets a distinct operation: listing DAGs, runs, task instances, logs, clearing tasks, triggering, health rollup, and tool search. No two tools have overlapping functionality.
Most tools follow 'airflow-verb-noun' pattern, but 'dag-health-rollup' and 'search-tools' lack the 'airflow-' prefix, creating inconsistency in the naming convention.
With 8 tools, the server covers essential Airflow operations (monitoring, triggering, clearing, health) without being bloated or too sparse.
Covers core lifecycle: list, trigger, monitor, clear tasks, logs, and health. Missing detailed DAG info (e.g., schedule, catchup) but sufficient for typical operational use cases.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- mcpOAuthcom.airtable
Official Airtable MCP server — database and operations layer for agents.
Streamable HTTP MCP server exposing planner flows, tasks, and squads.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
111
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables inspection and management of Apache Airflow DAGs, runs, and logs across multiple instances. It provides tools for monitoring workflows and performing gated write operations like triggering DAGs or clearing task instances.162Apache 2.0
- AlicenseNot gradedqualityNot gradedmaintenanceAn MCP server that wraps the Apache Airflow REST API, enabling clients to manage DAGs, monitor task instances, and handle workflows through a standardized interface. It provides comprehensive access to Airflow features including DAG runs, variables, connections, and XComs.-
- AlicenseAqualityBmaintenanceMCP server exposing Apache Airflow REST API operations as tools — list DAGs, inspect runs and task instances, trigger DAG runs, and check failed DAGs and scheduler health72MIT
- FlicenseNot gradedqualityDmaintenanceEnables DAG management, monitoring, debugging, and connection testing for Apache Airflow through the MCP protocol.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/us-all/airflow-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server