Skip to main content
Glama
Mhdd-24

@mhdd_24/airflow-mcp

by Mhdd-24

@mhdd_24/airflow-mcp

MCP server for DAGs, runs, logs and task failures.

Same architecture as @mhdd_24/sublime-mcp.

Full documentation: docs/WIKI.md


How it works (30 seconds)

You (chat) → MCP client → airflow-mcp → Airflow APIs / CLIs / local tools

Related MCP server: Airflow MCP

Prerequisites

Requirement

Notes

Node.js 18+

ESM TypeScript MCP server

Credentials / CLIs

See environment variables below


Install

Option A — npm (after publish)

npm install -g @mhdd_24/airflow-mcp

Option B — npx

npx @mhdd_24/airflow-mcp

Option C — clone and build

git clone https://github.com/Mhdd-24/Airflow-MCP.git
cd Airflow-MCP
npm install
npm run build
node dist/index.js

Configure Cursor

Edit ~/.cursor/mcp.json:

{
  "mcpServers": {
    "airflow": {
      "command": "npx",
      "args": ["-y", "@mhdd_24/airflow-mcp"],
      "env": {
        "AIRFLOW_BASE_URL": "...",
        "AIRFLOW_USERNAME": "...",
        "AIRFLOW_PASSWORD": "..."
      }
    }
  }
}

Local development:

{
  "command": "node",
  "args": ["/absolute/path/to/Airflow-MCP/dist/index.js"]
}

Environment variables

Variable

Description

AIRFLOW_BASE_URL

Airflow URL

AIRFLOW_USERNAME

User

AIRFLOW_PASSWORD

Password


Tools

Tool

Description

airflow_status

Show dags configuration / health.

airflow_list

List dags resources/items.

airflow_get

Get a dags resource by id/name.

airflow_diagnose

Diagnostics / checklist for dags.


License

ISC

Available Tools

4 tools
airflow_diagnoseC

Diagnostics / checklist for dags.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoContext or resource

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Diagnostics / checklist for dags,' which neither confirms whether this is a read-only operation, nor describes what outputs, errors, or side effects to expect. The behavioral surface is essentially undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short, but this reads as under-specification rather than effective conciseness. It is a fragment with no sentence structure and omits essential details such as what the diagnostics cover, how context is used, and what the output looks like.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, with one optional parameter and no output schema, but the description still leaves major gaps: it does not explain what the diagnostic checklist evaluates, what a successful result would contain, or how this relates to the sibling status/list/get tools. This is insufficient for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% because the parameter 'context' has the description 'Context or resource.' The tool description adds no parameter-level meaning, but the schema already documents the only parameter, so this is an acceptable baseline despite the descriptor being vague.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Diagnostics / checklist for dags' names the resource (DAGs) and a general intention, which distinguishes it somewhat from the siblings airflow_status, airflow_list, and airflow_get. However, it is a noun phrase rather than a verb-led statement and does not specify what kind of diagnostics or checklist is provided, leaving the actual function ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus airflow_status, airflow_list, or airflow_get. No conditions, exclusions, or alternative-selection hints are given, so the agent must infer the tool's role from its name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

airflow_getA

Get a dags resource by id/name.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesResource id or name

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. The verb 'Get' implies a read-only operation, but the description doesn't explicitly disclose other behavioral traits like authentication needs, error behavior, or side effects. It's minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no filler. The core purpose and identifier are front-loaded, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter with one parameter and no output schema, the description adequately explains the purpose and the parameter. It implies the return value (the resource) and does not need to elaborate on complex behavior. Minor gaps like error handling are not critical here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter description already says 'Resource id or name'. The description's phrase 'by id/name' adds no meaning beyond the schema, meeting the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Get), the resource (dags resource), and the identifying mechanism (by id/name). It is specific and distinguishable from siblings like airflow_list (listing) and airflow_status (status checking).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied: use this when you need a specific DAG by id/name. However, the description does not explicitly reference alternatives or exclusions, such as directing users to airflow_list for listing all DAGs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

