자연어로 Apache Airflow를 관리
Apache Airflow를 사용하는 데이터 엔지니어와 DevOps 엔지니어라면, 복잡한 REST API 호출이나 웹 인터페이스 조작 없이 자연어만으로 워크플로우를 관리할 수 있다면 얼마나 좋을까요? MCP-Airflow-API가 바로 그 목표를 현실로 만들어주는 오픈소스 프로젝트입니다.
MCP-Airflow-API는 Model Context Protocol (MCP)를 활용하여 Apache Airflow의 REST API 작업을 자연어 도구로 변환하는 MCP 서버입니다. 이 프로젝트는 복잡한 API 구조를 숨기고, 대신 직관적인 자연어 명령으로 Airflow 클러스터를 관리할 수 있게 해줍니다.
# 기존 방식
curl -X GET "http://localhost:8080/api/v1/dags?limit=100&offset=0" \ -H "Authorization: Basic YWlyZmxvdzphaXJmbG93"
# MCP-Airflow-API 방식
"현재 실행 중인 DAG들을 보여주세요"
# 5분 만에 시작하기
git clone https://github.com/call518/MCP-Airflow-API.git
cd MCP-Airflow-API
docker-compose up -d
# 브라우저에서
http://localhost:3002 접속
복잡한 API 문법을 몰라도 됩니다. 평상시 말하는 것처럼 질문하면 됩니다:
"현재 실행 중인 DAG는 무엇인가요?"
"실패한 작업들을 보여주세요"
"ETL이 포함된 DAG를 찾아주세요"
실시간으로 클러스터 상태를 파악할 수 있습니다:
클러스터 건강 상태 모니터링
DAG 상태 및 성능 분석
작업 실행 로그 추적
XCom 데이터 관리
Airflow API의 거의 모든 기능을 커버합니다:
DAG 관리 (실행, 일시정지, 재개)
작업 인스턴스 모니터링
풀(Pool) 및 변수 관리
연결(Connection) 설정
구성(Configuration) 조회
이벤트 로그 분석
MCP는 AI 애플리케이션과 데이터 소스 간의 안전한 연결을 위한 개방형 표준입니다. 이를 통해:
표준화된 인터페이스 제공
안전한 데이터 접근 보장
확장 가능한 아키텍처 구현
stdio 모드: 로컬 환경에서의 전통적인 방식
streamable-http 모드: Docker 기반 원격 배포
3개의 분리된 서비스로 구성된 완전한 Docker Compose 설정:
Open WebUI: 웹 인터페이스 (포트 3002)
MCP 서버: Airflow API 도구 (포트 8080)
MCPO 프록시: REST API 엔드포인트 제공 (포트 8002)
Copy# 현재 실행 중인 모든 DAG 조회 list_dags(limit=50, is_active=True) # 특정 키워드가 포함된 DAG 검색 list_dags(id_contains="etl", name_contains="daily") # DAG 즉시 실행 trigger_dag("my_etl_pipeline")
Copy# 실패한 작업 인스턴스들 조회 list_task_instances_all(state="failed", limit=20) # 특정 작업의 로그 확인 get_task_instance_logs( dag_id="my_dag", dag_run_id="run_123", task_id="extract_data" )
Copy# DAG 실행 시간 통계 dag_run_duration("my_etl_pipeline", limit=50) # 작업별 성능 분석 dag_task_duration("my_etl_pipeline", "latest_run")
uvx --python 3.11 mcp-airflow-api
version: '3.8'
services:
mcp-server:
build:
context: .
dockerfile: Dockerfile.MCP-Server
environment:
- FASTMCP_PORT=8080
- AIRFLOW_API_URL=http://your-airflow:8080/api/v1
- AIRFLOW_API_USERNAME=airflow
- AIRFLOW_API_PASSWORD=your-password
{
"mcpServers": {
"airflow-api": {
"command": "uvx",
"args": ["--python", "3.11", "mcp-airflow-api"],
"env": {
"AIRFLOW_API_URL": "http://localhost:8080/api/v1",
"AIRFLOW_API_USERNAME": "airflow",
"AIRFLOW_API_PASSWORD": "airflow"
}
}
}
}
모듈형 구조로 새로운 기능 쉽게 추가
표준 프로토콜 준수로 다른 도구와의 연동 용이
클라우드 네이티브 환경에서의 원활한 운영
LLM 친화적 인터페이스
컨텍스트 인식 쿼리 처리
자동화된 워크플로우 관리 가능
복잡한 파이프라인 디버깅 시간 단축
자연어 기반 모니터링으로 생산성 향상
직관적인 인터페이스로 학습 곡선 최소화
인프라 모니터링 자동화
장애 대응 시간 단축
표준화된 운영 프로세스 구축
사용자 친화적인 관리 도구
복잡한 API 없이 시스템 제어
실시간 클러스터 상태 파악
저장소: https://github.com/call518/MCP-Airflow-API
버그 리포트 및 기능 제안
문서 개선
코드 기여
스타 주기로 프로젝트 응원
MIT 라이선스로 자유롭게 사용, 수정, 배포 가능합니다.
MCP-Airflow-API는 단순한 도구가 아닙니다. 데이터 엔지니어링과 워크플로우 관리의 효과적인 접근법입니다. 복잡한 REST API 호출을 기억할 필요 없이, 자연어로 "현재 실행 중인 ETL 작업들의 상태를 보여주세요"라고 물어보세요. MCP-Airflow-API가 즉시 정확한 답변을 제공할 것입니다.