Important
SQL モデル コンテキスト プロトコル (MCP) サーバーはプレビュー段階であり、このドキュメントとエンジンの実装が変更される可能性があります。 Data API Builder バージョン 1.7 はプレビュー段階ですが、MCP 機能がまだ 1.7.83-rc タグに含まれていないため、プレリリース バージョン (:latest など) を明示的に使用する必要があります。
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_record、update_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": ["*"]
}
]
}
}
}