Important
SQL MCP Server はプレビュー段階であり、このドキュメントとエンジンの実装は、この評価期間中に変更される可能性があります。
このクイック スタートでは、SQL MCP Server を Azure Container Apps にデプロイする方法について説明します。 デプロイ後、リモート サーバー エンドポイントとして Visual Studio Code (VS Code)、Microsoft Foundry、またはその他のモデル コンテキスト プロトコル (MCP) クライアントから接続できます。
[前提条件]
Azure サブスクリプション
アクティブな Azure サブスクリプションが必要です。 お持ちでない場合:
https://azure.microsoft.com/free
Azure CLI
Azure CLI をインストールしてリソースをデプロイします。
ウィンドウズ
winget install Microsoft.AzureCLI
macOS
brew install azure-cli
.NET 9 以降
このツールは既にインストールされている可能性があります。
dotnet --versionを実行し、バージョン 9 以降が報告されたことを確認します。
ウィンドウズ
winget install Microsoft.DotNet.Runtime.9
データ API ビルダー CLI
dotnet new tool-manifest
dotnet tool install microsoft.dataapibuilder --prerelease
注
SQL MCP Server は現在プレリリース中です。
--prerelease フラグを使用すると、このクイック スタートで使用されるすべての機能を使用して、最新バージョンの Data API ビルダーを取得できます。
PowerShell
PowerShell がまだインストールされていない場合はインストールします。
dotnet tool install --global PowerShell
手順 1: Azure SQL Database を作成してデプロイする
1. Azure にサインインする
az login
az account set --subscription "<your-subscription-id>"
2. デプロイの変数を設定する
$RESOURCE_GROUP = "rg-sql-mcp"
$LOCATION = "eastus"
$SQL_SERVER = "sql-mcp-$(Get-Random -Minimum 1000 -Maximum 9999)"
$SQL_DATABASE = "ProductsDB"
$SQL_ADMIN = "sqladmin"
$SQL_PASSWORD = "<YourStrongPassword123!>"
3. リソース グループを作成する
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
4.Azure SQL Server を作成する
az sql server create \
--name $SQL_SERVER \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--admin-user $SQL_ADMIN \
--admin-password $SQL_PASSWORD
5.Azure サービスを許可するようにファイアウォールを構成する
az sql server firewall-rule create \
--resource-group $RESOURCE_GROUP \
--server $SQL_SERVER \
--name AllowAzureServices \
--start-ip-address 0.0.0.0 \
--end-ip-address 0.0.0.0
6. データベースを作成する
az sql db create \
--resource-group $RESOURCE_GROUP \
--server $SQL_SERVER \
--name $SQL_DATABASE \
--service-objective S0
7. サンプル データを含む Products テーブルを作成する
最初に接続文字列を取得します。
$CONNECTION_STRING = "Server=tcp:$SQL_SERVER.database.windows.net,1433;Database=$SQL_DATABASE;User ID=$SQL_ADMIN;Password=$SQL_PASSWORD;Encrypt=true;TrustServerCertificate=false;Connection Timeout=30;"
SQL スクリプト ファイル create-products.sql を作成します。
CREATE TABLE dbo.Products
(
ProductID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
ProductName NVARCHAR(100) NOT NULL,
Category NVARCHAR(50) NOT NULL,
UnitPrice DECIMAL(10,2) NOT NULL,
UnitsInStock INT NOT NULL,
Discontinued BIT NOT NULL DEFAULT 0
);
INSERT INTO dbo.Products (ProductName, Category, UnitPrice, UnitsInStock, Discontinued) VALUES
('Laptop Pro 15', 'Electronics', 1299.99, 45, 0),
('Wireless Mouse', 'Electronics', 29.99, 150, 0),
('Office Chair', 'Furniture', 249.99, 30, 0),
('Standing Desk', 'Furniture', 599.99, 15, 0),
('Coffee Maker', 'Appliances', 89.99, 60, 0),
('Notebook Set', 'Office Supplies', 12.99, 200, 0),
('USB-C Hub', 'Electronics', 49.99, 80, 0),
('Desk Lamp', 'Furniture', 39.99, 100, 0),
('Bluetooth Headphones', 'Electronics', 149.99, 50, 0),
('Water Bottle', 'Office Supplies', 19.99, 120, 0);
VS Code、SQL Server Management Studio、または sqlcmd を使用して実行します。
手順 2: SQL MCP サーバーを構成する
1. dab-config.json を作成する
構成を初期化します。
dab init `
--database-type mssql `
--connection-string "@env('MSSQL_CONNECTION_STRING')" `
--host-mode Production `
--config dab-config.json
2. 説明を含む Products エンティティを追加する
dab add Products `
--source dbo.Products `
--permissions "anonymous:read" `
--description "Product catalog with pricing, category, and inventory information"
3. フィールドの説明を含む AI エージェント コンテキストを提供する
AI エージェントがデータベース スキーマを理解するのに役立つフィールドの説明を追加します。
dab update Products `
--fields.name ProductID `
--fields.description "Unique product identifier" `
--fields.primary-key true
dab update Products `
--fields.name ProductName `
--fields.description "Name of the product"
dab update Products `
--fields.name Category `
--fields.description "Product category (Electronics, Furniture, Office Supplies, Appliances)"
dab update Products `
--fields.name UnitPrice `
--fields.description "Retail price per unit in USD"
dab update Products `
--fields.name UnitsInStock `
--fields.description "Current inventory count available for purchase"
dab update Products `
--fields.name Discontinued `
--fields.description "True if product is no longer available for sale"
手順 3: SQL MCP サーバーを Azure Container Apps にデプロイする
1. Container Apps 環境を作成する
$CONTAINERAPP_ENV = "sql-mcp-env"
$CONTAINERAPP_NAME = "sql-mcp-server"
az containerapp env create `
--name $CONTAINERAPP_ENV `
--resource-group $RESOURCE_GROUP `
--location $LOCATION
2. base64 でエンコードされた構成を作成する
$CONFIG_JSON = Get-Content dab-config.json -Raw
$CONFIG_BYTES = [System.Text.Encoding]::UTF8.GetBytes($CONFIG_JSON)
$CONFIG_BASE64 = [Convert]::ToBase64String($CONFIG_BYTES)
3. SQL MCP Server コンテナーをデプロイする
az containerapp create `
--name $CONTAINERAPP_NAME `
--resource-group $RESOURCE_GROUP `
--environment $CONTAINERAPP_ENV `
--image mcr.microsoft.com/azure-databases/data-api-builder:latest `
--target-port 5000 `
--ingress external `
--min-replicas 1 `
--max-replicas 3 `
--secrets "mssql-connection-string=$CONNECTION_STRING" "dab-config-base64=$CONFIG_BASE64" `
--env-vars "MSSQL_CONNECTION_STRING=secretref:mssql-connection-string" "DAB_CONFIG_BASE64=secretref:dab-config-base64" `
--cpu 0.5 `
--memory 1.0Gi
リソース グループは次の例のようになります。
4. MCP エンドポイント URL を取得する
$MCP_URL = az containerapp show `
--name $CONTAINERAPP_NAME `
--resource-group $RESOURCE_GROUP `
--query "properties.configuration.ingress.fqdn" `
--output tsv
Write-Host "Your MCP Server URL: https://$MCP_URL/mcp"
この URL を保存します。MCP クライアントからの接続に使用します。
5. デプロイをテストする
curl "https://$MCP_URL/health"
正常な応答が表示されます。
MCP クライアントからの接続
これで、SQL MCP Server がデプロイされ、使用する準備が整いました。 さまざまなクライアントから接続する方法を次に示します。
Visual Studio Code (VS Code)
VS Code ガイドのクイック スタートに従い、ローカルで実行する代わりに、デプロイした MCP サーバー URL を使用します。
Microsoft Foundry から
MCP サーバーをカスタム MCP ツールとして追加するには、 Microsoft Foundry ガイドのクイック スタート に従います。
その他の MCP クライアント
手順 3.4 の MCP サーバー URL を使用して、MCP 互換クライアントから接続します。
監視とトラブルシューティング
Container Apps のログを表示する
az containerapp logs show \
--name $CONTAINERAPP_NAME \
--resource-group $RESOURCE_GROUP \
--follow
MCP エンドポイントの正常性を確認する
curl "https://$MCP_URL/health"
一般的な問題
接続に失敗したエラー
- Container Apps のイングレスが
externalに設定されていることを確認する。 - SQL 接続文字列が正しいことを確認する
- Azure SQL のファイアウォール規則を確認する
データが返されない
- Products テーブルが作成され、設定されたことを確認する
-
dab-config.jsonでエンティティのアクセス許可をチェックする - Container Apps のログでエラーを確認する
パフォーマンスが遅い
- CPU/メモリ割り当ての増加を検討する
- レプリカをスケールアップする必要があるかどうかを確認する
- Application Insights メトリックを確認する
運用環境のセキュリティのベスト プラクティス
- 認証を有効にする - 匿名アクセスの代わりに Microsoft Entra ID 認証を構成する
- マネージド ID を使用する - Container Apps がマネージド ID を使用して SQL に対して認証できるようにする
- CORS の実装 - MCP サーバーにアクセスできるドメインを制限する
- レート制限を有効にする - 不正使用から保護する
- Azure Key Vault を使用 する - 接続文字列を安全に格納する
- Application Insights を使用した監視 - 使用状況とパフォーマンスの追跡
- アクセス許可を制限 する - 必要なアクセス レベルのみを付与する
リソースをクリーンアップする
完了したら、リソース グループを削除してすべてのリソースを削除します。
az group delete --name $RESOURCE_GROUP --yes --no-wait