Kestra MCP server
Commit 12. Nov. 2026Lass AI-Clients Kestra-Workflows, Executions, Namespaces, Dateien und KV-Daten über Tool-Calls verwalten.
Auch bekannt als kestra-io/mcp-server-python
- Stars
- 35
- Tools
- —
- Downloads, 30 Tage
- —
- Neueste Version
- —
- Letzter Commit
- 12. Nov. 2026
- Lizenz
- Apache-2.0
Was ist Kestra MCP?
Kestra ist ein MCP server. Lass AI-Clients Kestra-Workflows, Executions, Namespaces, Dateien und KV-Daten über Tool-Calls verwalten.
Zusammenfassung generiert aus dem README des Projekts
Über Kestra MCP server
Data Engineers und Automatisierungsspezialisten können mit diesem Server Kestra-Workflows und Daten direkt aus einem AI-Client heraus verwalten. Durch die Verbindung zu einer Kestra-Instanz können Nutzer AI-Agents anweisen, Executions zu steuern, Namespaces zu verwalten, mit Dateien zu interagieren und Key-Value-Daten über spezialisierte Tool-Calls zu manipulieren. Der Server unterstützt sowohl Kestra 1.x als auch 2.x Versionen und erkennt die Major-Version automatisch, um kompatible API-Requests zu gewährleisten.
Das Deployment ist flexibel: Nutzer können den Server in einem Docker-Container laufen lassen, um das lokale Dependency-Management zu vermeiden, oder über eine lokale Python-Umgebung mit uv nutzen. Für Open Source Software-Nutzer erfolgt die Authentifizierung über Benutzername und Passwort, während Enterprise Edition oder Cloud-Nutzer ein API-Token verwenden. Der Server bietet granulare Kontrolle über Umgebungsvariablen, wie zum Beispiel KESTRA_MCP_DISABLED_TOOLS, um spezifische Features wie Enterprise Edition Tools oder Namespace-Dateien vor dem AI-Client zu verbergen.
Was du damit machen kannst
- 1Historische Datenverarbeitung triggernFordere die AI auf, einen Backfill für spezifische Workflow-Trigger zu starten.
Geschrieben aus dem README des Projekts. Jeder Use Case wurde gegen ein Zitat daraus geprüft.
Konfiguration
KESTRA_API_TOKENKESTRA_API_VERSIONKESTRA_BASE_URLKESTRA_MCP_DISABLED_TOOLSKESTRA_MCP_LOG_LEVELKESTRA_PASSWORDKESTRA_TENANT_IDKESTRA_USERNAME
| Name | Beschreibung | Typ |
|---|---|---|
| KESTRA_API_TOKEN | — | |
| KESTRA_API_VERSION | — | |
| KESTRA_BASE_URL | — | |
| KESTRA_MCP_DISABLED_TOOLS | — | |
| KESTRA_MCP_LOG_LEVEL | — | |
| KESTRA_PASSWORD | — | |
| KESTRA_TENANT_ID | — | |
| KESTRA_USERNAME | — |
Automatisierte Checks
Geluften am 14. Nov. 2026Vollständiger Bericht →Noch nicht verifiziert. Ein Server benötigt einen Score von 80, keine kritischen Befunde und genug Daten für unsere Prüfung. Wie die Checks funktionieren · Was du für mehr Punkte verbessern kannst
- Source Repository verknüpft und erreichbarkestra-io/mcp-server-python is public and reachablegithub.com/kestra-io/mcp-server-python ↗Bestanden
- Paket nennt dieses Repository als QuelleNicht geprüft
- Build-Provenienz (Sigstore-Attestierung)Nicht geprüft
- Open Source Lizenz (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗Bestanden
- Commit oder Release im letzten JahrLast commit or release 2026-11-12github.com/kestra-io/mcp-server-python ↗Bestanden
- OpenSSF ScorecardNicht geprüft
- Package-Name ähnelt keinem populären PackageNicht geprüft
- Keine kritischen Advisories im Paket oder seinen AbhängigkeitenNicht geprüft
- Keine versteckten Anweisungen an das Modell0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersBestanden
- Destruktive Tools sind markiertNicht geprüft
- Remote-Endpoint beantwortet den MCP-HandshakeNicht geprüft
README
Auf GitHub ansehenKestra Python MCP Server
You can run the MCP Server in a Docker container. This is useful if you want to avoid managing Python environments or dependencies on your local machine.
Using Kestra AI Agent
See kestra_mcp_docker.
Minimal configuration for OSS users
Paste the following configuration into your MCP settings (e.g., Cursor, Claude, or 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"
}
}
}
}
Minimal configuration for EE users
{
"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"
}
}
}
}
Detailed Configuration using 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",
"-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"
}
}
}
}
Notes:
- Replace
<your_kestra_api_token>,<your_google_api_key>, and<your_helicone_api_key>with your actual credentials. - For OSS installations, you can use
KESTRA_USERNAMEandKESTRA_PASSWORDinstead ofKESTRA_API_TOKEN. - To disable Enterprise Edition tools in OSS, set
KESTRA_MCP_DISABLED_TOOLS=ee. - The
host.docker.internalhostname allows the Docker container to access services running on your host machine (such as the Kestra API server on port 8080). This works on macOS and Windows. On Linux, you may need to use the host network mode or set up a custom bridge. - The
-eflags pass environment variables from your MCP configuration into the Docker container.
Kestra version support
Both Kestra 1.x and Kestra 2.x are supported by the same image, and nothing has to be configured for either.
Several endpoints were changed in Kestra 2.0. The execution actions were moved under /actions/, the per-endpoint search parameters were replaced by the unified filters[field][OPERATION] model, backfill creation was moved to /triggers/backfill/create, and KV listing was moved to GET /kv. A 1.x query parameter sent to a 2.x server is ignored rather than rejected, so a request can appear to succeed while the results come back unfiltered.
The server version is read once from GET /api/v1/configs on the first tool call and every request is then built for that major. Where that endpoint is unreachable, behind a proxy that does not forward it for instance, the major can be set explicitly:
# 1, 2, or a full version such as 1.3.3 or 2.0.1
KESTRA_API_VERSION=2
Two differences between the majors remain visible in the tool output:
- Dashboards - from 2.0 on, dashboards can only be created over the API in the Enterprise Edition, so
generate_dashboardwithauto_createreturns the generated YAML together with a warning on OSS 2.x. - Namespace file moves - on Kestra 2.x, a file written to a path that was previously moved away is stored under a versioned name, and a later move of that path fails with a 500. The error is reported with the suggestion to delete and re-upload instead.
Available Tools
- 🔄 backfill
- ⚙️ ee (Enterprise Edition tools)
- ▶️ execution
- 📁 files
- 🔀 flow
- 🗝️ kv
- 📋 logs
- 🌐 namespace
- 🔁 replay
- ♻️ restart
- ⏸️ resume
Note: The ee tool group contains Enterprise Edition specific functionality and is only available in EE/Cloud editions. For OSS users, you can disable EE tools by adding KESTRA_MCP_DISABLED_TOOLS=ee to your .env file.
Optionally, you can include KESTRA_MCP_DISABLED_TOOLS in your .env file listing the tools that you prefer to disable. For example, if you want to disable Namespace Files tools, add this to your .env file:
KESTRA_MCP_DISABLED_TOOLS=files
To disable multiple tools, separate them with comma:
KESTRA_MCP_DISABLED_TOOLS=ee
Logging Configuration
By default, the MCP server only logs ERROR level messages to minimize noise. You can control the logging level using the KESTRA_MCP_LOG_LEVEL environment variable:
# Only show ERROR messages (default)
KESTRA_MCP_LOG_LEVEL=ERROR
# Show WARNING and ERROR messages
KESTRA_MCP_LOG_LEVEL=WARNING
# Show INFO, WARNING, and ERROR messages
KESTRA_MCP_LOG_LEVEL=INFO
# Show all messages including DEBUG
KESTRA_MCP_LOG_LEVEL=DEBUG
When using Docker, add the environment variable to your MCP configuration:
{
"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"
}
}
}
}
Local development
To run the MCP Server for Kestra locally (e.g. if you want to extend it with new tools), make sure to create a virtual environment first:
uv venv --python 3.13
uv pip install -r requirements.txt
Create an .env file in the root directory of the project similar to the .env_example file. For OSS installations, you can use basic authentication with KESTRA_USERNAME and KESTRA_PASSWORD. For EE/Cloud installations, use KESTRA_API_TOKEN. To disable Enterprise Edition tools in OSS, add KESTRA_MCP_DISABLED_TOOLS=ee to your .env file.
Then, follow the instructions below explaining how to test your local server in Cursor, Windsurf, VS Code or Claude Desktop.
Usage in Cursor, Windsurf, VS Code or Claude Desktop
To use the Python MCP Server with Claude or modern IDEs, first check what is the path to uv on your machine:
which uv
Copy the path returned by which uv and paste it into the command section.
Then, replace the --directory by the path where you cloned the Kestra MCP Server repository. For example:
{
"mcpServers": {
"kestra": {
"command": "/Users/annageller/.local/bin/uv",
"args": [
"--directory",
"/Users/annageller/gh/mcp-server-python/src",
"run",
"server.py"
]
}
}
}
You can paste that in the Cursor MCP settings or Claud Developer settings.
VS Code setup
In your VS Code project directory, add a folder .vscode and within that folder, create a file called mcp.json. Paste your MCP configuration into that file (note that in VS Code, the key is servers instead of mcpServers):
{
"servers": {
"kestra": {
"command": "/Users/annageller/.local/bin/uv",
"args": [
"--directory",
"/Users/annageller/gh/mcp-server-python/src",
"run",
"server.py"
]
}
}
}
A small Start button should show up, click on it to start the server.

