home / mcp / airflow mcp server
Provides an MCP server to interact with Apache Airflow using natural language queries and actions.
Configuration
View docs{
"mcpServers": {
"hipposys-ltd-airflow-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"airflow_api_url",
"-e",
"airflow",
"-e",
"airflow",
"hipposysai/airflow-mcp:latest"
],
"env": {
"airflow_api_url": "http://host.docker.internal:8088/api/v1",
"airflow_password": "airflow",
"airflow_username": "airflow"
}
}
}
}Airflow MCP provides a dedicated server that lets you interact with Apache Airflow using natural language. With it, you can ask questions like which DAGs exist, check the latest run statuses, trigger DAGs, and inspect DAG components, all through a secure, protocol-driven MCP layer.
Connect your MCP-enabled client to the Airflow MCP server and start asking questions about your Airflow environment. You can use Claude Desktop or any MCP-enabled large language model to interact with Airflow through natural language.
Configure your MCP client to point to the Airflow MCP server, then issue natural language queries such as: What DAGs do we have in our Airflow cluster? What is the status of the latest DAG run? Which operators are used by a specific DAG? If a DAG has failed recently, trigger a retry or analyze the failure details.
{
"mcpServers": {
"airflow_mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "airflow_api_url", "-e", "airflow", "-e", "airflow", "hipposysai/airflow-mcp:latest"],
"env": {
"airflow_api_url": "http://host.docker.internal:8088/api/v1",
"airflow_username": "airflow",
"airflow_password": "airflow"
}
}
}
}Prerequisites: you need Docker, access to your Apache Airflow instance, and an MCP-enabled LLM (Claude Desktop, ChatGPT, or similar). If you want to run a prebuilt setup, you can launch a container that connects to your Airflow instance.
Quick start with the prebuilt Docker image (Airflow MCP): set up Claude Desktop to connect to Airflow MCP by adding the MCP config shown below.
{
"mcpServers": {
"airflow_mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "airflow_api_url", "-e", "airflow", "-e", "airflow", "hipposysai/airflow-mcp:latest"],
"env": {
"airflow_api_url": "http://host.docker.internal:8088/api/v1",
"airflow_username": "airflow",
"airflow_password": "airflow"
}
}
}
}1. Clone the project to your workstation.
git clone https://github.com/hipposys-ltd/airflow-mcp2. If you donβt have a running Airflow environment, start one so you can connect to the MCP server.
just airflowThis starts an Airflow instance on port 8088 with the default credentials. Access Airflow at http://localhost:8088/.
3. Configure Claude Desktop to connect to your Airflow MCP instance by editing the MCP config.
{
"mcpServers": {
"airflow_mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "airflow_api_url", "-e", "airflow", "-e", "airflow", "hipposysai/airflow-mcp:latest"],
"env": {
"airflow_api_url": "http://host.docker.internal:8088/api/v1",
"airflow_username": "airflow",
"airflow_password": "airflow"
}
}
}
}Ask Claude: βWhat DAGs do we have in our Airflow cluster?β to verify the connection and data flow.
You can connect the Airflow MCP as a tool in LangChain. Use the provided client to register the MCP as a tool and then call its methods from your LangChain app.
from langchain_mcp_adapters.client import MultiServerMCPClient
mcps = {
"AirflowMCP": {
"url": f"http://mcp_host/sse",
"transport": "sse",
"headers": {"Authorization": f"Bearer {os.environ.get('MCP_TOKEN')}"}
}
}If you are using LangChain, you can obtain tools from the MCP client and call Airflow-related capabilities such as querying DAGs, checking statuses, and triggering runs.