X

Airflow

Information

# mcp-server-apache-airflow [![smithery badge](https://smithery.ai/badge/@yangkyeongmo/mcp-server-apache-airflow)](https://smithery.ai/server/@yangkyeongmo/mcp-server-apache-airflow) A Model Context Protocol (MCP) server implementation for Apache Airflow, enabling seamless integration with MCP clients. This project provides a standardized way to interact with Apache Airflow through the Model Context Protocol. Server for Apache Airflow MCP server ## About This project implements a [Model Context Protocol](https://modelcontextprotocol.io/introduction) server that wraps Apache Airflow's REST API, allowing MCP clients to interact with Airflow in a standardized way. It uses the official Apache Airflow client library to ensure compatibility and maintainability. ## Feature Implementation Status | Feature | API Path | Status | |---------|----------|--------| | **DAG Management** | | | | List DAGs | \`/api/v1/dags\` | ✅ | | Get DAG Details | \`/api/v1/dags/\{dag_id\}\` | ✅ | | Pause DAG | \`/api/v1/dags/\{dag_id\}\` | ✅ | | Unpause DAG | \`/api/v1/dags/\{dag_id\}\` | ✅ | | Update DAG | \`/api/v1/dags/\{dag_id\}\` | ✅ | | Delete DAG | \`/api/v1/dags/\{dag_id\}\` | ✅ | | Get DAG Source | \`/api/v1/dagSources/\{file_token\}\` | ✅ | | Patch Multiple DAGs | \`/api/v1/dags\` | ✅ | | Reparse DAG File | \`/api/v1/dagSources/\{file_token\}/reparse\` | ✅ | | **DAG Runs** | | | | List DAG Runs | \`/api/v1/dags/\{dag_id\}/dagRuns\` | ✅ | | Create DAG Run | \`/api/v1/dags/\{dag_id\}/dagRuns\` | ✅ | | Get DAG Run Details | \`/api/v1/dags/\{dag_id\}/dagRuns/\{dag_run_id\}\` | ✅ | | Update DAG Run | \`/api/v1/dags/\{dag_id\}/dagRuns/\{dag_run_id\}\` | ✅ | | Delete DAG Run | \`/api/v1/dags/\{dag_id\}/dagRuns/\{dag_run_id\}\` | ✅ | | Get DAG Runs Batch | \`/api/v1/dags/~/dagRuns/list\` | ✅ | | Clear DAG Run | \`/api/v1/dags/\{dag_id\}/dagRuns/\{dag_run_id\}/clear\` | ✅ | | Set DAG Run Note | \`/api/v1/dags/\{dag_id\}/dagRuns/\{dag_run_id\}/setNote\` | ✅ | | Get Upstream Dataset Events | \`/api/v1/dags/\{dag_id\}/dagRuns/\{dag_run_id\}/upstreamDatasetEvents\` | ✅ | | **Tasks** | | | | List DAG Tasks | \`/api/v1/dags/\{dag_id\}/tasks\` | ✅ | | Get Task Details | \`/api/v1/dags/\{dag_id\}/tasks/\{task_id\}\` | ✅ | | Get Task Instance | \`/api/v1/dags/\{dag_id\}/dagRuns/\{dag_run_id\}/taskInstances/\{task_id\}\` | ✅ | | List Task Instances | \`/api/v1/dags/\{dag_id\}/dagRuns/\{dag_run_id\}/taskInstances\` | ✅ | | Update Task Instance | \`/api/v1/dags/\{dag_id\}/dagRuns/\{dag_run_id\}/taskInstances/\{task_id\}\` | ✅ | | Clear Task Instances | \`/api/v1/dags/\{dag_id\}/clearTaskInstances\` | ✅ | | Set Task Instances State | \`/api/v1/dags/\{dag_id\}/updateTaskInstancesState\` | ✅ | | **Variables** | | | | List Variables | \`/api/v1/variables\` | ✅ | | Create Variable | \`/api/v1/variables\` | ✅ | | Get Variable | \`/api/v1/variables/\{variable_key\}\` | ✅ | | Update Variable | \`/api/v1/variables/\{variable_key\}\` | ✅ | | Delete Variable | \`/api/v1/variables/\{variable_key\}\` | ✅ | | **Connections** | | | | List Connections | \`/api/v1/connections\` | ✅ | | Create Connection | \`/api/v1/connections\` | ✅ | | Get Connection | \`/api/v1/connections/\{connection_id\}\` | ✅ | | Update Connection | \`/api/v1/connections/\{connection_id\}\` | ✅ | | Delete Connection | \`/api/v1/connections/\{connection_id\}\` | ✅ | | Test Connection | \`/api/v1/connections/test\` | ✅ | | **Pools** | | | | List Pools | \`/api/v1/pools\` | ✅ | | Create Pool | \`/api/v1/pools\` | ✅ | | Get Pool | \`/api/v1/pools/\{pool_name\}\` | ✅ | | Update Pool | \`/api/v1/pools/\{pool_name\}\` | ✅ | | Delete Pool | \`/api/v1/pools/\{pool_name\}\` | ✅ | | **XComs** | | | | List XComs | \`/api/v1/dags/\{dag_id\}/dagRuns/\{dag_run_id\}/taskInstances/\{task_id\}/xcomEntries\` | ✅ | | Get XCom Entry | \`/api/v1/dags/\{dag_id\}/dagRuns/\{dag_run_id\}/taskInstances/\{task_id\}/xcomEntries/\{xcom_key\}\` | ✅ | | **Datasets** | | | | List Datasets | \`/api/v1/datasets\` | ✅ | | Get Dataset | \`/api/v1/datasets/\{uri\}\` | ✅ | | Get Dataset Events | \`/api/v1/datasetEvents\` | ✅ | | Create Dataset Event | \`/api/v1/datasetEvents\` | ✅ | | Get DAG Dataset Queued Event | \`/api/v1/dags/\{dag_id\}/dagRuns/queued/datasetEvents/\{uri\}\` | ✅ | | Get DAG Dataset Queued Events | \`/api/v1/dags/\{dag_id\}/dagRuns/queued/datasetEvents\` | ✅ | | Delete DAG Dataset Queued Event | \`/api/v1/dags/\{dag_id\}/dagRuns/queued/datasetEvents/\{uri\}\` | ✅ | | Delete DAG Dataset Queued Events | \`/api/v1/dags/\{dag_id\}/dagRuns/queued/datasetEvents\` | ✅ | | Get Dataset Queued Events | \`/api/v1/datasets/\{uri\}/dagRuns/queued/datasetEvents\` | ✅ | | Delete Dataset Queued Events | \`/api/v1/datasets/\{uri\}/dagRuns/queued/datasetEvents\` | ✅ | | **Monitoring** | | | | Get Health | \`/api/v1/health\` | ✅ | | **DAG Stats** | | | | Get DAG Stats | \`/api/v1/dags/statistics\` | ✅ | | **Config** | | | | Get Config | \`/api/v1/config\` | ✅ | | **Plugins** | | | | Get Plugins | \`/api/v1/plugins\` | ✅ | | **Providers** | | | | List Providers | \`/api/v1/providers\` | ✅ | | **Event Logs** | | | | List Event Logs | \`/api/v1/eventLogs\` | ✅ | | Get Event Log | \`/api/v1/eventLogs/\{event_log_id\}\` | ✅ | | **System** | | | | Get Import Errors | \`/api/v1/importErrors\` | ✅ | | Get Import Error Details | \`/api/v1/importErrors/\{import_error_id\}\` | ✅ | | Get Health Status | \`/api/v1/health\` | ✅ | | Get Version | \`/api/v1/version\` | ✅ | ## Setup ### Dependencies This project depends on the official Apache Airflow client library (\`apache-airflow-client\`). It will be automatically installed when you install this package. ### Environment Variables Set the following environment variables: \`\`\` AIRFLOW_HOST= AIRFLOW_USERNAME= AIRFLOW_PASSWORD= \`\`\` ### Usage with Claude Desktop Add to your \`claude_desktop_config.json\`: \`\`\`json \{ "mcpServers": \{ "mcp-server-apache-airflow": \{ "command": "uvx", "args": ["mcp-server-apache-airflow"], "env": \{ "AIRFLOW_HOST": "https://your-airflow-host", "AIRFLOW_USERNAME": "your-username", "AIRFLOW_PASSWORD": "your-password" \} \} \} \} \`\`\` Alternative configuration using \`uv\`: \`\`\`json \{ "mcpServers": \{ "mcp-server-apache-airflow": \{ "command": "uv", "args": [ "--directory", "/path/to/mcp-server-apache-airflow", "run", "mcp-server-apache-airflow" ], "env": \{ "AIRFLOW_HOST": "https://your-airflow-host", "AIRFLOW_USERNAME": "your-username", "AIRFLOW_PASSWORD": "your-password" \} \} \} \} \`\`\` Replace \`/path/to/mcp-server-apache-airflow\` with the actual path where you've cloned the repository. ### Selecting the API groups You can select the API groups you want to use by setting the \`--apis\` flag. \`\`\`bash uv run mcp-server-apache-airflow --apis "dag,dagrun" \`\`\` The default is to use all APIs. Allowed values are: - config - connections - dag - dagrun - dagstats - dataset - eventlog - importerror - monitoring - plugin - pool - provider - taskinstance - variable - xcom ### Manual Execution You can also run the server manually: \`\`\`bash make run \`\`\` \`make run\` accepts following options: Options: - \`--port\`: Port to listen on for SSE (default: 8000) - \`--transport\`: Transport type (stdio/sse, default: stdio) Or, you could run the sse server directly, which accepts same parameters: \`\`\`bash make run-sse \`\`\` ### Installing via Smithery To install Apache Airflow MCP Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@yangkyeongmo/mcp-server-apache-airflow): \`\`\`bash npx -y @smithery/cli install @yangkyeongmo/mcp-server-apache-airflow --client claude \`\`\` ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. ## License [MIT License](LICENSE)

Prompts

Reviews

Tags

Write Your Review

Detailed Ratings

ALL
Correctness
Helpfulness
Interesting
Upload Pictures and Videos

Name
Size
Type
Download
Last Modified
  • Community

Add Discussion

Upload Pictures and Videos