Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
Sql Model Context Protocol (MCP) Server je ve verzi Preview a tato dokumentace a implementace modulu se může změnit. I když je Tvůrce rozhraní API pro Data ve verzi 1.7 v režimu Preview, musíte explicitně použít předběžnou verzi (například 1.7.83-rc), protože funkce MCP ještě nejsou součástí značky :latest.
V tomto rychlém startu se dozvíte, jak nasadit SQL MCP Server do Azure Container Apps. Po nasazení se k němu můžete připojit z editoru Visual Studio Code (VS Code), Microsoft Foundry nebo jakéhokoli jiného klienta MCP (Model Context Protocol) jako vzdáleného koncového bodu serveru.
Požadavky
Předplatné Azure
Potřebujete aktivní předplatné Azure. Pokud ho nemáte, vytvořte si bezplatný účet Azure.
Azure CLI (příkazový řádek nástroje Azure)
Nainstalujte Azure CLI pro nasazení prostředků:
.NET 9 nebo novější
Tento nástroj už možná máte nainstalovaný. Spusťte dotnet --version a ověřte, že hlásí verzi 9 nebo novější.
Rozhraní příkazového řádku pro tvůrce dat
dotnet new tool-manifest
dotnet tool install microsoft.dataapibuilder --prerelease
Poznámka:
SQL MCP Server je aktuálně v předběžné verzi. Použití příznaku --prerelease zajišťuje, že získáte nejnovější verzi Tvůrce rozhraní Data API se všemi funkcemi použitými v tomto rychlém startu.
PowerShell
Pokud ještě není nainstalovaný, nainstalujte PowerShell.
dotnet tool install --global PowerShell
Krok 1: Vytvoření a nasazení služby Azure SQL Database
1. Přihlášení k Azure
az login
az account set --subscription "<your-subscription-id>"
2. Nastavení proměnných pro vaše nasazení
$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. Vytvoření skupiny prostředků
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
4. Vytvoření Azure SQL Serveru
az sql server create \
--name $SQL_SERVER \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--admin-user $SQL_ADMIN \
--admin-password $SQL_PASSWORD
5. Konfigurace brány firewall pro povolení služeb 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. Vytvoření databáze
az sql db create \
--resource-group $RESOURCE_GROUP \
--server $SQL_SERVER \
--name $SQL_DATABASE \
--service-objective S0
7. Vytvoření tabulky Products s ukázkovými daty
Nejprve získejte řetězec pro připojení:
$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;"
Vytvoření souboru create-products.sqlskriptu 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);
Spusťte ho pomocí VS Code, SQL Server Management Studio nebo sqlcmd.
Krok 2: Konfigurace SQL MCP Serveru
1. Vytvořte svůj dab-config.json
Inicializujte konfiguraci:
dab init `
--database-type mssql `
--connection-string "@env('MSSQL_CONNECTION_STRING')" `
--host-mode Production `
--config dab-config.json
2. Přidejte entitu Produkty s popisy
dab add Products `
--source dbo.Products `
--permissions "anonymous:read" `
--description "Product catalog with pricing, category, and inventory information"
3. Uveďte kontext agenta AI s popisy polí.
Přidejte popisy polí, které agentům AI pomůžou porozumět schématu databáze:
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"
Krok 3: Nasazení SQL MCP Serveru do Azure Container Apps
1. Vytvoření služby Azure Container Registry a sestavení vlastní image
Vytvořte registr kontejneru a sestavte vlastní image s vloženou konfigurací:
$ACR_NAME = "acrsqlmcp$(Get-Random -Minimum 1000 -Maximum 9999)"
az acr create `
--resource-group $RESOURCE_GROUP `
--name $ACR_NAME `
--sku Basic `
--admin-enabled true
2. Vytvoření souboru Dockerfile
Vytvořte soubor s názvem Dockerfile ve stejné složce jako vaše dab-config.json:
FROM mcr.microsoft.com/azure-databases/data-api-builder:1.7.83-rc
COPY dab-config.json /App/dab-config.json
3. Sestavení a nahrání obrazu
az acr build `
--registry $ACR_NAME `
--image sql-mcp-server:1 `
.
4. Vytvoření prostředí 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
5. Nasazení kontejneru SQL MCP Serveru
$ACR_LOGIN_SERVER = az acr show `
--name $ACR_NAME `
--query loginServer `
--output tsv
$ACR_USERNAME = az acr credential show `
--name $ACR_NAME `
--query username `
--output tsv
$ACR_PASSWORD = az acr credential show `
--name $ACR_NAME `
--query "passwords[0].value" `
--output tsv
az containerapp create `
--name $CONTAINERAPP_NAME `
--resource-group $RESOURCE_GROUP `
--environment $CONTAINERAPP_ENV `
--image "$ACR_LOGIN_SERVER/sql-mcp-server:1" `
--registry-server $ACR_LOGIN_SERVER `
--registry-username $ACR_USERNAME `
--registry-password $ACR_PASSWORD `
--target-port 5000 `
--ingress external `
--min-replicas 1 `
--max-replicas 3 `
--secrets "mssql-connection-string=$CONNECTION_STRING" `
--env-vars "MSSQL_CONNECTION_STRING=secretref:mssql-connection-string" `
--cpu 0.5 `
--memory 1.0Gi
Vaše skupina prostředků by měla vypadat podobně jako v následujícím příkladu:
6. Získání adresy URL koncového bodu MCP
$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"
Uložte tuto adresu URL – použijete ji pro připojení z klientů MCP.
Otestujte vaše nasazení
curl "https://$MCP_URL/health"
Měla by se zobrazit zdravá odpověď.
Připojení z klientů MCP
Váš SQL MCP Server je teď nasazený a připravený k použití. Tady je postup, jak se připojit z různých klientů:
Visual Studio Code (VS Code)
Postupujte podle pokynů k rychlému startu s průvodcem VS Code a místo místního spuštění použijte nasazenou adresu URL serveru MCP.
Pochází z Microsoft Foundry
Pokud chcete přidat server MCP jako vlastní nástroj MCP, postupujte podle pokynů v příručce Microsoft Foundry .
Ostatní klienti MCP
Pomocí adresy URL serveru MCP z kroku 3.6 se připojte z libovolného klienta kompatibilního s MCP.
Monitorování a řešení potíží
Zobrazení protokolů služby Container Apps
az containerapp logs show \
--name $CONTAINERAPP_NAME \
--resource-group $RESOURCE_GROUP \
--follow
Kontrola stavu koncového bodu MCP
curl "https://$MCP_URL/health"
Běžné problémy
Chyba selhání připojení
- Ujistěte se, že je ingresní nastavení Container Apps nastaveno na
external - Ověření správnosti připojovacího řetězce SQL
- Kontrola pravidel brány firewall v Azure SQL
Nevracená žádná data
- Ověřte, zda byla tabulka Products vytvořena a naplněna.
- Kontrola oprávnění entity v
dab-config.json - Kontrola chyb v protokolech Container Apps
Výkon je pomalý
- Zvažte zvýšení přidělení procesoru nebo paměti.
- Ověřte, zda potřebujete navýšit počet replik
- Prohlédnout metriky Application Insights
Osvědčené postupy zabezpečení pro produkční prostředí
- Povolení ověřování – Konfigurace ověřování Microsoft Entra ID místo anonymního přístupu
- Použití spravovaných identit – Povolit službě Container Apps ověřování v SQL pomocí spravované identity
- Implementace CORS – Omezení domén, které mají přístup k vašemu serveru MCP
- Povolení omezování rychlosti – ochrana před zneužitím
- Bezpečné použití služby Azure Key Vault – Zabezpečené ukládání připojovacích řetězců
- Monitorování pomocí Application Insights – Sledování využití a výkonu
- Omezení oprávnění – Udělení potřebných úrovní přístupu
Vyčistěte zdroje
Až budete hotovi, smažte skupinu prostředků a tím odstraníte všechny prostředky.
az group delete --name $RESOURCE_GROUP --yes --no-wait
Kompletní ukázkový skript
Tady je kompletní skript PowerShellu, který provede všechny kroky v tomto rychlém startu. Před spuštěním aktualizujte ID tenanta, ID předplatného a proměnné hesel.
Návod
Pro nasazení připravené pro produkční prostředí s ověřováním spravované identity, kontrolami stavu a automatickým vyčištěním se podívejte na skript ukázkového prostředí Data API builder.
# ============================================
# Variables - UPDATE THESE VALUES
# ============================================
$RESOURCE_GROUP = "rg-sql-mcp"
$LOCATION = "centralus"
$SQL_SERVER = "sql-mcp-$(Get-Random -Minimum 1000 -Maximum 9999)"
$SQL_DATABASE = "ProductsDB"
$SQL_ADMIN = "sqladmin"
$SQL_PASSWORD = "P@ssw0rd!" # Replace with a strong password
$ACR_NAME = "acrsqlmcp$(Get-Random -Minimum 1000 -Maximum 9999)"
$CONTAINERAPP_ENV = "sql-mcp-env"
$CONTAINERAPP_NAME = "sql-mcp-server"
# ============================================
# Sign in to Azure
# ============================================
az login --tenant "<your-tenant-id>"
az account set --subscription "<your-subscription-id>"
# ============================================
# Check if resource group exists and create unique name
# ============================================
$RG_COUNTER = 0
$ORIGINAL_RG = $RESOURCE_GROUP
while ($true) {
$RG_EXISTS = az group exists --name $RESOURCE_GROUP
if ($RG_EXISTS -eq "false") {
break
}
$RG_COUNTER++
$RESOURCE_GROUP = "$ORIGINAL_RG-$RG_COUNTER"
}
Write-Host "Using resource group: $RESOURCE_GROUP" -ForegroundColor Green
# ============================================
# Step 1: Create Azure SQL Database
# ============================================
az group create --name $RESOURCE_GROUP --location $LOCATION
az sql server create `
--name $SQL_SERVER `
--resource-group $RESOURCE_GROUP `
--location $LOCATION `
--admin-user $SQL_ADMIN `
--admin-password $SQL_PASSWORD
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
# Add current client IP to firewall
$MY_IP = (Invoke-RestMethod -Uri 'https://api.ipify.org?format=text')
az sql server firewall-rule create `
--resource-group $RESOURCE_GROUP `
--server $SQL_SERVER `
--name AllowMyIP `
--start-ip-address $MY_IP `
--end-ip-address $MY_IP
az sql db create `
--resource-group $RESOURCE_GROUP `
--server $SQL_SERVER `
--name $SQL_DATABASE `
--service-objective S0
$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;"
# Create sample table using sqlcmd
Write-Host "Creating Products table and sample data..." -ForegroundColor Yellow
$SQL_SCRIPT = @"
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);
"@
# Use Invoke-Sqlcmd if available, otherwise skip table creation
try {
$SQL_SCRIPT | Out-File -FilePath "create-table.sql" -Encoding utf8
sqlcmd -S "$SQL_SERVER.database.windows.net" -d $SQL_DATABASE -U $SQL_ADMIN -P $SQL_PASSWORD -i "create-table.sql"
Remove-Item "create-table.sql" -ErrorAction SilentlyContinue
Write-Host "Products table created successfully!" -ForegroundColor Green
} catch {
Write-Host "Note: Could not create table automatically. You can create it manually later." -ForegroundColor Yellow
Write-Host "SQL Script saved for manual execution if needed." -ForegroundColor Yellow
}
# ============================================
# Step 2: Configure SQL MCP Server
# ============================================
# Remove existing config if present
if (Test-Path "dab-config.json") {
Remove-Item "dab-config.json" -Force
}
dab init `
--database-type mssql `
--connection-string "@env('MSSQL_CONNECTION_STRING')" `
--host-mode Production `
--config dab-config.json
dab add Products `
--source dbo.Products `
--permissions "anonymous:read" `
--description "Product catalog with pricing, category, and inventory information"
# ============================================
# Step 3: Deploy to Azure Container Apps
# ============================================
az acr create `
--resource-group $RESOURCE_GROUP `
--name $ACR_NAME `
--sku Basic `
--admin-enabled true
# Create Dockerfile
@"
FROM mcr.microsoft.com/azure-databases/data-api-builder:1.7.83-rc
COPY dab-config.json /App/dab-config.json
"@ | Out-File -FilePath Dockerfile -Encoding utf8
az acr build --registry $ACR_NAME --image sql-mcp-server:1 .
az containerapp env create `
--name $CONTAINERAPP_ENV `
--resource-group $RESOURCE_GROUP `
--location $LOCATION
# Get ACR credentials for initial deployment
$ACR_LOGIN_SERVER = az acr show --name $ACR_NAME --query loginServer --output tsv
$ACR_USERNAME = az acr credential show --name $ACR_NAME --query username --output tsv
$ACR_PASSWORD = az acr credential show --name $ACR_NAME --query "passwords[0].value" --output tsv
az containerapp create `
--name $CONTAINERAPP_NAME `
--resource-group $RESOURCE_GROUP `
--environment $CONTAINERAPP_ENV `
--image "$ACR_LOGIN_SERVER/sql-mcp-server:1" `
--registry-server $ACR_LOGIN_SERVER `
--registry-username $ACR_USERNAME `
--registry-password $ACR_PASSWORD `
--target-port 5000 `
--ingress external `
--min-replicas 1 `
--max-replicas 3 `
--secrets "mssql-connection-string=$CONNECTION_STRING" `
--env-vars "MSSQL_CONNECTION_STRING=secretref:mssql-connection-string" `
--cpu 0.5 `
--memory 1.0Gi
# ============================================
# Output
# ============================================
$MCP_URL = az containerapp show `
--name $CONTAINERAPP_NAME `
--resource-group $RESOURCE_GROUP `
--query "properties.configuration.ingress.fqdn" `
--output tsv
Write-Host ""
Write-Host "Deployment complete!" -ForegroundColor Green
Write-Host "MCP Server URL: https://$MCP_URL/mcp" -ForegroundColor Cyan
Write-Host "Health check: https://$MCP_URL/health" -ForegroundColor Cyan