io.github.abhishekbhakat/airflow-mcp-server
An MCP server for Apache Airflow
What can you do with io.github.abhishekbhakat/airflow-mcp-server?
- Hierarchical Discovery (default): Tools are organized by categories (DAGs, Tasks, Connections, etc.). Browse categories first, then select specific tools. More manageable for large APIs.
- Static Tools (
--static-tools): All tools available immediately. Better for programmatic access but can be overwhelming.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
airflow-mcp-serverclaude mcp add airflow-mcp-server -e 'AIRFLOW_BASE_URL=<AIRFLOW_BASE_URL>' -e 'AUTH_TOKEN=<your auth_token>' -- uvx airflow-mcp-server==0.9.0 --safe --static-tools
{
"mcpServers": {
"airflow-mcp-server": {
"command": "uvx",
"args": [
"airflow-mcp-server==0.9.0",
"--safe",
"--static-tools"
],
"env": {
"AIRFLOW_BASE_URL": "<AIRFLOW_BASE_URL>",
"AUTH_TOKEN": "<your auth_token>"
}
}
}
}
Environment variables
AIRFLOW_BASE_URLrequired The base URL for the Airflow API (e.g., http://localhost:8080)AUTH_TOKENrequired secret The JWT authentication token for Airflow API access
airflow-mcp-serverclaude mcp add airflow-mcp-server -e 'AIRFLOW_BASE_URL=<AIRFLOW_BASE_URL>' -e 'AUTH_TOKEN=<your auth_token>' -- uvx airflow-mcp-server==0.8.2 --http --port 3000 --host localhost --safe --static-tools
{
"mcpServers": {
"airflow-mcp-server": {
"command": "uvx",
"args": [
"airflow-mcp-server==0.8.2",
"--http",
"--port",
"3000",
"--host",
"localhost",
"--safe",
"--static-tools"
],
"env": {
"AIRFLOW_BASE_URL": "<AIRFLOW_BASE_URL>",
"AUTH_TOKEN": "<your auth_token>"
}
}
}
}
Environment variables
AIRFLOW_BASE_URLrequired The base URL for the Airflow API (e.g., http://localhost:8080)AUTH_TOKENrequired secret The JWT authentication token for Airflow API access
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
airflow-mcp-server: An MCP Server for controlling Airflow 3
mcp-name: io.github.abhishekbhakat/airflow-mcp-server
MCPHub Certification
This MCP server is certified by MCPHub. This certification ensures that airflow-mcp-server follows best practices for Model Context Protocol implementation.
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
Stdio Transport (Default)
{
"mcpServers": {
"airflow-mcp-server": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}
See CONFIG.md for IDE-specific configuration examples across popular MCP clients.
HTTP Transport
{
"mcpServers": {
"airflow-mcp-server-http": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--http",
"--port",
"3000",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}
Note:
- Set
base_urlto the root Airflow URL (e.g.,http://localhost:8080).- Do not include
/api/v2in the base URL. The server will automatically fetch the OpenAPI spec from${base_url}/openapi.json.- Only JWT token is required for authentication. Cookie and basic auth are no longer supported in Airflow 3.0.
Transport Options
The server supports multiple transport protocols:
Stdio Transport (Default)
Standard input/output transport for direct process communication:
airflow-mcp-server --safe --base-url http://localhost:8080 --auth-token <jwt>
HTTP Transport
Uses Streamable HTTP for better scalability and web compatibility:
airflow-mcp-server --safe --http --port 3000 --base-url http://localhost:8080 --auth-token <jwt>
Note: SSE transport is deprecated. Use
--httpfor new deployments as it provides better bidirectional communication and is the recommended approach by FastMCP.
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
Tool Discovery Modes
The server supports two tool discovery approaches:
- Hierarchical Discovery (default): Tools are organized by categories (DAGs, Tasks, Connections, etc.). Browse categories first, then select specific tools. More manageable for large APIs.
- Static Tools (
--static-tools): All tools available immediately. Better for programmatic access but can be overwhelming.
To use static tools:
airflow-mcp-server --static-tools
Command Line Options
Usage: airflow-mcp-server [OPTIONS]
MCP server for Airflow
Options:
-v, --verbose Increase verbosity
-s, --safe Use only read-only tools
-u, --unsafe Use all tools (default)
--static-tools Use static tools instead of hierarchical discovery
--base-url TEXT Airflow API base URL
--auth-token TEXT Authentication token (JWT)
--http Use HTTP (Streamable HTTP) transport instead of stdio
--sse Use Server-Sent Events transport (deprecated, use --http
instead)
--port INTEGER Port to run HTTP/SSE server on (default: 3000)
--host TEXT Host to bind HTTP/SSE server to (default: localhost)
--help Show this message and exit.
Using Resources
Point the server at a folder of Markdown guides whenever you want agents to reference local documentation:
airflow-mcp-server --base-url http://localhost:8080 --auth-token <jwt> --resources-dir ~/airflow-resources
- Every top-level
.md/.markdownfile becomes a read-only resource (file:///<slug>) visible in your MCP client. - The first
# Headingin each file (if present) is used as the resource title; otherwise the filename stem is used. - Set
AIRFLOW_MCP_RESOURCES_DIR=/path/to/docsif you prefer environment-based configuration. - Update the files on disk and restart the server to refresh the resources list.
Considerations
Authentication
- Only JWT authentication is supported in Airflow 3.0. You must provide a valid
AUTH_TOKEN.
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.
Transport Selection
- Use stdio transport for direct process communication (default)
- Use HTTP transport for web deployments, multiple clients, or when you need better scalability
- Avoid SSE transport as it's deprecated in favor of HTTP transport
Frequently asked questions
What is io.github.abhishekbhakat/airflow-mcp-server?
An MCP server for Apache Airflow
How do I install io.github.abhishekbhakat/airflow-mcp-server?
It runs on your machine. In Claude Code: claude mcp add airflow-mcp-server -e 'AIRFLOW_BASE_URL=<AIRFLOW_BASE_URL>' -e 'AUTH_TOKEN=<your auth_token>' -- uvx airflow-mcp-server==0.9.0 --safe --static-tools. For other clients, paste the JSON configuration from this page into their MCP settings.
Does io.github.abhishekbhakat/airflow-mcp-server need an API key?
Yes. It expects AIRFLOW_BASE_URL, AUTH_TOKEN, which you set in its configuration.
Is io.github.abhishekbhakat/airflow-mcp-server open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains io.github.abhishekbhakat/airflow-mcp-server?
It is published by abhishekbhakat. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.