Compartir a través de


Inicio rápido: Uso de SQL MCP Server con Azure Container Apps

Importante

SQL MCP Server está en versión preliminar y esta documentación y la implementación del motor está sujeta a cambios durante este período de evaluación.

En este inicio rápido se muestra cómo implementar SQL MCP Server en Azure Container Apps. Una vez implementado, puede conectarse a él desde Visual Studio Code (VS Code), Microsoft Foundry o cualquier otro cliente de Protocolo de contexto de modelo (MCP) como punto de conexión de servidor remoto.

Diagrama que muestra un servidor MCP de SQL implementado en Azure Container Apps.

Prerrequisitos

Suscripción de Azure

Necesita una suscripción de Azure activa. Si no tiene una:

https://azure.microsoft.com/free

CLI de Azure

Instale la CLI de Azure para implementar recursos:

Windows

winget install Microsoft.AzureCLI

macOS

brew install azure-cli

.NET 9+

Es posible que ya tenga instalada esta herramienta. Ejecute dotnet --version y confirme que informa de la versión 9 o posterior.

Windows

winget install Microsoft.DotNet.Runtime.9

CLI del Constructor de API de Datos

dotnet new tool-manifest
dotnet tool install microsoft.dataapibuilder --prerelease

Nota:

SQL MCP Server se encuentra actualmente en versión preliminar. El uso de la --prerelease marca garantiza que obtiene la versión más reciente de Data API Builder con todas las características que se usan en este inicio rápido.

PowerShell

Instale PowerShell si aún no está instalado.

dotnet tool install --global PowerShell

Paso 1: Creación e implementación de Azure SQL Database

1. Inicio de sesión en Azure

az login
az account set --subscription "<your-subscription-id>"

2. Establecer variables para la implementación

$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. Creación de un grupo de recursos

az group create \
  --name $RESOURCE_GROUP \
  --location $LOCATION

4. Creación de 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. Configuración del firewall para permitir servicios de 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. Creación de la base de datos

az sql db create \
  --resource-group $RESOURCE_GROUP \
  --server $SQL_SERVER \
  --name $SQL_DATABASE \
  --service-objective S0

7. Crear una tabla Products con datos de ejemplo

Primero obtenga la cadena de conexión:

$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;"

Crear un archivo create-products.sql de script 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);

Ejecútelo mediante VS Code, SQL Server Management Studio o sqlcmd.

Paso 2: Configurar SQL MCP Server

1. Crea un dab-config.json

Inicialice la configuración:

dab init `
  --database-type mssql `
  --connection-string "@env('MSSQL_CONNECTION_STRING')" `
  --host-mode Production `
  --config dab-config.json

2. Agregar la entidad Productos con descripciones

dab add Products `
  --source dbo.Products `
  --permissions "anonymous:read" `
  --description "Product catalog with pricing, category, and inventory information"

3. Proporcionar contexto del agente de IA con descripciones de campo

Agregue descripciones de campos para ayudar a los agentes de inteligencia artificial a comprender el esquema de la base de datos:

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"

Paso 3: Implementación de SQL MCP Server en Azure Container Apps

1. Creación de un entorno de 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. Creación de una configuración codificada en 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. Implementación del contenedor de 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

El grupo de recursos debe ser similar al ejemplo siguiente:

Captura de pantalla del grupo de recursos de Azure Portal después de la implementación.

4. Obtención de la dirección URL del punto de conexión de 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"

Guarde esta dirección URL: la usará para conectarse desde clientes MCP.

5. Probar la implementación

curl "https://$MCP_URL/health"

Debería ver una respuesta adecuada.

Conexión desde clientes MCP

El servidor MCP de SQL ahora está implementado y listo para usarse. A continuación se muestra cómo conectarse desde varios clientes:

Visual Studio Code (VS Code)

Siga la guía Inicio Rápido con VS Code y utilice la URL del servidor MCP implementado en lugar de ejecutarlo localmente.

De la Microsoft Foundry

Para agregar el servidor MCP como una herramienta de MCP personalizada, siga la guía de inicio rápido con Microsoft Foundry .

Otros clientes MCP

Use la dirección URL del servidor MCP del paso 3.4 para conectarse desde cualquier cliente compatible con MCP.

Supervisión y solución de problemas

Visualización de registros de Container Apps

az containerapp logs show \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --follow

Comprobación del estado del punto de conexión de MCP

curl "https://$MCP_URL/health"

Problemas comunes

Error de conexión

  • Asegúrese de que la entrada de Container Apps esté establecida en external
  • Comprobación de que la cadena de conexión de SQL es correcta
  • Comprobación de reglas de firewall en Azure SQL

No se devuelven datos

  • Compruebe que la tabla Products se ha creado y rellenado
  • Verificar los permisos de entidad en dab-config.json
  • Revisión de los registros de Container Apps para ver si hay errores

El rendimiento es lento

  • Considere la posibilidad de aumentar la asignación de CPU/memoria
  • Compruebe si necesita aumentar el número de réplicas.
  • Revisión de las métricas de Application Insights

Procedimientos recomendados de seguridad para producción

  • Habilitar autenticación - Configurar la autenticación de Microsoft Entra ID en lugar del acceso anónimo
  • Uso de identidades administradas : permitir que Container Apps se autentique en SQL mediante la identidad administrada
  • Implementación de CORS : restricción de los dominios que pueden acceder al servidor MCP
  • Habilitación de la limitación de velocidad : protección contra el abuso
  • Uso de Azure Key Vault : almacenamiento de cadenas de conexión de forma segura
  • Supervisión con Application Insights: seguimiento del uso y el rendimiento
  • Restringir permisos: conceda solo los niveles de acceso necesarios.

Limpieza de recursos

Cuando haya terminado, elimine el grupo de recursos para quitar todos los recursos:

az group delete --name $RESOURCE_GROUP --yes --no-wait

Contenido externo