用途
mcp-server-apache-airflow 是一个 Model Context Protocol(MCP)服务器实现,用于将 Apache Airflow 接入 MCP 客户端,使客户端能够以标准化方式与 Airflow 交互。它通过包装 Apache Airflow 的 REST API 来实现这一点,并采用官方 Apache Airflow 客户端库(apache-airflow-client)以确保兼容性和可维护性。
主要能力
- 提供 MCP 服务器,作为 MCP 客户端与 Airflow 之间的桥梁。
- 依赖官方 apache-airflow-client,安装本包时会自动安装该客户端库。
- 支持两种认证方式:Basic Authentication(默认)和 JWT Token Authentication。若同时提供 JWT 令牌和基本认证凭据,JWT 令牌优先。获取 JWT 令牌可使用 Airflow 的认证端点。
- 可通过 --apis 标志选择要使用的 API 组,默认使用所有 API。
- 支持只读模式:通过 --read-only 标志或 READ_ONLY=true 环境变量启用,仅暴露执行读取操作(GET 请求)的工具,排除创建、更新或删除资源的工具。只读模式下列出的工具包括:列出 DAG、DAG 运行、任务、变量、连接等;获取特定资源的详情;读取配置和监控信息;测试连接(非破坏性)。创建、更新、删除 DAG、变量、连接、触发 DAG 运行等写操作在只读模式下不可用。
- 只读模式可与 API 组选择组合使用。
使用方式
环境变量
需设置环境变量以配置认证。可选 Basic Authentication(默认)或 JWT Token Authentication。
与 Claude Desktop 配合
将配置添加到 claude_desktop_config.json。文档提供了基本认证配置示例和只读模式配置示例(推荐用于安全)。也提供了使用 uv 的替代配置,需将 /path/to/mcp-server-apache-airflow 替换为实际克隆仓库的路径。
选择 API 组
通过 --apis 标志设置要使用的 API 组,默认使用所有 API。文档列出了允许的值。
只读模式
使用命令行标志 --read-only 或环境变量 READ_ONLY=true。在只读模式下,仅暴露只读工具。
手动执行
可手动运行服务器:make run 接受以下选项:--port(SSE 监听端口,默认 8000)、--transport(传输类型:stdio/sse/http,默认 stdio)。也可直接运行 sse 服务器,接受相同参数。还可使用 uv 直接启动服务。
通过 Smithery 安装
可通过 Smithery 自动为 Claude Desktop 安装 Apache Airflow MCP Server。
开发环境设置
克隆仓库、安装开发依赖、创建 .env 文件(开发可选)。注意:运行测试不需要环境变量,AIRFLOW_HOST 默认使用 http://localhost:8080 用于开发和测试。项目使用 pytest 进行测试。
持续集成
项目包含 GitHub Actions 工作流(.github/workflows/test.yml),会自动在 Python 3.10、3.11、3.12 上运行测试,使用 ruff 执行 lint 检查,并在每次推送到 main 分支和拉取请求时运行。CI 流水线确保代码质量和跨受支持 Python 版本的兼容性。
适用场景
适用于需要通过 MCP 客户端以标准化方式与 Apache Airflow 交互的场景,例如在 Claude Desktop 中查询 Airflow 的 DAG、任务、变量、连接等状态或配置信息,或在只读模式下安全地读取和监控 Airflow。
限制
- 只读模式下无法执行创建、更新、删除、触发 DAG 运行等写操作。
- 认证需要配置环境变量(Basic Authentication 或 JWT Token),未提供认证信息可能无法正常使用。
- 具体 API 组选择受 --apis 允许值限制。
- 关于具体功能实现状态、收费或价格、平台兼容性等详细信息,官方文本未明确提供。
贡献
欢迎贡献,可提交 Pull Request。当 pyproject.toml 中的 project.version 更新时,包会自动部署到 PyPI。遵循 semver 进行版本管理。请在 PR 中包含版本更新以将更改应用到核心逻辑。