Serveur MCP Kestra
Commit 12 nov. 2026Permet aux clients IA de gérer les workflows, les exécutions, les namespaces, les fichiers et les données KV de Kestra via des appels d'outils (tool calls).
Aussi connu sous kestra-io/mcp-server-python
- Étoiles
- 35
- Outils
- —
- Téléchargements, 30 jours
- —
- Dernière version
- —
- Dernier commit
- 12 nov. 2026
- Licence
- Apache-2.0
Qu'est-ce que Kestra MCP ?
Kestra est un serveur MCP. Permet aux clients IA de gérer les workflows, les exécutions, les namespaces, les fichiers et les données KV de Kestra via des appels d'outils (tool calls).
Résumé généré à partir du README du projet
À propos du MCP server Kestra
Ce serveur permet aux ingénieurs de données et aux spécialistes de l'automatisation de gérer directement les workflows et les données Kestra depuis un client IA. En se connectant à une instance Kestra, les utilisateurs peuvent ordonner à des agents IA de gérer les exécutions, de piloter les namespaces, d'interagir avec les fichiers et de manipuler des données clé-valeur via des appels d'outils spécialisés. Le serveur prend en charge les versions Kestra 1.x et 2.x, en détectant automatiquement la version majeure pour garantir la compatibilité des requêtes API.
Le déploiement est flexible, permettant aux utilisateurs d'exécuter le serveur dans un conteneur Docker pour éviter la gestion des dépendances locales, ou via un environnement Python local avec uv. Pour les utilisateurs de la version Open Source (OSS), l'authentification s'effectue par nom d'utilisateur et mot de passe, tandis que les utilisateurs Enterprise Edition ou Cloud utilisent un jeton API. Le serveur offre un contrôle granulaire grâce aux variables d'environnement, comme KESTRA_MCP_DISABLED_TOOLS pour masquer des fonctionnalités spécifiques, telles que les outils Enterprise Edition ou les fichiers de namespace, au client IA.
Ce que vous pouvez faire avec
- 1Déclencher le traitement de données historiquesDemandez à l'IA d'initier un backfill pour des déclencheurs de workflow spécifiques.
Extrait du README du projet. Chaque cas d'utilisation est vérifié par rapport à une citation du document.
Configuration
KESTRA_API_TOKENKESTRA_API_VERSIONKESTRA_BASE_URLKESTRA_MCP_DISABLED_TOOLSKESTRA_MCP_LOG_LEVELKESTRA_PASSWORDKESTRA_TENANT_IDKESTRA_USERNAME
| Nom | Description | Type |
|---|---|---|
| KESTRA_API_TOKEN | — | |
| KESTRA_API_VERSION | — | |
| KESTRA_BASE_URL | — | |
| KESTRA_MCP_DISABLED_TOOLS | — | |
| KESTRA_MCP_LOG_LEVEL | — | |
| KESTRA_PASSWORD | — | |
| KESTRA_TENANT_ID | — | |
| KESTRA_USERNAME | — |
Vérifications automatisées
Exécuté le 14 nov. 2026Rapport complet →Pas encore vérifié. Un serveur nécessite un score de 80, aucune faille sérieuse et suffisamment de données pour que nous puissions effectuer les vérifications. Fonctionnement des vérifications · Ce qu'il faut corriger pour gagner des points
- Dépôt source lié et accessiblekestra-io/mcp-server-python is public and reachablegithub.com/kestra-io/mcp-server-python ↗Réussi
- Le nom du package correspond au dépôt sourceNon vérifié
- Provenance du build (attestation Sigstore)Non vérifié
- Licence open source (OSI)Apache-2.0spdx.org/licenses/Apache-2.0.html ↗Réussi
- Commit ou version publiée au cours de l'année écouléeLast commit or release 2026-11-12github.com/kestra-io/mcp-server-python ↗Réussi
- OpenSSF ScorecardNon vérifié
- Nom du package non proche d'un package populaireNon vérifié
- Aucun avis critique dans le package ou ses dépendancesNon vérifié
- Aucune instruction cachée destinée au modèle0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersRéussi
- Les outils destructifs sont étiquetésNon vérifié
- Le point de terminaison distant répond à la poignée de main MCPNon vérifié
README
Voir sur GitHubKestra 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.
Questions sur Kestra MCP
Comment connecter le MCP server de Kestra à Cursor ou Claude ?
Ajoutez une entrée kestra à vos paramètres MCP qui exécute l'image Docker ghcr.io/kestra-io/mcp-server-python avec les variables d'environnement KESTRA_BASE_URL et tenant.
Comment authentifier le MCP server de Kestra pour les installations OSS ?
Pour les installations OSS, utilisez l'authentification basique KESTRA_USERNAME et KESTRA_PASSWORD au lieu d'un jeton API.
Comment désactiver les outils de l'Enterprise Edition dans la version OSS ?
Définissez la variable d'environnement KESTRA_MCP_DISABLED_TOOLS sur ee ; vous pouvez lister plusieurs groupes d'outils séparés par des virgules.
Quelles versions de Kestra le MCP server prend-il en charge ?
La même image prend en charge Kestra 1.x et 2.x, en détectant automatiquement la version majeure via l'endpoint API configs ou via KESTRA_API_VERSION.
Puis-je modifier la verbosité des logs du serveur ?
Oui, réglez KESTRA_MCP_LOG_LEVEL sur ERROR (par défaut), WARNING, INFO ou DEBUG.