次の方法で共有


SQL MCP Server のデータ操作言語 (DML) ツール

Important

SQL MCP Server はプレビュー段階であり、このドキュメントとエンジンの実装は、この評価期間中に変更される可能性があります。

SQL MCP Server は、6 つのデータ操作言語 (DML) ツールを AI エージェントに公開します。 これらのツールは、データベース操作 (レコードの作成、読み取り、更新、削除、およびストアド プロシージャの実行) に対して型指定された CRUD サーフェスを提供します。 すべてのツールは、ロールベースのアクセス制御 (RBAC)、エンティティのアクセス許可、および構成で定義されているポリシーを尊重します。

DML ツールとは

DML (データ操作言語) ツールは、レコードの作成、読み取り、更新、削除、ストアド プロシージャの実行などのデータ操作を処理します。 スキーマを変更する DDL (データ定義言語) とは異なり、DML は既存のテーブルとビューのデータ プレーンでのみ機能します。

6 つの DML ツールは次のとおりです。

  • describe_entities - 使用可能なエンティティと操作を検出します
  • create_record - 新しい行を挿入します
  • read_records - テーブルとビューのクエリ
  • update_record - 既存の行を変更します
  • delete_record - 行を削除します
  • execute_entity - ストアド プロシージャを実行する

DML ツールがグローバルかつエンティティに対して有効になっている場合、SQL MCP Server は MCP プロトコルを介してそれらを公開します。 エージェントは、データベース スキーマと直接やり取りすることはありません。エージェントは、データ API ビルダーの抽象化レイヤーを介して動作します。

ツール

ツール一覧の応答

エージェントが list_toolsを呼び出すと、SQL MCP Server は次を返します。

{
  "tools": [
    { "name": "describe_entities" },
    { "name": "create_record" },
    { "name": "read_records" },
    { "name": "update_record" },
    { "name": "delete_record" },
    { "name": "execute_entity" }
  ]
}

エンティティの説明

現在のロールで使用できるエンティティを返します。 各エントリには、フィールド名、データ型、主キー、および許可される操作が含まれます。 このツールでは、データベースのクエリは実行されません。 代わりに、構成ファイルからビルドされたメモリ内構成から読み取ります。

{
  "entities": [
    {
      "name": "Products",
      "description": "Product catalog with pricing and inventory",
      "fields": [
        {
          "name": "ProductId",
          "type": "int",
          "isKey": true,
          "description": "Unique product identifier"
        },
        {
          "name": "ProductName",
          "type": "string",
          "description": "Display name of the product"
        },
        {
          "name": "Price",
          "type": "decimal",
          "description": "Retail price in USD"
        }
      ],
      "operations": [
        "read_records",
        "update_record"
      ]
    }
  ]
}

CRUD ツールと実行 DML ツールで使用されるエンティティ オプションは、 describe_entitiesから直接取得されます。 各ツールにアタッチされている内部セマンティックの説明では、この 2 段階のフローが適用されます。

create_record

テーブルに新しい行を作成します。 現在のロールのエンティティに対する作成権限が必要です。 このツールは、エンティティ スキーマに対する入力を検証し、フィールド レベルのアクセス許可を適用し、作成ポリシーを適用して、生成された値を持つ作成済みレコードを返します。

レコードを読み取る

テーブルまたはビューに対してクエリを実行します。 フィルター処理、並べ替え、改ページ位置指定、およびフィールドの選択をサポートします。 このツールは、構造化されたパラメーターから確定的な SQL を構築し、読み取りアクセス許可とフィールド プロジェクションを適用し、行レベルのセキュリティ ポリシーを適用します。

read_recordsからの結果は、データ API ビルダーのキャッシュ システムを使用して自動的にキャッシュされます。 キャッシュの有効期間 (TTL) は、グローバルまたはエンティティごとに構成して、データベースの負荷を軽減できます。

レコード更新

既存の行を変更します。 更新するには、主キーとフィールドが必要です。 このツールは、主キーが存在することを検証し、更新のアクセス許可とポリシーを適用し、現在のロールが変更できるフィールドのみを更新します。

