This document aggregates MCP client configuration snippets modelled after the Context7 examples. Every section shows a stdio-first setup and, where supported, an HTTP transport alternative using the streamable HTTP endpoint exposed by airflow-mcp-server.
- Airflow 3 instance reachable at
http://localhost:8080(adjust to your environment) - JWT auth token with the desired Airflow permissions
uvinstalled for launching the server viauvx
Start the MCP server in stdio mode (ideal when the client spawns the process):
uvx airflow-mcp-server --base-url http://localhost:8080 --auth-token <jwt_token>Start the server in HTTP mode before connecting remote-capable clients:
uvx airflow-mcp-server --http --port 3000 --base-url http://localhost:8080 --auth-token <jwt_token>The HTTP examples assume the server is available at http://127.0.0.1:3000/mcp.
~/.cursor/mcp.json
{
"mcpServers": {
"airflow": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcpServers": {
"airflow": {
"server": {
"url": "http://127.0.0.1:3000/mcp"
}
}
}
}Cursor’s remote configuration nests connection details under a
serverkey; omit the oldertypefield which is no longer recognized.
claude mcp add airflow -- uvx airflow-mcp-server --base-url http://localhost:8080 --auth-token <jwt_token>claude mcp add --transport http airflow http://127.0.0.1:3000/mcpamp mcp add airflow --command uvx --args "airflow-mcp-server" "--base-url" "http://localhost:8080" "--auth-token" "<jwt_token>"amp mcp add airflow http://127.0.0.1:3000/mcp~/.windsurf/mcp.json
{
"mcpServers": {
"airflow": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcpServers": {
"airflow": {
"serverUrl": "http://127.0.0.1:3000/mcp"
}
}
}settings.json
"mcp": {
"servers": {
"airflow": {
"type": "stdio",
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}"mcp": {
"servers": {
"airflow": {
"type": "http",
"url": "http://127.0.0.1:3000/mcp"
}
}
}{
"mcpServers": {
"airflow": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcpServers": {
"airflow": {
"url": "http://127.0.0.1:3000/mcp"
}
}
}settings.json
{
"context_servers": {
"Airflow MCP": {
"source": "custom",
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"context_servers": {
"Airflow MCP": {
"source": "remote",
"serverUrl": "http://127.0.0.1:3000/mcp"
}
}
}npx -y airflow-mcp-server --base-url http://localhost:8080 --auth-token <jwt_token>
or settings.json entry:
"augment.advanced": {
"mcpServers": [
{
"name": "airflow",
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
]
}Augment currently relies on command-launch configurations. Run the HTTP server separately and use stdio until native HTTP support is available.
{
"mcpServers": {
"airflow": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcpServers": {
"airflow": {
"type": "streamable-http",
"url": "http://127.0.0.1:3000/mcp"
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"airflow": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcpServers": {
"airflow": {
"httpUrl": "http://127.0.0.1:3000/mcp"
}
}
}Add to claude_desktop_config.json:
{
"mcpServers": {
"airflow": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}Within Settings → Connectors:
{
"name": "Airflow MCP",
"url": "http://127.0.0.1:3000/mcp"
}{
"mcp": {
"airflow": {
"type": "local",
"command": [
"uvx",
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcp": {
"airflow": {
"type": "remote",
"url": "http://127.0.0.1:3000/mcp"
}
}
}Settings → Tools → AI Assistant → Model Context Protocol:
{
"mcpServers": {
"airflow": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcpServers": {
"airflow": {
"url": "http://127.0.0.1:3000/mcp",
"type": "http"
}
}
}{
"mcpServers": {
"Airflow MCP": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
],
"autoApprove": []
}
}
}{
"mcpServers": {
"Airflow MCP": {
"url": "http://127.0.0.1:3000/mcp",
"type": "http"
}
}
}{
"mcpServers": {
"airflow": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcpServers": {
"airflow": {
"url": "http://127.0.0.1:3000/mcp"
}
}
}{
"mcpServers": {
"airflow": {
"command": "bunx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}Use Bun to launch the HTTP server:
bunx airflow-mcp-server --http --port 3000 --base-url http://localhost:8080 --auth-token <jwt_token>{
"mcpServers": {
"airflow": {
"command": "deno",
"args": [
"run",
"--allow-env",
"--allow-net",
"npm:airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}deno run --allow-env --allow-net npm:airflow-mcp-server --http --port 3000 --base-url http://localhost:8080 --auth-token <jwt_token>Run interactively:
docker run -i --rm ghcr.io/abhishekbhakat/airflow-mcp-server --base-url http://host.docker.internal:8080 --auth-token <jwt_token>docker run -i --rm -p 3000:3000 ghcr.io/abhishekbhakat/airflow-mcp-server --http --port 3000 --base-url http://host.docker.internal:8080 --auth-token <jwt_token>Include in bundle manifest:
{
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}Reference the HTTP endpoint in the bundle metadata if supported by the client.
{
"mcpServers": {
"airflow": {
"command": "cmd",
"args": [
"/c",
"uvx",
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcpServers": {
"airflow": {
"url": "http://127.0.0.1:3000/mcp"
}
}
}~/.aws/amazonq/mcp.json
{
"mcpServers": {
"airflow": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcpServers": {
"airflow": {
"url": "http://127.0.0.1:3000/mcp"
}
}
}Settings → AI → Manage MCP servers:
{
"Airflow": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
],
"start_on_launch": true
}
}{
"Airflow": {
"url": "http://127.0.0.1:3000/mcp"
}
}Repository → Settings → Copilot → Coding Agent → MCP configuration:
{
"mcpServers": {
"airflow": {
"type": "stdio",
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcpServers": {
"airflow": {
"type": "http",
"url": "http://127.0.0.1:3000/mcp",
"tools": ["tools/list", "tools/call"]
}
}
}mcp.json
{
"mcpServers": {
"Airflow": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcpServers": {
"Airflow": {
"url": "http://127.0.0.1:3000/mcp"
}
}
}mcp.json
{
"inputs": [],
"servers": {
"airflow": {
"type": "stdio",
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"inputs": [],
"servers": {
"airflow": {
"type": "http",
"url": "http://127.0.0.1:3000/mcp"
}
}
}crush.json
{
"$schema": "https://charm.land/crush.json",
"mcp": {
"airflow": {
"type": "stdio",
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"$schema": "https://charm.land/crush.json",
"mcp": {
"airflow": {
"type": "http",
"url": "http://127.0.0.1:3000/mcp"
}
}
}Settings → Plugins:
{
"mcpServers": {
"airflow": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcpServers": {
"airflow": {
"url": "http://127.0.0.1:3000/mcp"
}
}
}{
"mcpServers": {
"airflow": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcpServers": {
"airflow": {
"url": "http://127.0.0.1:3000/mcp"
}
}
}{
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}Configure the MCP entry to use the remote server:
{
"url": "http://127.0.0.1:3000/mcp"
}{
"mcpServers": {
"airflow": {
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}
}
}{
"mcpServers": {
"airflow": {
"url": "http://127.0.0.1:3000/mcp"
}
}
}Settings → Connectors → Advanced:
{
"command": "uvx",
"args": [
"airflow-mcp-server",
"--base-url",
"http://localhost:8080",
"--auth-token",
"<jwt_token>"
]
}Perplexity Desktop currently expects command-based integrations. Run the server in HTTP mode separately; remote configuration will appear once direct URL support is available.
- If a client requires explicit environment variables, set
AIRFLOW_BASE_URLandAUTH_TOKENinstead of CLI flags. - Some Windows environments need fully qualified paths to
uvxor Python. Adjust commands accordingly. - For remote HTTP access from another machine, replace
127.0.0.1with the bound host/IP and ensure the port is exposed.