airflow-mcp-server: An MCP Server for controlling Airflow
Find on Glama
Overview
A Model Context Protocol server for controlling Airflow via Airflow APIs.
Demo Video
https://github.com/user-attachments/assets/f3e60fff-8680-4dd9-b08e-fa7db655a705
Setup
Usage with Claude Desktop
{
"mcpServers": {
"airflow-mcp-server": {
"command": "uvx",
"args": [
"airflow-mcp-server"
],
"env": {
"AIRFLOW_BASE_URL": "http://<host:port>/api/v1",
// Either use AUTH_TOKEN for basic auth
"AUTH_TOKEN": "<base64_encoded_username_password>",
// Or use COOKIE for cookie-based auth
"COOKIE": "<session_cookie>"
}
}
}
}
Operation Modes
The server supports two operation modes:
- Safe Mode (
--safe): Only allows read-only operations (GET requests). This is useful when you want to prevent any modifications to your Airflow instance. - Unsafe Mode (
--unsafe): Allows all operations including modifications. This is the default mode.
To start in safe mode:
airflow-mcp-server --safe
To explicitly start in unsafe mode (though this is default):
airflow-mcp-server --unsafe
Considerations
The MCP Server expects environment variables to be set:
AIRFLOW_BASE_URL: The base URL of the Airflow APIAUTH_TOKEN: The token to use for basic auth (This should be base64 encoded username:password) (Optional if COOKIE is provided)COOKIE: The session cookie to use for authentication (Optional if AUTH_TOKEN is provided)OPENAPI_SPEC: The path to the OpenAPI spec file (Optional) (defaults to latest stable release)
Authentication
The server supports two authentication methods:
- Basic Auth: Using base64 encoded username:password via
AUTH_TOKENenvironment variable - Cookie: Using session cookie via
COOKIEenvironment variable
At least one of these authentication methods must be provided.
Page Limit
The default is 100 items, but you can change it using maximum_page_limit option in [api] section in the airflow.cfg file.
Tasks
- First API
- Parse OpenAPI Spec
- Safe/Unsafe mode implementation
- Allow session auth
- Parse proper description with list_tools.
- Airflow config fetch (specifically for page limit)
- Env variables optional (env variables might not be ideal for airflow plugins)