airflow-mcp


Nameairflow-mcp JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
Summary本项目是一个与 Apache Airflow 集成的 Model Context Protocol (MCP) 服务器,提供多种工具来管理和监控 Airflow 的 DAG 运行。它支持触发 DAG、获取 DAG 状态、回填数据、获取日志等操作。
upload_time2025-03-19 02:57:32
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseMIT
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"
}
        
Elapsed time: 0.46382s