Python MCP server for Kestra that exposes workflow orchestration actions as tools, also usable inside Kestra AI agents.
接入配置
选择客户端,复制配置,再按项目文档补齐环境变量。
claude mcp add kestra-server-python --env KESTRA_API_TOKEN='<KESTRA_API_TOKEN>' --env KESTRA_BASE_URL='<KESTRA_BASE_URL>' --env KESTRA_MCP_DISABLED_TOOLS='<KESTRA_MCP_DISABLED_TOOLS>' --env KESTRA_MCP_LOG_LEVEL='<KESTRA_MCP_LOG_LEVEL>' --env KESTRA_PASSWORD='<KESTRA_PASSWORD>' --env KESTRA_TENANT_ID='<KESTRA_TENANT_ID>' --env KESTRA_USERNAME='<KESTRA_USERNAME>' -- docker 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~/.codex/config.toml
[mcp_servers.kestra-server-python]
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_API_TOKEN = "<KESTRA_API_TOKEN>", KESTRA_BASE_URL = "<KESTRA_BASE_URL>", KESTRA_MCP_DISABLED_TOOLS = "<KESTRA_MCP_DISABLED_TOOLS>", KESTRA_MCP_LOG_LEVEL = "<KESTRA_MCP_LOG_LEVEL>", KESTRA_PASSWORD = "<KESTRA_PASSWORD>", KESTRA_TENANT_ID = "<KESTRA_TENANT_ID>", KESTRA_USERNAME = "<KESTRA_USERNAME>" }
# codex mcp add kestra-server-python --env KESTRA_API_TOKEN='<KESTRA_API_TOKEN>' --env KESTRA_BASE_URL='<KESTRA_BASE_URL>' --env KESTRA_MCP_DISABLED_TOOLS='<KESTRA_MCP_DISABLED_TOOLS>' --env KESTRA_MCP_LOG_LEVEL='<KESTRA_MCP_LOG_LEVEL>' --env KESTRA_PASSWORD='<KESTRA_PASSWORD>' --env KESTRA_TENANT_ID='<KESTRA_TENANT_ID>' --env KESTRA_USERNAME='<KESTRA_USERNAME>' -- docker 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~/.cursor/mcp.json
{
"mcpServers": {
"kestra-server-python": {
"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_API_TOKEN": "<KESTRA_API_TOKEN>",
"KESTRA_BASE_URL": "<KESTRA_BASE_URL>",
"KESTRA_MCP_DISABLED_TOOLS": "<KESTRA_MCP_DISABLED_TOOLS>",
"KESTRA_MCP_LOG_LEVEL": "<KESTRA_MCP_LOG_LEVEL>",
"KESTRA_PASSWORD": "<KESTRA_PASSWORD>",
"KESTRA_TENANT_ID": "<KESTRA_TENANT_ID>",
"KESTRA_USERNAME": "<KESTRA_USERNAME>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"kestra-server-python": {
"type": "stdio",
"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_API_TOKEN": "<KESTRA_API_TOKEN>",
"KESTRA_BASE_URL": "<KESTRA_BASE_URL>",
"KESTRA_MCP_DISABLED_TOOLS": "<KESTRA_MCP_DISABLED_TOOLS>",
"KESTRA_MCP_LOG_LEVEL": "<KESTRA_MCP_LOG_LEVEL>",
"KESTRA_PASSWORD": "<KESTRA_PASSWORD>",
"KESTRA_TENANT_ID": "<KESTRA_TENANT_ID>",
"KESTRA_USERNAME": "<KESTRA_USERNAME>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"kestra-server-python": {
"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_API_TOKEN": "<KESTRA_API_TOKEN>",
"KESTRA_BASE_URL": "<KESTRA_BASE_URL>",
"KESTRA_MCP_DISABLED_TOOLS": "<KESTRA_MCP_DISABLED_TOOLS>",
"KESTRA_MCP_LOG_LEVEL": "<KESTRA_MCP_LOG_LEVEL>",
"KESTRA_PASSWORD": "<KESTRA_PASSWORD>",
"KESTRA_TENANT_ID": "<KESTRA_TENANT_ID>",
"KESTRA_USERNAME": "<KESTRA_USERNAME>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"kestra-server-python": {
"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_API_TOKEN": "<KESTRA_API_TOKEN>",
"KESTRA_BASE_URL": "<KESTRA_BASE_URL>",
"KESTRA_MCP_DISABLED_TOOLS": "<KESTRA_MCP_DISABLED_TOOLS>",
"KESTRA_MCP_LOG_LEVEL": "<KESTRA_MCP_LOG_LEVEL>",
"KESTRA_PASSWORD": "<KESTRA_PASSWORD>",
"KESTRA_TENANT_ID": "<KESTRA_TENANT_ID>",
"KESTRA_USERNAME": "<KESTRA_USERNAME>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"kestra-server-python": {
"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_API_TOKEN": "<KESTRA_API_TOKEN>",
"KESTRA_BASE_URL": "<KESTRA_BASE_URL>",
"KESTRA_MCP_DISABLED_TOOLS": "<KESTRA_MCP_DISABLED_TOOLS>",
"KESTRA_MCP_LOG_LEVEL": "<KESTRA_MCP_LOG_LEVEL>",
"KESTRA_PASSWORD": "<KESTRA_PASSWORD>",
"KESTRA_TENANT_ID": "<KESTRA_TENANT_ID>",
"KESTRA_USERNAME": "<KESTRA_USERNAME>"
}
}
}
}需要的环境变量
KESTRA_API_TOKENKESTRA_BASE_URLKESTRA_MCP_DISABLED_TOOLSKESTRA_MCP_LOG_LEVELKESTRA_PASSWORDKESTRA_TENANT_IDKESTRA_USERNAME
把占位值换成你自己的密钥;不要把密钥提交到代码仓库。