airflow_listC

List dags resources/items.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results
queryNoFilter/query

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only implies a read-only 'list' action, but does not mention how results are returned, whether there are any side effects (e.g., visibility of all DAGs), authentication requirements, or limitations such as max results. This is insufficient for an agent to know what to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded, but the phrase 'dags resources/items' is grammatically clumsy and unclear. It could be more precise without adding length. It is not a tautology, but it also not a model of clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 parameters, no annotations, and no output schema, this one-line description is incomplete. It does not specify what the list returns, the meaning of 'resources/items,' or how the limit/query parameters affect results. An agent would need to guess at behavior, even with the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both limit and query. The description adds no extra parameter meaning beyond the schema; it doesn't reference 'limit' or 'query' at all. Baseline 3 is appropriate because the schema already documents the parameters adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'List' to indicate enumeration, but the resource phrase 'dags resources/items' is awkward and ambiguous – it does not clearly specify what exactly is listed (DAGs? DAG items?). It broadly distinguishes this as a list operation from the sibling get/status/diagnose tools, but the vagueness prevents a 4.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus airflow_status, airflow_get, or airflow_diagnose. There is no mention of filters, pagination, or conditions under which an agent should prefer this over alternatives. The agent must infer from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

airflow_statusB

Show dags configuration / health.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read operation via 'Show' but does not state whether it is read-only, what output format to expect, or any side effects. This minimal disclosure is insufficient for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. It is front-loaded with the verb and resource, though it could arguably include more detail without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and annotations, the description should explain what the tool returns and how it fits with sibling tools. It does neither, leaving the agent uncertain about the exact output and when to prefer this tool. The vague '/health' phrasing adds to the incompleteness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description adds no parameter-specific meaning, but none is needed since the schema is empty and there is nothing to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Show') and resource ('dags configuration / health'), making the basic purpose clear. However, it does not differentiate itself from sibling tools like airflow_get or airflow_diagnose, and the slash leaves ambiguity about whether it shows both configuration and health or a combined status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool relative to alternatives. There is no mention of scenarios that favor airflow_status over airflow_list, airflow_get, or airflow_diagnose, leaving the agent to guess.

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.

  1. 4 tool updatesv1.0.0
    • First observedairflow_diagnose
    • First observedairflow_get
    • First observedairflow_list
    • First observedairflow_status

TDQS

B3/5.0

Scored across 4 tools

Disambiguation3/5

Most tools are clearly distinct (list vs get vs status), but 'airflow_status' and 'airflow_diagnose' overlap in intent—both appear to inspect health or state, making it ambiguous which to choose for a given diagnostic question.

Naming Consistency4/5

All tools share the 'airflow_' prefix with snake_case, but 'airflow_status' uses a noun while the others use verbs (list, get, diagnose), creating a minor inconsistency in the naming pattern.

Tool Count5/5

Four tools is a tight, focused set for an Airflow-oriented server. Each tool addresses a distinct need and none feel redundant or superfluous.

Completeness3/5

The set covers read-only inspection and diagnostics well, but lacks common Airflow DAG operations like pause/unpause, trigger, or delete. If the intended scope is monitoring only, this is fine; for management tasks, there are notable gaps.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Monitor and manage Apache Airflow clusters through natural language queries via MCP tools: DAG inspection, task monitoring, health checks, and cluster analytics without API complexity. * Guide: https://call518.medium.com/mcp-airflow-api-a-model-context-protocol-mcp-server-for-apache-airflow-5dfdfb2
    54
    53
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables users to interact with Apache Airflow orchestration platform through natural language to query pipeline statuses, troubleshoot DAG failures, trigger DAGs, and analyze configurations.
    10
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language interaction with Apache Airflow for querying DAGs, monitoring execution, and troubleshooting failures.
    1
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Enables natural language management of Apache Airflow workflows, including DAG monitoring, task control, and configuration, via the Model Context Protocol.
    54
    MIT