Mcp Server Python

Mcp Server Python

🚀 Kestra Python MCP Server

Kestra Python MCP Server 是一个用于 Kestra 的工具,可在 Docker 容器中运行,为用户提供便捷的任务处理和管理功能。它支持不同版本的 Kestra,包括开源版(OSS)和企业版(EE),并提供了丰富的工具集,方便用户进行任务回填、执行、文件管理等操作。

🚀 快速开始

你可以在 Docker 容器中运行 MCP 服务器。如果你想避免在本地机器上管理 Python 环境或依赖项,这将非常有用。

📦 安装指南

OSS 用户的最小配置

将以下配置粘贴到你的 MCP 设置中(例如 Cursor、Claude 或 VS Code):

{
"mcpServers": {
"kestra": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--pull",
"always",
"-e", "KESTRA_BASE_URL",
"-e", "KESTRA_TENANT_ID",
"-e", "KESTRA_MCP_DISABLED_TOOLS",
"ghcr.io/kestra-io/mcp-server-python:latest"
],
"env": {
"KESTRA_BASE_URL": "http://host.docker.internal:8080/api/v1",
"KESTRA_TENANT_ID": "main",
"KESTRA_MCP_DISABLED_TOOLS": "ee"
}
}
}
}

如果你启用了基本身份验证,请使用:

{
"mcpServers": {
"kestra": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--pull",
"always",
"-e",
"KESTRA_MCP_DISABLED_TOOLS",
"-e",
"KESTRA_BASE_URL",
"-e",
"KESTRA_TENANT_ID",
"-e",
"KESTRA_USERNAME",
"-e",
"KESTRA_PASSWORD",
"ghcr.io/kestra-io/mcp-server-python:latest"
],
"env": {
"KESTRA_BASE_URL": "http://host.docker.internal:8080/api/v1",
"KESTRA_TENANT_ID": "main",
"KESTRA_MCP_DISABLED_TOOLS": "ee",
"KESTRA_USERNAME": "admin@kestra.io",
"KESTRA_PASSWORD": "your_password"
}
}
}
}

EE 用户的最小配置

{
"mcpServers": {
"kestra": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--pull",
"always",
"-e", "KESTRA_BASE_URL",
"-e", "KESTRA_API_TOKEN",
"-e", "KESTRA_TENANT_ID",
"-e", "KESTRA_MCP_DISABLED_TOOLS",
"ghcr.io/kestra-io/mcp-server-python:latest"
],
"env": {
"KESTRA_BASE_URL": "http://host.docker.internal:8080/api/v1",
"KESTRA_API_TOKEN": "",
"KESTRA_TENANT_ID": "main"
}
}
}
}

使用 Docker 的详细配置

{
"mcpServers": {
"kestra": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--pull",
"always",
"-e", "KESTRA_BASE_URL",
"-e", "KESTRA_API_TOKEN",
"-e", "KESTRA_TENANT_ID",
"-e", "KESTRA_USERNAME",
"-e", "KESTRA_PASSWORD",
"-e", "KESTRA_MCP_DISABLED_TOOLS",
"ghcr.io/kestra-io/mcp-server-python:latest"
],
"env": {
"KESTRA_BASE_URL": "http://host.docker.internal:8080/api/v1",
"KESTRA_API_TOKEN": "",
"KESTRA_TENANT_ID": "main",
"KESTRA_USERNAME": "admin",
"KESTRA_PASSWORD": "admin",
"KESTRA_MCP_DISABLED_TOOLS": "ee"
}
}
}
}

⚠️ 重要提示

  • 请将 替换为你实际的凭证。
  • 对于 OSS 安装,你可以使用 KESTRA_USERNAMEKESTRA_PASSWORD 代替 KESTRA_API_TOKEN
  • 要在 OSS 中禁用企业版工具,请设置 KESTRA_MCP_DISABLED_TOOLS=ee
  • host.docker.internal 主机名允许 Docker 容器访问运行在你主机上的服务(例如端口 8080 上的 Kestra API 服务器)。这在 macOS 和 Windows 上有效。在 Linux 上,你可能需要使用主机网络模式或设置自定义桥接。
  • -e 标志将 MCP 配置中的环境变量传递到 Docker 容器中。

✨ 主要特性

可用工具

  • 🔄 backfill:回填任务
  • ⚙️ ee(企业版工具)
  • ▶️ execution:执行任务
  • 📁 files:文件管理
  • 🔀 flow:流程管理
  • 🗝️ kv:键值存储
  • 🌐 namespace:命名空间管理
  • 🔁 replay:重放任务
  • ♻️ restart:重启任务
  • ⏸️ resume:恢复任务

⚠️ 重要提示

ee 工具组包含企业版特定功能,仅在 EE/Cloud 版本中可用。对于 OSS 用户,你可以通过在 .env 文件中添加 KESTRA_MCP_DISABLED_TOOLS=ee 来禁用 EE 工具。

你可以选择在 .env 文件中包含 KESTRA_MCP_DISABLED_TOOLS,列出你想要禁用的工具。例如,如果你想禁用命名空间文件工具,请在 .env 文件中添加:

