Important
SQL MCP Server はプレビュー段階であり、このドキュメントとエンジンの実装は、この評価期間中に変更される可能性があります。
SQL MCP Server は、AI エージェントをデータ ワークフローに取り込むための、シンプルで予測可能で安全な方法を開発者に提供します。 データベースを公開したり、脆弱な自然言語解析に依存したりすることなく、これを実現します。 データ API ビルダーのエンティティ抽象化、RBAC、キャッシュ、テレメトリに基づいて構築することで、SQL MCP Server は、REST、GraphQL、および MCP 全体で同じように動作する運用対応のサーフェスを提供します。 これを 1 回構成すると、エンジンによって残りの処理が行われます。
モデル コンテキスト プロトコル (MCP)
モデル コンテキスト プロトコル (MCP) は、AI エージェントが外部ツールを検出して呼び出す方法を定義する標準です。 ツールは、レコードの作成やデータの読み取りなどの 1 つの操作です。 各ツールは、その入力、出力、および動作を記述します。 MCP は、エージェントが機能を検出して使用するための予測可能な方法を提供します。
SQL 用 MCP サーバー
SQL MCP Server は、エージェント アプリ用の Microsoft の動的なオープン ソース エンジンです。 次を定義する JSON ファイルを使用して構成します。
- データベースに接続する方法
- 公開するテーブル、ビュー、またはストアド プロシージャ
- 各オブジェクトに適用されるアクセス許可
SQL MCP Server は、バージョン 1.7 以降のデータ API ビルダー (DAB) の一部として含まれています。 SQL 操作は MCP ツールの小規模なファミリ として公開されるため、エージェントは制御されたコントラクトを介してデータベース エンティティと対話できます。 サーバーは自己ホスト型ですが、開発者にとっては、 DAB コマンド ラインを使用してローカルで実行することもできます。
ヒント
データ API ビルダーはオープン ソースであり、自由に使用できます。
活用事例
SQL MCP Server の一般的なユース ケースを次に示します。
- 副操縦士またはチャットボットが安全な CRUD 操作を実行できるようにする
- SQL を記述せずに内部オートメーションを構築する
- データベースを直接公開せずにエージェント機能を追加する
スキーマのセキュリティ保護
データ API ビルダーでは、構成内の API を通じて公開されるすべてのテーブル、ビュー、およびストアド プロシージャを一覧表示する、明確に定義されたエンティティ抽象化レイヤーを使用します。 このレイヤーを使用すると、名前と列の別名、オブジェクトとパラメーターの説明、さまざまなロールで使用できるフィールドの制限を行うことができます。
Important
データ API ビルダー (DAB) はロール対応であり、現在のロールがアクセスできるエンティティと操作のみを公開します。
SQL MCP Server はデータ API ビルダーの機能であるため、この抽象化レイヤーも使用します。 この方法により、内部スキーマが外部コンシューマーに公開されるのを防ぎ、API レイヤーで複雑な、さらにはデータソース間のオブジェクトとリレーションシップのファミリを定義できます。
NL2SQL の解決
SQL MCP Server は、現在利用可能な近視眼データベース MCP サーバーの多く とは異なるアプローチ を採用しています。 重要な例として、 NL2SQL は意図的にサポートされていません。
なぜでしょうか。 モデルは決定論的ではなく、複雑なクエリは微妙なエラーを生成する可能性が最も高いです。 これらの複雑なクエリは、多くの場合、ユーザーが AI が生成できることを望んでいますが、非決定的な方法で生成されるときに最も調査が必要なクエリでもあります。
注
決定論的とは、同じ入力が常に同じ出力を生成するということです。 呼び出し間にランダム性やバリエーションがないため、結果は予測可能で、テスト可能で、安全に自動化できます。
代わりに、SQL MCP Server は NL2DAB モデルと呼ばれるものをサポートします。 この方法では、セキュリティで保護されたデータ API ビルダー エンティティ抽象化レイヤーと組み込みの DAB クエリ ビルダーを使用します。 一緒に、完全に決定論的な方法で正確で適切に構造化された Transact-SQL (T-SQL) を生成します。 この方法により、NL2SQL に関連するリスク、オーバーヘッド、および迷惑行為が排除され、エージェントによって生成されるクエリの安全性と信頼性が維持されます。
DDL のサポート
DDL (データ定義言語) は、テーブルやビューなどのオブジェクトを作成および変更するために使用されるデータベース言語です。 SQL MCP Server は、既存のテーブルとビューのデータの作成、読み取り、更新、および削除に使用されるデータベース言語である DML (データ操作言語) を中心に構築されています。 DML では、ストアド プロシージャの実行についても説明します。 その結果、SQL MCP Server はスキーマではなくデータを操作するように設計されています。 この設計は、AI エージェントがミッション クリティカルなシステムやビジネス上の機密性の高いシステムとやり取りする運用 MCP ユース ケースに合わせて設計されています。
ヒント
ローカル開発中にスキーマを変更するために、エンジニアは Visual Studio Code (VS Code) で MSSQL 拡張機能を使用できます。これは、包括的な DDL サポートを提供します。
RBAC のサポート
SQL MCP Server は、Data API ビルダー全体で使用されるのと同じ実績のあるロールベースのアクセス制御 (RBAC) システムの利点があります。 構成内の各エンティティは、データの読み取り、作成、更新、または削除が可能なロールと、それらのロールに対してどのフィールドを含めるか除外するかを定義します。 これらの規則は、すべての MCP ツールに自動的に適用されるため、REST、GraphQL、および MCP 全体でセキュリティの一貫性が維持され、追加の構成は必要ありません。
Important
ロールベースの制約は、エージェントの対話のすべてのステップで適用されます。
キャッシュのサポート
SQL MCP Server は、 read_records ツールからの結果を自動的にキャッシュします。
データ API ビルダーでのキャッシュ はグローバルに有効になっており、エンティティごとに構成できます。 レベル 1 とレベル 2 の両方のキャッシュは、データベースの負荷を軽減し、要求スタンプを防ぎ、水平方向にスケーリングされた環境でのウォームスタート シナリオをサポートします。
監視のサポート
SQL MCP Server は、企業が 1 つのウィンドウからアクティビティを監視および検証できるようにするログとテレメトリを出力します。 この機能には、Azure Log Analytics、 Application Insights、コンテナー内のローカル ファイル ログが含まれます。
テレメトリ
SQL MCP Server は、OpenTelemetry (OTEL) のスパンとアクティビティで完全にインストルメント化されています。 各操作はトレースされるため、開発者は分散システム間で動作を関連付けることができます。 データ API ビルダーのネイティブ Open Telemetry サポートの詳細について説明します。
健康診断
SQL MCP Server では、REST、GraphQL、および MCP エンドポイント全体で詳細な正常性とエンティティのチェックが提供されます。 Data API builder Health を使用すると、開発者はパフォーマンスの期待値を定義し、しきい値を設定し、各エンドポイントが期待どおりに機能していることを確認できます。
SQL MCP Server を構成する方法
MCP は DAB 構成ファイルで構成されます。 既にデータ API ビルダー構成が動作している場合は、バージョン 1.7 以降にアップグレードすると、追加の手順なしで動作する SQL MCP サーバーが自動的に提供されます。
コンフィギュレーション
MCP はグローバルに有効にすることも、エンティティ レベルで有効にすることもできます。 この機能を使用すると、MCP ツールを表示するエンティティと、エージェントからアクセスできないエンティティを選択できます。 MCP は REST と GraphQL で使用されるのと同じ規則に従うので、構成はアクセス許可、プロジェクション、ポリシーの信頼の単一ソースのままです。
MCP が有効になっている場合、SQL MCP Server は構成に基づいて自動的にそのツール サーフェスを生成します。 MCP ツールは手動で定義しません。 組み込みの dml-tools システムは、エンティティを手続き的に検出して公開します。エンティティは、小さなスキーマから非常に大規模なデータベースに適切にスケーリングされます。
概要
作業の開始とは、エンジンを制御する dab-config.json を作成することです。 このタスクは手動で実行することも、 Data API Builder (DAB) CLI を使用することもできます。 CLI を使用すると、タスクが簡略化され、1 つのコマンドでファイルを初期化できます。 構成プロパティの値には、リテラル文字列、 環境変数、または Azure Key Vault シークレットを使用できます。
dab init --database-type mssql --connection-string "<your-connection-string>" --config dab-config.json --host-mode development
SQL MCP Server で公開する各テーブル、ビュー、またはストアド プロシージャは、構成に追加することで指定できます。 CLI を使用すると、それらを簡単に追加したり、エイリアスを割り当てたり、アクセス許可を構成したり、必要に応じて列をマップしたりできます。 最も重要なのは、 description プロパティを使用してセマンティックの詳細を含め、言語モデルがデータをより深く理解できるようにすることです。
dab add {entity-name} \ # object alias (Employees)
--source {table-or-view-name} \ # database object (dbo.Employees)
--source.type {table|view|stored-procedure} \ # object type (table)
--permissions "{role:actions}" \ # role and allowed actions (anonymous:*)
--description "{text}" # semantic description (Company employee records)
ランタイム設定
SQL MCP Server は、データ API ビルダー構成で既定で有効になっています。 ほとんどの場合、設定を追加する必要はありません。 サーバーは、API およびデータベースと同じアクセス許可とセキュリティ規則に自動的に従います。 MCP を構成するのは、エージェントが実行できる操作を絞り込んだり制限したりする場合のみです。
"runtime": {
"mcp": {
"enabled": true, // default: true
"path": "/mcp", // default: /mcp
"dml-tools": {
"describe-entities": true, // default: true
"create-record": true, // default: true
"read-records": true, // default: true
"update-record": true, // default: true
"delete-record": true, // default: true
"execute-entity": true // default: true
}
}
}
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 をオフにすると、他の場所の構成に関係なく、削除機能が完全に非表示になります。 このシナリオは一般的ではありませんが、厳密な運用境界が必要な場合に便利です。
エンティティ設定
また、各エンティティで MCP を有効にする必要はありません。 エンティティを制限しない限り、エンティティは自動的に参加します。
dml-tools プロパティが存在するため、MCP からエンティティを除外したり、機能を絞り込んだりできますが、通常の使用のために何も設定する必要はありません。 既定値では、すべてを処理します。
"entities": {
"products": {
"mcp": {
"dml-tools": true
}
}
}
DML ツール
SQL MCP Server では、AI エージェントが安全でタイプ セーフなデータベース操作 ( describe_entities、 create_record、 read_records、 update_record、 delete_record、 execute_entity) を実行できるようにする 6 つのデータ操作言語 (DML) ツールが公開されています。 これらのツールは、構成、アクセス許可、スキーマを常に反映する予測可能な CRUD サーフェスを形成します。
各ツールは、ロールベースのアクセス制御 (RBAC)、エンティティのアクセス許可、ポリシーを尊重します。 エージェントはデータベースと直接やり取りすることはありません。エージェントは、セキュリティで保護されたデータ API ビルダー抽象化レイヤーを介して動作します。
各ツール、構成オプション、ベスト プラクティスの詳細については、 DML ツールリファレンスを参照してください。