If you now navigate to the GitHub Copilot tab and switch to the Agent mode, you will be able to directly interact with the Kestra MCP Server tools. For example, try typing the prompt: "List all flows in the tutorial namespace".

If you click on continue, you will see the result of the command in the output window.

FAQ
Question: Do I have to manually start the server as an always-on process?
No, you don't have to run the server manually, as when using the stdio transport, the AI IDEs/chat-interfaces (Cursor, Windsurf, VS Code or Claude Desktop) launch the MCP server as a subprocess. This subprocess communicates with AI IDEs via JSON-RPC messages over standard input and output streams. The server receives messages through stdin and sends responses through stdout.
Question: Do I have to manually activate the virtual environment for the MCP Server?
No, because we use uv. Unlike traditional Python package managers, where virtual environment activation modifies shell variables like PATH, uv directly uses the Python interpreter and packages from the .venv directory without requiring environment variables to be set first. Just make sure you have created a uv virtual environment with uv venv and installed the required packages with uv pip install as described in the previous section.
Kestra MCP Fragen
Wie verbinde ich den Kestra MCP server mit Cursor oder Claude?
Füge einen kestra-Eintrag zu deinen MCP-Settings hinzu, der das Docker-Image ghcr.io/kestra-io/mcp-server-python mit den Umgebungsvariablen KESTRA_BASE_URL und tenant ausführt.
Wie authentifiziere ich den Kestra MCP server bei einer OSS-Installation?
Nutze bei OSS-Installationen die Basic Authentication über KESTRA_USERNAME und KESTRA_PASSWORD anstelle eines API-Tokens.
Wie deaktiviere ich Enterprise Edition Tools in der OSS-Version?
Setze die Umgebungsvariable KESTRA_MCP_DISABLED_TOOLS auf ee; du kannst mehrere Tool-Gruppen durch Kommata getrennt auflisten.
Welche Kestra-Versionen unterstützt der MCP server?
Dasselbe Image unterstützt sowohl Kestra 1.x als auch 2.x, wobei die Major-Version automatisch über den API configs endpoint oder via KESTRA_API_VERSION erkannt wird.
Kann ich die Log-Verbosity des Servers ändern?
Ja, setze KESTRA_MCP_LOG_LEVEL auf ERROR (Standard), WARNING, INFO oder DEBUG.