Labsco
yangkyeongmo logo

Airflow MCP Server

โ˜… 168

from yangkyeongmo

MCP server for Airflow

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedAccount requiredAdvanced setup

MseeP.ai Security Assessment Badge

mcp-server-apache-airflow

smithery badge PyPI - Downloads

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 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

FeatureAPI PathStatus
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}โœ…
Get Task Instance Log/api/v1/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/logs/{task_try_number}โœ…
Clear Task Instances/api/v1/dags/{dag_id}/clearTaskInstancesโœ…
Set Task Instances State/api/v1/dags/{dag_id}/updateTaskInstancesStateโœ…
List Task Instance Tries/api/v1/dags/{dag_id}/dagRuns/{dag_run_id}/taskInstances/{task_id}/triesโœ…
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โœ…

Development

Setting up Development Environment

  1. Clone the repository:
git clone https://github.com/yangkyeongmo/mcp-server-apache-airflow.git
cd mcp-server-apache-airflow
  1. Install development dependencies:
uv sync --dev
  1. Create a .env file for environment variables (optional for development):
touch .env

Note: No environment variables are required for running tests. The AIRFLOW_HOST defaults to http://localhost:8080 for development and testing purposes.

Running Tests

The project uses pytest for testing with the following commands available:

# Run all tests
make test

Code Quality

# Run linting
make lint

# Run code formatting
make format

Continuous Integration

The project includes a GitHub Actions workflow (.github/workflows/test.yml) that automatically:

  • Runs tests on Python 3.10, 3.11, and 3.12
  • Executes linting checks using ruff
  • Runs on every push and pull request to main branch

The CI pipeline ensures code quality and compatibility across supported Python versions before any changes are merged.