Name | airflow-mcp JSON |
Version |
0.1.0
JSON |
| download |
home_page | None |
Summary | 本项目是一个与 Apache Airflow 集成的 Model Context Protocol (MCP) 服务器,提供多种工具来管理和监控 Airflow 的 DAG 运行。它支持触发 DAG、获取 DAG 状态、回填数据、获取日志等操作。 |
upload_time | 2025-03-19 02:57:32 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.12 |
license | MIT |
keywords |
airflow
cli
management
mcp
monitoring
server
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Airflow MCP 服务器
## 项目概述
本项目是一个与 Apache Airflow 集成的 Model Context Protocol (MCP) 服务器,提供多种工具来管理和监控 Airflow 的 DAG 运行。它支持触发 DAG、获取 DAG 状态、回填数据、获取日志等操作。
## 功能特性
- **触发 DAG (`trigger-dag`)**: 触发指定 DAG 的运行。
- **启用 DAG (`enable-dag`)**: 启用指定的 DAG。
- **获取每日报告 (`get-daily-report`)**: 获取指定时间范围内的所有 DAG 运行的汇总报告。
- **列出所有 DAG (`list-dags`)**: 列出所有可用的 DAG。
- **批量获取 DAG 运行记录 (`list-dag-runs`)**: 批量获取 DAG 的运行记录。
- **获取 DAG 运行状态 (`get-dag-status`)**: 获取特定 DAG 的运行状态。
- **获取 DAG 日志 (`get-dag-logs`)**: 获取 DAG 运行的日志。
- **回填 DAG (`backfill-dag`)**: 回填指定日期范围内的 DAG 数据。
## 安装与使用
1. uv sync
2. 修改 mcp_config.json, 加入 airflow 配置
```json
{
"mcpServers": {
"airflow": {
"command": "uv",
"args": [
"--directory",
"/Users/ming/AI/airflow-mcp",
"run",
"airflow_mcp.py"
]
}
}
}
```
3. 启动 airflow 实例
```bash
mkdir ~/airflow-docker
cd ~/airflow-docker
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.8.3/docker-compose.yaml'
cat << EOF > .env
AIRFLOW_UID=$(id -u)
AIRFLOW__CORE__LOAD_EXAMPLES=false
AIRFLOW__CORE__EXECUTOR=SequentialExecutor
EOF
docker compose up -d
```
## 贡献
欢迎贡献代码!请提交 Pull Request 并确保遵循项目的编码规范。
## 许可
本项目采用 MIT 许可协议。
Raw data
{
"_id": null,
"home_page": null,
"name": "airflow-mcp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "airflow, cli, management, mcp, monitoring, server",
"author": null,
"author_email": "treerootboy <treerootboy@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/2b/9d/0533ae2340d1f88331c338105fabfba11bd0b0c9e813f73f1b837c69c7bc/airflow_mcp-0.1.0.tar.gz",
"platform": null,
"description": "# Airflow MCP \u670d\u52a1\u5668\n\n## \u9879\u76ee\u6982\u8ff0\n\u672c\u9879\u76ee\u662f\u4e00\u4e2a\u4e0e Apache Airflow \u96c6\u6210\u7684 Model Context Protocol (MCP) \u670d\u52a1\u5668\uff0c\u63d0\u4f9b\u591a\u79cd\u5de5\u5177\u6765\u7ba1\u7406\u548c\u76d1\u63a7 Airflow \u7684 DAG \u8fd0\u884c\u3002\u5b83\u652f\u6301\u89e6\u53d1 DAG\u3001\u83b7\u53d6 DAG \u72b6\u6001\u3001\u56de\u586b\u6570\u636e\u3001\u83b7\u53d6\u65e5\u5fd7\u7b49\u64cd\u4f5c\u3002\n\n## \u529f\u80fd\u7279\u6027\n- **\u89e6\u53d1 DAG (`trigger-dag`)**: \u89e6\u53d1\u6307\u5b9a DAG \u7684\u8fd0\u884c\u3002\n- **\u542f\u7528 DAG (`enable-dag`)**: \u542f\u7528\u6307\u5b9a\u7684 DAG\u3002\n- **\u83b7\u53d6\u6bcf\u65e5\u62a5\u544a (`get-daily-report`)**: \u83b7\u53d6\u6307\u5b9a\u65f6\u95f4\u8303\u56f4\u5185\u7684\u6240\u6709 DAG \u8fd0\u884c\u7684\u6c47\u603b\u62a5\u544a\u3002\n- **\u5217\u51fa\u6240\u6709 DAG (`list-dags`)**: \u5217\u51fa\u6240\u6709\u53ef\u7528\u7684 DAG\u3002\n- **\u6279\u91cf\u83b7\u53d6 DAG \u8fd0\u884c\u8bb0\u5f55 (`list-dag-runs`)**: \u6279\u91cf\u83b7\u53d6 DAG \u7684\u8fd0\u884c\u8bb0\u5f55\u3002\n- **\u83b7\u53d6 DAG \u8fd0\u884c\u72b6\u6001 (`get-dag-status`)**: \u83b7\u53d6\u7279\u5b9a DAG \u7684\u8fd0\u884c\u72b6\u6001\u3002\n- **\u83b7\u53d6 DAG \u65e5\u5fd7 (`get-dag-logs`)**: \u83b7\u53d6 DAG \u8fd0\u884c\u7684\u65e5\u5fd7\u3002\n- **\u56de\u586b DAG (`backfill-dag`)**: \u56de\u586b\u6307\u5b9a\u65e5\u671f\u8303\u56f4\u5185\u7684 DAG \u6570\u636e\u3002\n\n## \u5b89\u88c5\u4e0e\u4f7f\u7528\n1. uv sync\n2. \u4fee\u6539 mcp_config.json, \u52a0\u5165 airflow \u914d\u7f6e\n```json\n{\n \"mcpServers\": {\n \"airflow\": {\n \"command\": \"uv\",\n \"args\": [\n \"--directory\",\n \"/Users/ming/AI/airflow-mcp\",\n \"run\",\n \"airflow_mcp.py\"\n ]\n }\n }\n}\n```\n3. \u542f\u52a8 airflow \u5b9e\u4f8b\n```bash\nmkdir ~/airflow-docker\ncd ~/airflow-docker\ncurl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.8.3/docker-compose.yaml'\ncat << EOF > .env\nAIRFLOW_UID=$(id -u)\nAIRFLOW__CORE__LOAD_EXAMPLES=false\nAIRFLOW__CORE__EXECUTOR=SequentialExecutor\nEOF\ndocker compose up -d\n```\n\n## \u8d21\u732e\n\u6b22\u8fce\u8d21\u732e\u4ee3\u7801\uff01\u8bf7\u63d0\u4ea4 Pull Request \u5e76\u786e\u4fdd\u9075\u5faa\u9879\u76ee\u7684\u7f16\u7801\u89c4\u8303\u3002\n\n## \u8bb8\u53ef\n\u672c\u9879\u76ee\u91c7\u7528 MIT \u8bb8\u53ef\u534f\u8bae\u3002",
"bugtrack_url": null,
"license": "MIT",
"summary": "\u672c\u9879\u76ee\u662f\u4e00\u4e2a\u4e0e Apache Airflow \u96c6\u6210\u7684 Model Context Protocol (MCP) \u670d\u52a1\u5668\uff0c\u63d0\u4f9b\u591a\u79cd\u5de5\u5177\u6765\u7ba1\u7406\u548c\u76d1\u63a7 Airflow \u7684 DAG \u8fd0\u884c\u3002\u5b83\u652f\u6301\u89e6\u53d1 DAG\u3001\u83b7\u53d6 DAG \u72b6\u6001\u3001\u56de\u586b\u6570\u636e\u3001\u83b7\u53d6\u65e5\u5fd7\u7b49\u64cd\u4f5c\u3002",
"version": "0.1.0",
"project_urls": null,
"split_keywords": [
"airflow",
" cli",
" management",
" mcp",
" monitoring",
" server"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "6cdea444ebfb78907282e7a88548cd26b386d13fa45097750760ba41d702b91d",
"md5": "f29dfa7f0090fe9c3fbc4fb62cc2803b",
"sha256": "8569f54644c9a65e0fc89b18f48036caaab1dc072b1845769bc7380e3a22e31a"
},
"downloads": -1,
"filename": "airflow_mcp-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f29dfa7f0090fe9c3fbc4fb62cc2803b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 10405,
"upload_time": "2025-03-19T02:57:31",
"upload_time_iso_8601": "2025-03-19T02:57:31.391057Z",
"url": "https://files.pythonhosted.org/packages/6c/de/a444ebfb78907282e7a88548cd26b386d13fa45097750760ba41d702b91d/airflow_mcp-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2b9d0533ae2340d1f88331c338105fabfba11bd0b0c9e813f73f1b837c69c7bc",
"md5": "94010b8788a2dfad3726d05d5707179e",
"sha256": "adbf0ad2150528c684a31adf186372776a66996715d1edd0e61a6b92e4949333"
},
"downloads": -1,
"filename": "airflow_mcp-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "94010b8788a2dfad3726d05d5707179e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 20534,
"upload_time": "2025-03-19T02:57:32",
"upload_time_iso_8601": "2025-03-19T02:57:32.951895Z",
"url": "https://files.pythonhosted.org/packages/2b/9d/0533ae2340d1f88331c338105fabfba11bd0b0c9e813f73f1b837c69c7bc/airflow_mcp-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-03-19 02:57:32",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "airflow-mcp"
}