Important
SQL モデル コンテキスト プロトコル (MCP) サーバーは、Data API Builder バージョン 1.7 以降で使用できます。
SQL MCP Server は、AI エージェントをデータ ワークフローに取り込むための、シンプルで予測可能で安全な方法を開発者に提供します。 SQL MCP Server は、データベースを公開したり、脆弱な自然言語解析に依存したりすることなく、この目標を達成します。 データ API ビルダーの エンティティ抽象化、 RBAC、キャッシュ、テレメトリ に基づいて構築することで、サーバーは REST、GraphQL、および MCP 全体で同じように動作する運用対応のサーフェスを提供します。 これを 1 回構成すると、エンジンによって残りの処理が行われます。
SQL MCP Server がデータ API ビルダー抽象化レイヤーを介して AI エージェントを SQL データベースに接続する方法を示す図。
モデル コンテキスト プロトコル (MCP)
モデル コンテキスト プロトコル (MCP) は、AI エージェントが外部ツールを検出して呼び出す方法を定義する標準です。 ツールは、レコードの作成やデータの読み取りなどの 1 つの操作です。 各ツールは、その入力、出力、および動作を記述します。 MCP は、エージェントが機能を検出して使用するための予測可能な方法を提供します。
SQL 用 MCP サーバー
SQL MCP Server は、エージェント アプリ用の Microsoft の動的なオープンソース エンジンです。 次を定義する JSON ファイルを使用して構成します。
- データベースに接続する方法
- 公開するテーブル、ビュー、またはストアド プロシージャ
- 各オブジェクトに適用されるアクセス許可
SQL MCP Server は、バージョン 1.7 以降のデータ API ビルダー (DAB) の一部として含まれています。 SQL 操作は MCP ツールの小規模なファミリ として公開されるため、エージェントは制御されたコントラクトを介してデータベース エンティティと対話できます。 サーバーは自己ホスト型ですが、開発者にとっては、 DAB コマンド ラインを使用してローカルで実行することもできます。
ヒント
データ API ビルダーはオープンソースであり、自由に使用できます。
MCP プロトコルの詳細
SQL MCP Server では、固定の既定値として MCP プロトコル バージョン 2025-06-18 が実装されています。 標準ホスティング シナリオではストリーミング可能な HTTP、ローカルまたは CLI のシナリオでは stdio という 2 つのトランスポートがサポートされています。 初期化中、サーバーはツールとログ機能を公開し、サーバー名や DAB バージョンなどのサーバーメタデータを返します。また、クライアントがサーバーの目的を理解できるように、特定のフィールドを含めています。
MCP インスペクター
HTTP ベースの MCP エンドポイントの場合 (たとえば、DAB が で実行されている場合)、エンドポイント URL を直接渡して、プロキシ モードで MCP インスペクターを起動します。
まず、データ API ビルダーを開始します。
dab start
次に、別のターミナルで、エンドポイント URL を使用して MCP Inspector を起動します。
npx -y @modelcontextprotocol/inspector http://localhost:5000/mcp
これにより、インスペクター プロキシ経由で要求がルーティングされ、ブラウザーの CORS や、直接モードで発生する可能性がある などのセッション ヘッダーの問題を回避するのに役立ちます。
Stdio トランスポート
stdio トランスポートは、ローカル開発と CLI ワークフローに役立ちます。 を使用してロールを指定できます。このロールは、省略すると既定でされます。 このモードでは、認証では シミュレーター プロバイダーが使用され、受信要求は 1 MB に制限されます。
dab start --mcp-stdio
dab start --mcp-stdio role:<role-name>
活用事例
SQL MCP Server の一般的なユース ケースを次に示します。
- 副操縦士またはチャットボットが安全な CRUD 操作を実行できるようにする
- SQL を記述せずに内部オートメーションを構築する
- データベースを直接公開せずにエージェント機能を追加する
スキーマのセキュリティ保護
データ API ビルダーでは、構成内の API を通じて公開されるすべてのテーブル、ビュー、およびストアド プロシージャを一覧表示する、明確に定義された エンティティ抽象化レイヤー を使用します。 このレイヤーを使用すると、名前と列の別名、オブジェクトとパラメーターの説明、さまざまなロールで使用できるフィールドの制限を行うことができます。
Important
データ API ビルダー (DAB) はロール対応であり、現在のロールがアクセスできるエンティティと操作のみを公開します。
SQL MCP Server はデータ API ビルダーの機能であるため、この抽象化レイヤーも使用します。 この方法により、内部スキーマが外部コンシューマーに公開されるのを防ぎ、API レイヤーで複雑な、さらにはデータソース間のオブジェクトとリレーションシップのファミリを定義できます。
NL2SQL の解決
SQL MCP Server は、現在利用可能な近視眼データベース MCP サーバーの多く とは異なるアプローチ を採用しています。 重要な例として、 SQL MCP Server では 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 ユース ケースに合わせて設計されています。
ヒント
ローカル開発中にスキーマを変更するには、包括的な DDL サポートを提供する microsoft SQL Server (MSSQL) 拡張機能をVisual Studio Codeで使用できます。
RBAC のサポート
SQL MCP Server は、Data API ビルダー全体で使用されるのと同じ実績のある ロールベースのアクセス制御 (RBAC) システムの利点があります。 構成内の各エンティティは、データの読み取り、作成、更新、または削除が可能なロールと、それらのロールに対してどのフィールドを含めるか除外するかを定義します。 これらの規則は、すべての MCP ツールに自動的に適用されるため、REST、GraphQL、および MCP 全体でセキュリティの一貫性が維持され、追加の構成は必要ありません。
Important
ロールベースの制約は、エージェントの対話のすべてのステップで適用されます。
キャッシュのサポート
SQL MCP Server は、 ツールからの結果を自動的にキャッシュします。 データ 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 ツールは手動で定義しません。 組み込みの システムは、エンティティを手続き的に検出して公開します。エンティティは、小さなスキーマから非常に大規模なデータベースに適切にスケーリングされます。
概要
作業の開始とは、エンジンを制御する を作成することです。 このタスクは手動で実行することも、 Data API Builder (DAB) CLI を使用することもできます。 CLI を使用すると、タスクが簡略化され、1 つのコマンドでファイルを初期化できます。 構成プロパティの値には、リテラル文字列、environment 変数、または Azure Key Vault シークレットを使用できます。
dab init --database-type mssql --connection-string "<your-connection-string>" --config dab-config.json --host-mode development
SQL MCP Server で公開する各テーブル、ビュー、またはストアド プロシージャは、構成に追加することで指定できます。 CLI を使用すると、それらを簡単に追加したり、エイリアスを割り当てたり、アクセス許可を構成したり、必要に応じて列をマップしたりできます。 最も重要なのは、 プロパティを使用すると、言語モデルがデータをより深く理解できるようにセマンティックの詳細を含めることができます。
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.enabled true
dab configure --runtime.mcp.dml-tools.create-record.enabled true
dab configure --runtime.mcp.dml-tools.read-records.enabled true
dab configure --runtime.mcp.dml-tools.update-record.enabled true
dab configure --runtime.mcp.dml-tools.delete-record.enabled true
dab configure --runtime.mcp.dml-tools.execute-entity.enabled true
個々のツールを無効にする理由
開発者は、ロールまたはエンティティのアクセス許可で許可されている場合でも、特定のアクションを制限したい場合があります。 ランタイム レベルでツールを無効にすると、エージェントに表示されることはありません。 たとえば、 をオフにすると、他の場所の構成に関係なく、削除機能が完全に非表示になります。 このシナリオは一般的ではありませんが、厳密な運用境界が必要な場合に便利です。
エンティティ設定
また、各エンティティで MCP を有効にする必要はありません。 エンティティを制限しない限り、エンティティは自動的に参加します。 プロパティが存在するため、MCP からエンティティを除外したり、機能を絞り込んだりできますが、通常の使用のために何も設定する必要はありません。 既定値では、すべてを処理します。
"entities": {
"products": {
"mcp": {
"dml-tools": true
}
}
}
DML ツール
SQL MCP Server では、AI エージェントが安全でタイプ セーフなデータベース操作 (、、、、、) を実行できるようにする 6 つのが公開されています。 これらのツールは、構成、アクセス許可、スキーマを常に反映する予測可能な CRUD サーフェスを形成します。
各ツールは、ロールベースのアクセス制御 (RBAC)、エンティティのアクセス許可、ポリシーを尊重します。 エージェントはデータベースと直接やり取りすることはありません。エージェントは、セキュリティで保護されたデータ API ビルダー抽象化レイヤーを介して動作します。
関連コンテンツ
- SQL MCP Server へのセマンティック記述の追加
- SQL MCP Server の認証を構成する
- SQL MCP Server のデータ操作ツール
SQL MCP Server を Azure Container Apps Visual Studio Code .NET Aspire Azure AI Foundry