KESTRA_MCP_DISABLED_TOOLS=files

要禁用多个工具,请用逗号分隔:

KESTRA_MCP_DISABLED_TOOLS=ee

💻 使用示例

本地开发

要在本地运行 Kestra 的 MCP 服务器(例如,如果你想使用新工具扩展它),请确保首先创建一个虚拟环境:

uv venv --python 3.13
uv pip install -r requirements.txt

在项目的根目录下创建一个 .env 文件,类似于 .env_example 文件。对于 OSS 安装,你可以使用 KESTRA_USERNAMEKESTRA_PASSWORD 进行基本身份验证。对于 EE/Cloud 安装,请使用 KESTRA_API_TOKEN。要在 OSS 中禁用企业版工具,请在 .env 文件中添加 KESTRA_MCP_DISABLED_TOOLS=ee

在 Cursor、Windsurf、VS Code 或 Claude Desktop 中使用

要在 Claude 或现代 IDE 中使用 Python MCP 服务器,首先检查你机器上 uv 的路径:

which uv

复制 which uv 返回的路径,并将其粘贴到 command 部分。然后,将 --directory 替换为你克隆 Kestra MCP 服务器存储库的路径。例如:

{
"mcpServers": {
"kestra": {
"command": "/Users/annageller/.local/bin/uv",
"args": [
"--directory",
"/Users/annageller/gh/mcp-server-python/src",
"run",
"server.py"
]
}
}
}

你可以将其粘贴到 Cursor MCP 设置或 Claud 开发者设置中。

VS Code 设置

在你的 VS Code 项目目录中,添加一个 .vscode 文件夹,并在该文件夹中创建一个名为 mcp.json 的文件。将你的 MCP 配置粘贴到该文件中(注意,在 VS Code 中,键是 servers 而不是 mcpServers):

{
"servers": {
"kestra": {
"command": "/Users/annageller/.local/bin/uv",
"args": [
"--directory",
"/Users/annageller/gh/mcp-server-python/src",
"run",
"server.py"
]
}
}
}

会出现一个小的 Start 按钮,点击它启动服务器。 如果你现在导航到 GitHub Copilot 选项卡并切换到代理模式,你将能够直接与 Kestra MCP 服务器工具进行交互。例如,尝试输入提示:“列出教程命名空间中的所有流程”。 如果你点击继续,你将在输出窗口中看到命令的结果。

使用 Kestra MCP 服务器与 Google Agent SDK (ADK)

要启动 Agent Development UI,请运行以下命令:

source .venv/bin/activate
cd agents/
adk web

然后,从代理下拉列表中选择 google-mcp-client 并开始发送提示以与 Kestra MCP 服务器进行交互。

建议启用 “Token Streaming” 切换开关,以便在生成响应时进行流式传输。

如需更多信息,请查看官方 adk-python 存储库。对于 Java 开发者,有一个等效的 adk-java

使用 Kestra MCP 服务器与 OpenAI Agent SDK

假设在 company 命名空间中有以下 Kestra 流程: 你可以从项目根目录运行以下命令,将所有这些依赖项可视化为 ASCII 图:

uv run agents/openai-mcp-client/agent.py -p 'List dependencies for the namespace company'

你应该会看到类似的输出:

Here's the dependency graph for the namespace `company`:

flow1 ────▶ flow2
            flow2 ────▶ flow3b
flow3b ────▶ flow4
flow4 ────▶ flow5
flow5 ────▶ flow6
flow6
flow2 ────▶ flow3c
flow3c ────▶ flow4
flow3c ====▶ flow3
flow3
flow2 ────▶ flow3a
flow3a ────▶ flow4
goodbye
hello
scheduled_flow

**Legend:**
- `────▶` FLOW_TRIGGER  (基于流程触发的依赖)
- `====▶` FLOW_TASK     (基于子流程任务的依赖)

没有箭头列出的流程在此命名空间中没有依赖项。

📚 详细文档

常见问题解答

问题:我是否需要手动将服务器作为始终运行的进程启动? 不需要,当使用 stdio 传输时,AI IDE/聊天界面(Cursor、Windsurf、VS Code 或 Claude Desktop)会将 MCP 服务器作为子进程启动。这个子进程通过标准输入和输出流上的 JSON-RPC 消息与 AI IDE 进行通信。服务器通过 stdin 接收消息并通过 stdout 发送响应。

问题:我是否需要手动激活 MCP 服务器的虚拟环境? 不需要,因为我们使用 uv。与传统的 Python 包管理器不同,传统的虚拟环境激活会修改 PATH 等 shell 变量,而 uv 直接使用 .venv 目录中的 Python 解释器和包,无需先设置环境变量。只需确保你已经使用 uv venv 创建了 uv 虚拟环境,并使用 uv pip install 安装了所需的包,如前面部分所述。

  • 0 关注
  • 0 收藏,12 浏览
  • system 提出于 2025-10-05 18:03

相似服务问题

相关AI产品