制限事項

サーバーで実行される式と、MCP サーバーが行わないこと

  1. runLocal の式
  2. 制限事項

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 エージェント)」)を作成します。 ジョブ自体は、ほかの起動と同じくそのユーザーのものとして記録されます。