home / mcp / airflow mcp server
MCP Server for Apache Airflow
Configuration
View docs{
"mcpServers": {
"abhishekbhakat-airflow-mcp-server": {
"url": "http://localhost:3000",
"headers": {
"AIRFLOW_MCP_RESOURCES_DIR": "/path/to/docs"
}
}
}
}This MCP server lets you control Airflow 3 via MCP clients. It exposes tools to interact with Airflow through its APIs, supports multiple transport methods, and includes options for safe (read-only) or full (read/write) operation. It’s designed to be simple to connect to from your MCP client and to scale with HTTP transport when needed.
Connect from your MCP client using either a local stdio setup or an HTTP transport for remote access. In stdio, you launch the MCP server process and connect via the host process I/O. In HTTP, you run a web-facing MCP server and connect through HTTP requests. You can switch between Safe mode for read-only access or Unsafe mode for full control.
Key usage patterns you’ll perform include listing Airflow entities, reading configurations, and triggering API actions exposed by the MCP server. When you connect, provide your JWT token for authentication and your Airflow base URL (without the /api path). The MCP server automatically fetches its OpenAPI spec from the base URL and exposes the tools through the MCP client interface.
Prerequisites you need before starting: you must have a runtime capable of hosting the MCP server (the examples use the uvx runtime). Ensure you have a valid JWT token ready for authentication and your Airflow instance reachable at its base URL (for example, http://localhost:8080). Then choose either stdio or HTTP transport and follow the appropriate steps.
Option A — Git-like stdio transport (default) Run the MCP server with stdio transport and provide the Airflow base URL and your auth token.
{
"mcpServers": {
"airflow_mcp": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}Run the MCP server with HTTP transport for scalable web deployment. You’ll provide the same base Airflow URL and JWT token.
{
"mcpServers": {
"airflow_mcp_http": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--http",
"--port",
"3000",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}