Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Der SQL Model Context Protocol (MCP)-Server ist in Daten-API-Generator, Version 1.7 und höher, verfügbar.
In dieser Schnellstartanleitung erfahren Sie, wie Sie SQL MCP Server für Azure Container Apps bereitstellen. Nach der Bereitstellung können Sie über Visual Studio Code (VS Code), Microsoft Foundry oder einen anderen MCP-Client (Model Context Protocol) als Remoteserverendpunkt eine Verbindung damit herstellen.
Sequenzdiagramm, das den ACA-Bereitstellungsworkflow zeigt.
Voraussetzungen
Azure-Abonnement
Sie benötigen ein aktives Azure-Abonnement. Wenn Sie kein Konto haben, create a free Azure account.
Azure CLI
Installieren Sie die Azure CLI, um Ressourcen bereitzustellen:
- Windows
- macOS
winget install Microsoft.AzureCLI
.NET 9+
Möglicherweise ist dieses Tool bereits installiert. Führen Sie aus und bestätigen Sie, dass die Version 9 oder höher angezeigt wird.
- Windows
- macOS
winget install Microsoft.DotNet.Runtime.9
CLI des Daten-API-Builders
dotnet new tool-manifest
dotnet tool install microsoft.dataapibuilder
Hinweis
SQL MCP Server-Features sind in Data API Builder Version 1.7 und höher verfügbar.
PowerShell
Installieren Sie PowerShell , wenn sie noch nicht installiert ist.
dotnet tool install --global PowerShell
Schritt 1: Erstellen und Bereitstellen von Azure SQL-Datenbank
1. Melden Sie sich bei Azure an
az login
az account set --subscription "<your-subscription-id>"
2. Variablen für Ihre Bereitstellung festlegen
$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. Erstellen einer Ressourcengruppe
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
4. Erstellen von 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. Konfigurieren der Firewall, um Azure Dienste zuzulassen
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. Erstellen der Datenbank
az sql db create \
--resource-group $RESOURCE_GROUP \
--server $SQL_SERVER \
--name $SQL_DATABASE \
--service-objective S0
7. Erstellen einer Products-Tabelle mit Beispieldaten
Rufen Sie Ihre Connection String zuerst ab:
$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;"
Erstellen einer SQL-Skriptdatei :
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);
Führen Sie sie mithilfe von VS Code, SQL Server Management Studio oder sqlcmd aus.
Schritt 2: Konfigurieren des SQL MCP-Servers
1. Erstellen Sie Ihre dab-config.json
Initialisieren Sie die Konfiguration:
dab init `
--database-type mssql `
--connection-string "@env('MSSQL_CONNECTION_STRING')" `
--host-mode Production `
--config dab-config.json
2. Hinzufügen der Entität "Products" mit Beschreibungen
dab add Products `
--source dbo.Products `
--permissions "anonymous:read" `
--description "Product catalog with pricing, category, and inventory information"
3. Bereitstellen des KI-Agent-Kontexts mit Feldbeschreibungen
Fügen Sie Feldbeschreibungen hinzu, um KI-Agents dabei zu helfen, Ihr Datenbankschema zu verstehen:
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"
Schritt 3: Bereitstellen von SQL MCP Server für Azure Container Apps
1. Erstellen Sie ein Azure Container Registry und ein benutzerdefiniertes Image.
Erstellen Sie eine Containerregistrierung, und erstellen Sie ein benutzerdefiniertes Image mit eingebetteter Konfiguration:
$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. Erstellen einer Dockerfile-Datei
Erstellen Sie eine Datei im selben Ordner wie Ihr :
FROM mcr.microsoft.com/azure-databases/data-api-builder:1.7
COPY dab-config.json /App/dab-config.json
3. Erstellen und Übertragen des Images
az acr build `
--registry $ACR_NAME `
--image sql-mcp-server:1 `
.
4. Erstellen einer Container-Apps-Umgebung
$CONTAINERAPP_ENV = "sql-mcp-env"
$CONTAINERAPP_NAME = "sql-mcp-server"
az containerapp env create `
--name $CONTAINERAPP_ENV `
--resource-group $RESOURCE_GROUP `
--location $LOCATION
5. Bereitstellen des SQL MCP Server-Containers
$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
Ihre Ressourcengruppe sollte dem folgenden Beispiel ähneln:
Rufen Sie Ihre MCP-Endpunkt-URL ab
$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"
Speichern Sie diese URL – Sie verwenden sie, um eine Verbindung von MCP-Clients herzustellen.
Testen Sie Ihre Bereitstellung
curl "https://$MCP_URL/health"
Es sollte eine gesunde Antwort erscheinen.
Verbindung von MCP-Clients herstellen
Ihr SQL MCP-Server wird jetzt bereitgestellt und kann verwendet werden. Hier erfahren Sie, wie Sie eine Verbindung von verschiedenen Clients herstellen:
Visual Studio Code (VS-Code)
Folgen Sie der Schnellstartanleitung mit VS Code , und verwenden Sie die bereitgestellte MCP-Server-URL, anstatt lokal auszuführen.
Von Microsoft Foundry
Wenn Sie Ihren MCP-Server als benutzerdefiniertes MCP-Tool hinzufügen möchten, folgen Sie der Schnellstartanleitung mit microsoft Foundry .
Andere MCP-Clients
Verwenden Sie die MCP-Server-URL aus Schritt 3.6, um eine Verbindung von einem beliebigen MCP-kompatiblen Client herzustellen.
Überwachung und Problembehandlung
Container-App-Protokolle anzeigen
az containerapp logs show \
--name $CONTAINERAPP_NAME \
--resource-group $RESOURCE_GROUP \
--follow
Überprüfen der MCP-Endpunktintegrität
curl "https://$MCP_URL/health"
Häufig auftretende Probleme
Verbindungsfehler aufgetreten
- Stellen Sie sicher, dass der Ingress von Container-Apps auf festgelegt ist
- Überprüfen, ob die SQL-Verbindungszeichenfolge korrekt ist
- Überprüfen von Firewallregeln für Azure SQL
Es wurden keine Daten zurückgegeben.
- Überprüfen, ob die Tabelle "Produkte" erstellt und ausgefüllt wurde
- Entitätsberechtigungen in überprüfen
- Überprüfen Sie die Container-Apps-Protokolle auf Fehler
Die Leistung ist langsam.
- Erwägen Sie, die CPU-/Speicherzuweisung zu erhöhen
- Überprüfen Sie, ob die Replikate skaliert werden müssen.
- Anwendungseinblicke-Metriken überprüfen
Bewährte Methoden für die Sicherheit für die Produktion
- Enable authentication – Konfigurieren Microsoft Entra ID Authentifizierung anstelle des anonymen Zugriffs
- Verwaltete Identitäten verwenden – Ermöglichen Sie, dass Container-Apps sich bei SQL mithilfe von verwalteten Identitäten authentifizieren
- Implementieren von CORS – Einschränken, welche Domänen auf Ihren MCP-Server zugreifen können
- Aktivieren von Ratenbeschränkungen – Schutz vor Missbrauch
- Use Azure Key Vault – Speichern von Verbindungszeichenfolgen sicher
- Überwachen mit Application Insights – Nachverfolgen der Nutzung und Leistung
- Berechtigungen einschränken – Nur erforderliche Zugriffsebenen gewähren
Bereinigen von Ressourcen
Wenn Sie fertig sind, löschen Sie die Ressourcengruppe, um alle Ressourcen zu entfernen:
az group delete --name $RESOURCE_GROUP --yes --no-wait
Vollständiges Beispielskript
Hier ist ein vollständiges PowerShell-Skript, das alle Schritte in dieser Schnellstartanleitung ausführt. Aktualisieren Sie vor der Ausführung die Mandanten-ID, die Abonnement-ID und die Kennwortvariablen.
Tipp
Eine produktionsbereite Bereitstellung mit verwalteter Identitätsauthentifizierung, Integritätsprüfungen und automatischer Bereinigung finden Sie im Demoumgebungsskript des Daten-API-Generators.
# ============================================
# 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
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
Verwandte Inhalte
- Übersicht über SQL MCP Server
- Datenmanipulationstools in SQL MCP Server
- Hinzufügen von semantischen Beschreibungen zu SQL MCP Server