您可以在Docker容器中运行MCP服务器。这在您希望避免管理本地机器上的Python环境或依赖项时非常有用。
将以下配置粘贴到您的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",
"-e",
"KESTRA_MCP_LOG_LEVEL",
"-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_MCP_LOG_LEVEL": "ERROR",
"KESTRA_USERNAME": "admin@kestra.io",
"KESTRA_PASSWORD": "your_password"
}
}
}
}
{
"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_LOG_LEVEL",
"ghcr.io/kestra-io/mcp-server-python:latest"
],
"env": {
"KESTRA_BASE_URL": "http://host.docker.internal:8080/api/v1",
"KESTRA_API_TOKEN": "<your_kestra_api_token>",
"KESTRA_TENANT_ID": "main",
"KESTRA_MCP_LOG_LEVEL": "ERROR"
}
}
}
}
{
"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",
"-e", "KESTRA_MCP_LOG_LEVEL",
"ghcr.io/kestra-io/mcp-server-python:latest"
],
"env": {
"KESTRA_BASE_URL": "http://host.docker.internal:8080/api/v1",
"KESTRA_API_TOKEN": "<your_kestra_api_token>",
"KESTRA_TENANT_ID": "main",
"KESTRA_USERNAME": "admin",
"KESTRA_PASSWORD": "admin",
"KESTRA_MCP_DISABLED_TOOLS": "ee",
"KESTRA_MCP_LOG_LEVEL": "ERROR"
}
}
}
}
注意:
<your_kestra_api_token>、<your_google_api_key>和<your_helicone_api_key>替换为您实际的凭证。KESTRA_USERNAME和KESTRA_PASSWORD而不是KESTRA_API_TOKEN。KESTRA_MCP_DISABLED_TOOLS=ee。host.docker.internal主机名允许Docker容器访问主机上运行的服务(如端口8080上的Kestra API服务器)。这在macOS和Windows上有效。在Linux上,您可能需要使用主机网络模式或设置自定义桥接。-e标志将您的MCP配置中的环境变量传递给Docker容器。注意: ee工具组包含特定于企业版的功能,并且仅在EE/云版本中可用。对于OSS用户,您可以通过在.env文件中添加KESTRA_MCP_DISABLED_TOOLS=ee来禁用EE工具。
可选地,您可以在.env文件中包含KESTRA_MCP_DISABLED_TOOLS列出您希望禁用的工具。例如,如果您想禁用命名空间文件工具,可以将以下内容添加到您的.env文件中:
KESTRA_MCP_DISABLED_TOOLS=files
要禁用多个工具,请用逗号分隔它们:
KESTRA_MCP_DISABLED_TOOLS=ee
默认情况下,MCP服务器仅记录错误级别的消息以减少噪音。您可以使用KESTRA_MCP_LOG_LEVEL环境变量控制日志级别:
# 仅显示错误消息(默认)
KESTRA_MCP_LOG_LEVEL=ERROR
# 显示警告和错误消息
KESTRA_MCP_LOG_LEVEL=WARNING
# 显示信息、警告和错误消息
KESTRA_MCP_LOG_LEVEL=INFO
# 显示所有消息,包括调试
KESTRA_MCP_LOG_LEVEL=DEBUG
当使用Docker时,将环境变量添加到您的MCP配置中:
{
"mcpServers": {
"kestra": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--pull",
"always",
"-e", "KESTRA_BASE_URL",
"-e", "KESTRA_MCP_LOG_LEVEL",
"ghcr.io/kestra-io/mcp-server-python:latest"
],
"env": {
"KESTRA_BASE_URL": "http://host.docker.internal:8080/api/v1",
"KESTRA_MCP_LOG_LEVEL": "ERROR"
}
}
}
}
要在本地运行Kestra的MCP服务器(例如,如果您想要通过添加新工具进行扩展),首先确保创建一个虚拟环境:
uv venv --python 3.13
uv pip install -r requirements.txt
在项目根目录下创建一个.env文件,类似于.env_example文件。对于OSS安装,您可以使用基本认证与KESTRA_USERNAME和KESTRA_PASSWORD。对于EE/云安装,使用KESTRA_API_TOKEN。要在OSS中禁用企业版工具,请在.env文件中添加KESTRA_MCP_DISABLED_TOOLS=ee。
然后,按照以下说明操作,了解如何在Cursor、Windsurf、VS Code或Claude Desktop中测试您的本地服务器。
要使用Python MCP服务器与Claude或现代IDE,首先检查您的机器上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设置或Claude开发者设置中。
在您的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"
]
}
}
}
一个小的“开始”按钮应该会出现,点击它启动服务器。

现在,如果您导航到GitHub Copilot标签并切换到代理模式,您将能够直接与Kestra MCP服务器工具交互。例如,尝试输入提示:“列出教程命名空间中的所有流程”。

如果您点击继续,您将在输出窗口中看到命令的结果。

问题:我必须手动启动服务器作为持续运行的过程吗?
不,您不需要手动运行服务器,因为当使用stdio传输时,AI IDEs/聊天界面(如Cursor、Windsurf、VS Code或Claude Desktop)会作为子进程启动MCP服务器。这个子进程通过标准输入和输出流上的JSON-RPC消息与AI IDEs通信。服务器通过stdin接收消息并通过stdout发送响应。
问题:我必须手动激活MCP服务器的虚拟环境吗?
不,因为我们使用了uv。与传统的Python包管理器不同,传统的虚拟环境激活会修改shell变量如PATH,而uv直接使用.venv目录中的Python解释器和包,无需先设置环境变量。只需确保您已使用uv venv创建了一个uv虚拟环境,并使用uv pip install安装了所需的包,如前一节所述。