🚀 Kestra Python MCP Server
Kestra MCP Serverは、Kestraの機能を拡張するためのサーバーです。このサーバーを使用することで、Kestraのワークフローをより柔軟に制御し、様々なツールを利用することができます。
⚠️ 重要提示
Kestra MCP Serverは現在ベータ版であり、Kestra 0.23.0 以上で使用することを想定しています。今後のリリースで大幅な変更が行われる可能性があります。APIインターフェース、ツール名、および機能は予告なく変更される場合があります。本番環境で使用する前に、開発環境で十分にテストすることをお勧めします。
🚀 クイックスタート
Kestra MCP Serverは、Dockerコンテナ内で実行することができます。これは、ローカルマシンでPython環境や依存関係を管理することを避けたい場合に便利です。
OSSユーザー向けの最小限の設定
次の設定をMCP設定(例:Cursor、Claude、または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",
"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"
}
}
}
}
Basic Authを有効にした場合は、次の設定を使用してください。
{
"mcpServers": {
"kestra": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--pull",
"always",
"-e",
"KESTRA_MCP_DISABLED_TOOLS",
"-e",
"KESTRA_BASE_URL",
"-e",
"KESTRA_TENANT_ID",
"-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_USERNAME": "admin@kestra.io",
"KESTRA_PASSWORD": "your_password"
}
}
}
}
EEユーザー向けの最小限の設定
{
"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_DISABLED_TOOLS",
"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"
}
}
}
}
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",
"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"
}
}
}
}
注意事項:
<your_kestra_api_token>、<your_google_api_key>、および <your_helicone_api_key> を実際の資格情報に置き換えてください。
- OSSインストールの場合、
KESTRA_API_TOKEN の代わりに KESTRA_USERNAME と KESTRA_PASSWORD を使用することができます。
- OSSでEnterprise Editionのツールを無効にするには、
KESTRA_MCP_DISABLED_TOOLS=ee を設定してください。
host.docker.internal ホスト名を使用すると、Dockerコンテナがホストマシンで実行されているサービス(例:ポート8080のKestra APIサーバー)にアクセスできます。これはmacOSとWindowsで動作します。Linuxでは、ホストネットワークモードを使用するか、カスタムブリッジを設定する必要がある場合があります。
-e フラグは、MCP設定からDockerコンテナに環境変数を渡します。
✨ 主な機能
利用可能なツール
- 🔄 backfill
- ⚙️ ee (Enterprise Editionツール)
- ▶️ execution
- 📁 files
- 🔀 flow
- 🗝️ kv
- 🌐 namespace
- 🔁 replay
- ♻️ restart
- ⏸️ resume
注意: ee ツールグループにはEnterprise Edition固有の機能が含まれており、EE/Cloud版でのみ利用可能です。OSSユーザーは、.env ファイルに KESTRA_MCP_DISABLED_TOOLS=ee を追加することで、EEツールを無効にすることができます。
必要に応じて、.env ファイルに KESTRA_MCP_DISABLED_TOOLS を含め、無効にしたいツールをリストすることができます。たとえば、Namespace Filesツールを無効にする場合は、.env ファイルに次のように追加してください。
KESTRA_MCP_DISABLED_TOOLS=files
複数のツールを無効にする場合は、カンマで区切ってください。
KESTRA_MCP_DISABLED_TOOLS=ee
💻 使用例
ローカル開発
KestraのMCP Serverをローカルで実行するには(例:新しいツールで拡張したい場合)、まず仮想環境を作成する必要があります。
uv venv --python 3.13
uv pip install -r requirements.txt
プロジェクトのルートディレクトリに、.env_example ファイルと同様の .env ファイルを作成してください。OSSインストールの場合、KESTRA_USERNAME と KESTRA_PASSWORD を使用して基本認証を行うことができます。EE/Cloudインストールの場合は、KESTRA_API_TOKEN を使用してください。OSSでEnterprise Editionのツールを無効にするには、.env ファイルに KESTRA_MCP_DISABLED_TOOLS=ee を追加してください。
次に、以下の手順に従って、Cursor、Windsurf、VS Code、またはClaude Desktopでローカルサーバーをテストしてください。
Cursor、Windsurf、VS Code、またはClaude Desktopでの使用
Claudeまたは最新のIDEでPython MCP Serverを使用するには、まずマシン上のuvのパスを確認してください。
which uv
which uv が返すパスをコピーし、command セクションに貼り付けてください。次に、--directory をKestra MCP Serverリポジトリをクローンしたパスに置き換えてください。たとえば、次のようになります。
{
"mcpServers": {
"kestra": {
"command": "/Users/annageller/.local/bin/uv",
"args": [
"--directory",
"/Users/annageller/gh/mcp-server-python/src",
"run",
"server.py"
]
}
}
}
これをCursor MCP設定またはClaud Developer設定に貼り付けることができます。
VS Codeの設定
VS Codeプロジェクトディレクトリに .vscode フォルダを作成し、そのフォルダ内に mcp.json ファイルを作成してください。MCP設定をそのファイルに貼り付けてください(VS Codeでは、キーは mcpServers ではなく servers です)。
{
"servers": {
"kestra": {
"command": "/Users/annageller/.local/bin/uv",
"args": [
"--directory",
"/Users/annageller/gh/mcp-server-python/src",
"run",
"server.py"
]
}
}
}
小さな Start ボタンが表示されるので、クリックしてサーバーを起動してください。
GitHub Copilotタブに移動し、エージェントモードに切り替えると、Kestra MCP Serverツールと直接やり取りすることができます。たとえば、「tutorial名前空間内のすべてのフローをリストする」というプロンプトを入力してみてください。
続行をクリックすると、出力ウィンドウにコマンドの結果が表示されます。
FAQ
質問: サーバーを常時実行するプロセスとして手動で起動する必要がありますか?
いいえ、stdio トランスポートを使用する場合、AI IDE/チャットインターフェース(Cursor、Windsurf、VS Code、またはClaude Desktop)がMCPサーバーをサブプロセスとして起動するため、手動でサーバーを実行する必要はありません。このサブプロセスは、標準入力と出力ストリームを介してJSON-RPCメッセージでAI IDEと通信します。サーバーはstdinを介してメッセージを受信し、stdoutを介して応答を送信します。
質問: MCP Serverの仮想環境を手動でアクティブ化する必要がありますか?
いいえ、uv を使用しているため、仮想環境のアクティブ化が PATH などのシェル変数を変更する従来のPythonパッケージマネージャーとは異なり、uv は最初に環境変数を設定する必要なく、.venv ディレクトリからPythonインタープリターとパッケージを直接使用します。ただし、前のセクションで説明したように、uv venv でuv仮想環境を作成し、uv pip install で必要なパッケージをインストールしていることを確認してください。
📚 ドキュメント
Google Agent SDK (ADK) でのKestra MCP Serverの使用
Agent Development UI を起動するには、次のコマンドを実行してください。
source .venv/bin/activate
cd agents/
adk web
次に、エージェントのドロップダウンから google-mcp-client を選択し、Kestra MCP Serverとやり取りするためのプロンプトを送信し始めてください。
応答が生成されると同時にストリーミングするには、「Token Streaming」トグルを有効にすることをお勧めします。
詳細については、公式の adk-python リポジトリを確認してください。Java開発者の場合は、同等の adk-java があります。
OpenAI Agent SDKでのKestra MCP Serverの使用
company 名前空間に次のKestraフローがあると仮定します。
プロジェクトのルートから次のコマンドを実行すると、これらの依存関係がASCIIグラフとして視覚化されます。
uv run agents/openai-mcp-client/agent.py -p 'List dependencies for the namespace company'
次のような出力が表示されるはずです。
Here's the dependency graph for the namespace `company`:
flow1 ────▶ flow2
flow2 ────▶ flow3b
flow3b ────▶ flow4
flow4 ────▶ flow5
flow5 ────▶ flow6
flow6
flow2 ────▶ flow3c
flow3c ────▶ flow4
flow3c ====▶ flow3
flow3
flow2 ────▶ flow3a
flow3a ────▶ flow4
goodbye
hello
scheduled_flow
**Legend:**
- `────▶` FLOW_TRIGGER (flow-trigger-based dependency)
- `====▶` FLOW_TASK (subflow-task-based dependency)
Flows listed without arrows have no dependencies within this namespace.