@mhdd_24/airflow-mcp
Click on "Deploy 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., "@@mhdd_24/airflow-mcpwhy did my etl_pipeline DAG fail yesterday?"
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.
@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 toolsRelated 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-mcpOption B — npx
npx @mhdd_24/airflow-mcpOption 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.jsConfigure 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 URL |
| User |
| Password |
Tools
Tool | Description |
| Show dags configuration / health. |
| List dags resources/items. |
| Get a dags resource by id/name. |
| Diagnostics / checklist for dags. |
License
ISC
Available Tools
4 toolsairflow_diagnoseC
Diagnostics / checklist for dags.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | Context or resource |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource id or name |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results | |
| query | No | Filter/query |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v1.0.0- First observed
airflow_diagnose - First observed
airflow_get - First observed
airflow_list - First observed
airflow_status
TDQS
Scored across 4 tools
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.
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.
Four tools is a tight, focused set for an Airflow-oriented server. Each tool addresses a distinct need and none feel redundant or superfluous.
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
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.
- SpanlyOAuthcom.spanly
MCP observability. Query live traffic, errors, duration, and alerts from your AI agent.
MCP-Native LLM Orchestration Agent
Related MCP Servers
- AlicenseBqualityAmaintenanceMonitor 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-5dfdfb25453MIT
- AlicenseNot gradedqualityDmaintenanceEnables users to interact with Apache Airflow orchestration platform through natural language to query pipeline statuses, troubleshoot DAG failures, trigger DAGs, and analyze configurations.10MIT
- AlicenseNot gradedqualityDmaintenanceEnables natural language interaction with Apache Airflow for querying DAGs, monitoring execution, and troubleshooting failures.1MIT
- AlicenseCqualityDmaintenanceEnables natural language management of Apache Airflow workflows, including DAG monitoring, task control, and configuration, via the Model Context Protocol.54MIT