制限事項
サーバーで実行される式と、MCP サーバーが行わないこと
runLocal の式
runLocal の式、 local / credential / html フィールド、 evalDefault の既定値は、 サーバー上の独立した V8 コンテキストで評価されます。 process 、 require 、ネットワーク、 タイマーは使えず、文字列をコードにコンパイルすることもできません。制限時間は 2 秒で、使えるのはブラウザーが提供するヘルパー 関数( fnArray 、 fnGetNumberedName 、 fnToTable など)だけです。
これはバグのある式や暴走する式から守るためのものです。悪意のあるコードに対するサンドボックスではありませんが、 その必要もありません。コードはフォームの定義から来るもので、MCP の 呼び出し元から来ることはなく、呼び出し元が送る値はすべて JavaScript のリテラルとして埋め込まれます。
ブラウザーの API( window 、 document 、 fetch )を使う式はここでは実行できず、 status: error を返します。
サーバー側の式( runLocal なし)には、ブラウザーの場合と同じ EXPRESSION_SANITIZER のルールが適用されます。
制限事項
一部のフォームとフィールドは、まだ MCP サーバーから使えません。
- ウィザードフォーム はまだ起動できません。そのステップは
subformで解決できます。 - ファイルフィールド は入力できません。ファイルフィールドに値があるフォームは拒否されます。
- リストの行 (およびサブフォームを持つ
yamlフィールド。これも行の 1 つです): 送った行は、リストのdeleteMarkerを持つものを除いて、 すべてフォームの値を__parent__としてそのサブフォームで解決され、その後検証されます。これにはネストしたリストも含まれ、 その場合は__parent__.__parent__でフォームに届きます。プレーンな行、つまりサブフォームのフィールドの生の 値を送ってください。失敗した行は、リストのフィールドごとにrowErrorsに列挙されます (メッセージではvms[1].disks[0].size (missing))。1 回の呼び出しで受け付けるのは、すべての階層を合わせて最大 500 行です。 __auto__のままの enum に、最初の選択肢が入ることはありません。呼び出し元が選ぶ必要があります。- MCP のリクエストは、それぞれ監査ログに 1 件のエントリ(アクション「MCP リクエスト (AI エージェント)」)を作成します。 ジョブ自体は、ほかの起動と同じくそのユーザーのものとして記録されます。