Kestra MCP Server
Official MCP server for Kestra workflow orchestration. Manage flows, executions, logs, files, backfills, replays, namespaces, and KV storage via AI agents.
The Kestra MCP server is the official Model Context Protocol implementation maintained by Kestra, the open-source workflow orchestration platform. It lets AI assistants and agent-mode IDEs interact with a running Kestra instance to inspect, trigger, and manage flows, executions, and related resources without writing direct API calls. The server is designed to be used inside Kestra's own AI Agents as well as external clients like Claude Desktop, Cursor, Windsurf, and VS Code Copilot.
The server exposes eleven tool groups covering the core Kestra surface area: flow for flow CRUD and execution, execution for triggering and monitoring runs, backfill for replaying missed schedule intervals, replay and restart for re-running historical executions, resume for paused workflows, logs for log retrieval, files for namespace file system operations, kv for key-value store access, namespace for namespace management, and ee for Enterprise Edition-only capabilities. Tool groups can be selectively disabled via the KESTRA_MCP_DISABLED_TOOLS environment variable, which is useful for OSS users who want to hide the ee group.
It ships as a Python package distributed primarily as a Docker image (ghcr.io/kestra-io/mcp-server-python) and communicates over stdio. Authentication supports both Basic Auth (username/password for OSS) and API token (Enterprise/Cloud), making it usable against self-hosted Kestra installations as well as Kestra Cloud.
Tools
| Tool | Description |
|---|---|
flow |
Manage Kestra flows: create, update, retrieve, list, validate, and delete flow definitions. |
execution |
Trigger, inspect, and control executions of flows; query status, inputs, and outputs. |
backfill |
Create and manage backfills to replay missed schedule intervals between a start and end date across selected flows or namespaces. |
replay |
Replay a past execution from a given task or from the start to reproduce or debug a run. |
restart |
Restart a failed execution from the failed task or from the beginning. |
resume |
Resume executions that are paused, for example after a manual approval task. |
logs |
Fetch logs for an execution or task run with filtering by level and time range. |
files |
Read, write, list, and delete files in a Kestra namespace file system. |
kv |
Get, set, list, and delete entries in the Kestra namespace KV store. |
namespace |
List and manage namespaces and their settings. |
ee |
Enterprise Edition only tools for advanced features (apps, worker groups, tenants, etc.). Disabled automatically on OSS. |
Prerequisites
- Docker installed (recommended) or Python 3.13+ with
uvfor local runs - A running Kestra instance reachable from the MCP host
- Credentials: OSS username/password or an Enterprise/Cloud API token
Pull the image
docker pull ghcr.io/kestra-io/mcp-server-python:latest
Claude Desktop / Cursor config (OSS, Basic Auth)
Add to claude_desktop_config.json (or the equivalent MCP config for your client):
{
"mcpServers": {
"kestra": {
"command": "docker",
"args": [
"run", "-i", "--rm", "--pull", "always",
"-e", "KESTRA_BASE_URL",
"-e", "KESTRA_USERNAME",
"-e", "KESTRA_PASSWORD",
"-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_USERNAME": "admin@kestra.io",
"KESTRA_PASSWORD": "your_password",
"KESTRA_TENANT_ID": "main",
"KESTRA_MCP_DISABLED_TOOLS": "ee"
}
}
}
}
Enterprise Edition / Kestra Cloud
Replace KESTRA_USERNAME and KESTRA_PASSWORD with KESTRA_API_TOKEN:
"env": {
"KESTRA_BASE_URL": "https://your-instance.kestra.io/api/v1",
"KESTRA_API_TOKEN": "your_api_token",
"KESTRA_TENANT_ID": "main"
}
Environment variables
KESTRA_BASE_URL: Kestra API root, e.g.http://host.docker.internal:8080/api/v1KESTRA_TENANT_ID: Tenant id, usuallymainKESTRA_USERNAME+KESTRA_PASSWORD: OSS Basic Auth credentialsKESTRA_API_TOKEN: Enterprise/Cloud API token (alternative to username/password)KESTRA_MCP_DISABLED_TOOLS: Comma-separated tool groups to disable (e.g.ee)KESTRA_MCP_LOG_LEVEL:ERROR,WARNING,INFO, orDEBUG
Local development (alternative to Docker)
git clone https://github.com/kestra-io/mcp-server-python
cd mcp-server-python
uv venv --python 3.13
uv pip install -r requirements.txt
On Linux, host.docker.internal may need to be replaced with the host IP or run with --network=host.
- Trigger a Kestra flow with custom inputs from a chat conversation and stream its execution status back to the agent.
- Investigate a failed pipeline by fetching logs for the failing task run and proposing a fix to the flow YAML.
- Run a backfill across a date range when an upstream data source had an outage, scoped to specific namespaces.
- Read and write entries in the namespace KV store to feed runtime configuration into flows without redeploying.
- Restart or replay past executions from a specific task during debugging instead of clicking through the Kestra UI.
- "List all flows in the
prod.datanamespace and show which ones failed in the last 24 hours." - "Trigger the
etl.daily_ingestflow with inputdate=2026-05-13and tail the logs until it finishes." - "Backfill the
analytics.hourly_rollupflow from 2026-05-01 to 2026-05-10." - "Get the failing task logs for execution
abc123and suggest a fix to the flow YAML." - "Set the KV key
feature_flag.new_pricingtotruein theprodnamespace."
- Official server maintained by the Kestra team, kept in sync with Kestra releases.
- Broad coverage across flows, executions, backfills, replays, logs, files, and KV store.
- Works against both OSS (Basic Auth) and Enterprise/Cloud (API token) deployments.
- Granular tool disabling via
KESTRA_MCP_DISABLED_TOOLSfor security or scoping.
- Requires Docker or a Python 3.13 environment, which adds setup overhead compared to pure remote MCP servers.
- The
eetool group only works on Enterprise Edition or Kestra Cloud; OSS users should disable it. - Networking quirks on Linux:
host.docker.internaldoes not work out of the box and may need host network mode.
- Airflow MCP servers for teams using Apache Airflow instead of Kestra.
- Prefect community MCP integrations for Prefect-based orchestration.
- Calling the Kestra REST API directly from a generic HTTP MCP server such as
mcp-server-fetchwhen only lightweight access is needed.