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_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": ["*"]
}
]
}
}
}