MCP Directory

Apache Airflow MCP Server

Interact with Apache Airflow's REST API through MCP — manage DAGs, runs, tasks, variables, connections, and more.

Unverified
stdio (local)
API key
Python

Add to your client

Copy the config for your MCP client and paste it into its config file.

Install / run
uvx mcp-server-apache-airflow

Paste into ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "apache-airflow-mcp-server": {
      "command": "uvx",
      "args": [
        "mcp-server-apache-airflow"
      ],
      "env": {
        "AIRFLOW_HOST": "https://your-airflow-host",
        "AIRFLOW_USERNAME": "your-username",
        "AIRFLOW_PASSWORD": "your-password"
      }
    }
  }
}

Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.

Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf

Before you start

  • A running Apache Airflow instance with its REST API accessible
  • Airflow credentials: Basic Auth (username/password) or a JWT token
  • uv / uvx to run the server (or install via Smithery)

About Apache Airflow MCP Server

This project implements an MCP server that wraps Apache Airflow's REST API, allowing MCP clients to interact with Airflow in a standardized way. It uses the official Apache Airflow client library (apache-airflow-client). The server covers DAG management, DAG runs, tasks, variables, connections, pools, XComs, datasets, monitoring, DAG stats, config, plugins, providers, event logs, and system endpoints. You can select which API groups to expose with --apis and restrict to read-only operations with --read-only or READ_ONLY=true. Configure it via environment variables: AIRFLOW_HOST (defaults to http://localhost:8080), AIRFLOW_API_VERSION (defaults to v1), and either Basic Auth (AIRFLOW_USERNAME/AIRFLOW_PASSWORD) or JWT (AIRFLOW_JWT_TOKEN) credentials. Installable via uvx, uv, or Smithery.

Tools & capabilities (15)

DAG Management

List DAGs, get DAG details, pause/unpause, update, delete, get DAG source, patch multiple DAGs, and reparse a DAG file.

DAG Runs

List, create, get details, update, delete, and batch-list DAG runs; clear a run, set a run note, and get upstream dataset events.

Tasks

List DAG tasks, get task details, get/list task instances, update task instances, get task instance logs, clear task instances, set task instance state, and list task instance tries.

Variables

List, create, get, update, and delete Airflow variables.

Connections

List, create, get, update, delete, and test Airflow connections.

Pools

List, create, get, update, and delete pools.

XComs

List XCom entries and get a specific XCom entry for a task instance.

Datasets

List/get datasets, get and create dataset events, and manage DAG/dataset queued events.

Monitoring

Get the health status of the Airflow instance.

DAG Stats

Get DAG statistics.

Config

Get Airflow configuration.

Plugins

Get installed Airflow plugins.

Providers

List installed Airflow providers.

Event Logs

List event logs and get a specific event log entry.

System

Get import errors and details, get health status, and get the Airflow version.

When to use it

  • Let an AI assistant inspect and trigger Airflow DAG runs from a chat interface
  • Query DAG, task, and run status for monitoring and troubleshooting pipelines
  • Manage Airflow variables, connections, and pools through natural language
  • Safely expose read-only Airflow observability to LLM clients via READ_ONLY mode

Security notes

Requires credentials for your Airflow instance via environment variables (AIRFLOW_USERNAME/AIRFLOW_PASSWORD for Basic Auth, or AIRFLOW_JWT_TOKEN for JWT). If both JWT token and basic auth credentials are provided, the JWT token takes precedence. For safety, run with READ_ONLY=true (or the --read-only flag) to expose only read operations and exclude any tools that create, update, or delete resources.

Apache Airflow MCP Server FAQ

How do I authenticate against Airflow?

Choose Basic Authentication (set AIRFLOW_USERNAME and AIRFLOW_PASSWORD) or JWT Token Authentication (set AIRFLOW_JWT_TOKEN). If both are provided, the JWT token takes precedence. A JWT token can be obtained from Airflow's /auth/token endpoint.

How do I run the server in read-only mode?

Use the --read-only flag or set READ_ONLY=true. This exposes only read operations (GET requests) like listing and getting details, and excludes any tools that create, update, or delete resources. You can combine it with API group selection.

Can I limit which API groups are exposed?

Yes. Use the --apis flag (repeatable), e.g. --apis dag --apis dagrun. Allowed values include config, connections, dag, dagrun, dagstats, dataset, eventlog, importerror, monitoring, plugin, pool, provider, taskinstance, variable, and xcom. The default exposes all APIs.

What transports are supported?

stdio (default), sse, and http. The transport can be set via the --transport option, and a port can be configured for SSE/HTTP (default 8000).

Alternatives to Apache Airflow MCP Server

Compare all alternatives →

GitHub's official server for repos, issues, PRs, and Actions — local Docker or hosted remote.

Featured
Verified
stdio (local)
API key
Go
7 tools
Updated 7 days agoRepo

Official AWS Labs server that lets agents call any AWS API via the AWS CLI surface.

Verified
stdio (local)
API key
Python
3 tools
Updated 9 days agoRepo

Bulk Kubernetes port forwarding with an MCP server that lets AI assistants forward services, inspect pods, and monitor traffic.

Unverified
stdio (local)
No auth
Go
28 tools
Updated 1 day agoRepo