Back to MCP Servers

Kestra MCP Server

Official MCP server for Kestra workflow orchestration. Manage flows, executions, logs, files, backfills, replays, namespaces, and KV storage via AI agents.

Automation by Kestra Basic Auth or API Key active
Overview

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.
Setup Guide

Prerequisites

  • Docker installed (recommended) or Python 3.13+ with uv for 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/v1
  • KESTRA_TENANT_ID: Tenant id, usually main
  • KESTRA_USERNAME + KESTRA_PASSWORD: OSS Basic Auth credentials
  • KESTRA_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, or DEBUG

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.

Use Cases
  • 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.
Example Prompts
  • "List all flows in the prod.data namespace and show which ones failed in the last 24 hours."
  • "Trigger the etl.daily_ingest flow with input date=2026-05-13 and tail the logs until it finishes."
  • "Backfill the analytics.hourly_rollup flow from 2026-05-01 to 2026-05-10."
  • "Get the failing task logs for execution abc123 and suggest a fix to the flow YAML."
  • "Set the KV key feature_flag.new_pricing to true in the prod namespace."
Pros
  • 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_TOOLS for security or scoping.
Limitations
  • Requires Docker or a Python 3.13 environment, which adds setup overhead compared to pure remote MCP servers.
  • The ee tool group only works on Enterprise Edition or Kestra Cloud; OSS users should disable it.
  • Networking quirks on Linux: host.docker.internal does not work out of the box and may need host network mode.
Alternatives
  • 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-fetch when only lightweight access is needed.