レコードを削除

既存の行を削除します。 主キーが必要です。 このツールは、主キーが存在することを検証し、削除のアクセス許可とポリシーを適用し、トランザクションをサポートして安全な削除を実行します。

Warnung

一部の運用シナリオでは、このツールをグローバルに無効にして、モデルを広範に制限します。

エンティティを実行

ストアド プロシージャを実行します。 入力パラメーターと出力結果をサポートします。 このツールは、プロシージャ署名に対して入力パラメーターを検証し、実行アクセス許可を適用し、パラメーターを安全に渡します。

ランタイム構成

dab-config.jsonのランタイム セクションで DML ツールをグローバルに構成します。

{
  "runtime": {
    "mcp": {
      "enabled": true,
      "path": "/mcp",
      "dml-tools": {
        "describe-entities": true,
        "create-record": true,
        "read-records": true,
        "update-record": true,
        "delete-record": true,
        "execute-entity": true
      }
    }
  }
}

CLI を使用する

データ API ビルダー CLI を使用してプロパティを個別に設定します。

dab configure --runtime.mcp.enabled true
dab configure --runtime.mcp.path "/mcp"
dab configure --runtime.mcp.dml-tools.describe-entities true
dab configure --runtime.mcp.dml-tools.create-record true
dab configure --runtime.mcp.dml-tools.read-records true
dab configure --runtime.mcp.dml-tools.update-record true
dab configure --runtime.mcp.dml-tools.delete-record true
dab configure --runtime.mcp.dml-tools.execute-entity true

ツールの無効化

ランタイム レベルでツールを無効にすると、エンティティのアクセス許可やロールの構成に関係なく、エージェントには表示されません。 この設定は、厳密な運用境界が必要な場合に便利です。

一般的なシナリオ

  • 運用環境でのデータ損失を防ぐために delete-record を無効にする
  • 読み取り専用レポート エンドポイントの create-record を無効にする
  • ストアド プロシージャが使用されていない場合に execute-entity を無効にする

ツールがグローバルに無効になっている場合、ツールは list_tools 応答から非表示になり、呼び出すことはできません。

エンティティ設定

エンティティは、明示的に制限しない限り、MCP に自動的に参加します。 dml-tools プロパティが存在するため、MCP からエンティティを除外したり、機能を絞り込んだりできますが、通常の使用のために何も設定する必要はありません。

{
  "entities": {
    "Products": {
      "mcp": {
        "dml-tools": true
      }
    },
    "SensitiveData": {
      "mcp": {
        "dml-tools": false
      }
    }
  }
}

エンティティに mcp.dml-tools を指定しない場合、MCP がグローバルに有効になっている場合、既定で true されます。

きめ細かい制御

個々のエンティティに対して特定のツールを無効にすることができます。

{
  "entities": {
    "AuditLogs": {
      "mcp": {
        "dml-tools": {
          "create-record": true,
          "read-records": true,
          "update-record": false,
          "delete-record": false
        }
      }
    }
  }
}

この構成により、エージェントは監査ログを作成および読み取ることができますが、変更や削除は防止されます。

RBAC の統合

すべての DML ツール操作では、ロールベースのアクセス制御規則が適用されます。 エージェントのロールによって、表示されるエンティティ、許可される操作、含まれるフィールド、および行レベルのポリシーが適用されるかどうかが決まります。

anonymous ロールがProductsに対する読み取りアクセス許可のみを許可する場合:

  • describe_entities 操作に read_records のみが表示される
  • create_recordupdate_record、および delete_record は使用できません
  • anonymousに許可されているフィールドのみがスキーマに表示されます

dab-config.jsonで役割を構成します。

{
  "entities": {
    "Products": {
      "permissions": [
        {
          "role": "anonymous",
          "actions": [
            {
              "action": "read",
              "fields": {
                "include": ["ProductId", "ProductName", "Price"],
                "exclude": ["Cost"]
              }
            }
          ]
        },
        {
          "role": "admin",
          "actions": ["*"]
        }
      ]
    }
  }
}