Поделиться через


Краткое руководство: Использование SQL MCP Server с приложениями Azure Container Apps

Это важно

SQL MCP Server находится в предварительной версии, и эта документация, и реализация подсистемы подлежит изменению в течение этого ознакомительного периода.

В этом кратком руководстве показано, как развернуть SQL MCP Server в приложениях контейнеров Azure. После развертывания вы можете подключиться к нему из Visual Studio Code (VS Code), Microsoft Foundry или любого другого клиента протокола контекста модели (MCP) в качестве удаленной конечной точки сервера.

Схема, на которую показан сервер SQL MCP, развернутый в приложениях контейнеров Azure.

Предпосылки

Подписка Azure

Вам нужна активная подписка Azure. Если у вас нет одного:

https://azure.microsoft.com/free

Azure CLI (Интерфейс командной строки для Azure)

Установите Azure CLI для развертывания ресурсов:

Виндоус

winget install Microsoft.AzureCLI

macOS

brew install azure-cli

.NET 9+

Возможно, у вас уже установлено это средство. Запустите dotnet --version и убедитесь, что он сообщает версию 9 или более позднюю.

Виндоус

winget install Microsoft.DotNet.Runtime.9

CLI конструктора API для данных

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

Замечание

SQL MCP Server в настоящее время находится в предварительном выпуске. Использование флага --prerelease гарантирует, что вы получите последнюю версию конструктора API данных со всеми функциями, используемыми в этом кратком руководстве.

PowerShell

Установите PowerShell , если он еще не установлен.

dotnet tool install --global PowerShell

Шаг 1. Создание и развертывание базы данных SQL Azure

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

Создание файла скрипта SQLcreate-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 Server

1. Создайте dab-config.json

Инициализация конфигурации:

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

2. Добавление сущности Продукты с описаниями

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

3. Укажите контекст агента ИИ с описанием полей

Добавьте описания полей, чтобы помочь агентам ИИ понять схему базы данных:

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

1. Создание среды для контейнерных приложений

$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

Ваши группы ресурсов должны, например, быть следующими:

Снимок экрана: группа ресурсов портала Azure после развертывания.

4. Получение URL-адреса конечной точки 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"

Сохраните этот URL-адрес— вы используете его для подключения от клиентов MCP.

5. Протестируйте развертывание

curl "https://$MCP_URL/health"

Вы должны увидеть здоровый ответ.

Подключение из клиентов MCP

Сервер SQL MCP теперь развернут и готов к использованию. Вот как подключиться с помощью различных клиентов:

Visual Studio Code (VS Code)

Следуйте краткому руководству по VS Code и используйте URL-адрес развернутого сервера MCP вместо запуска локально.

Из Microsoft Foundry

Чтобы добавить сервер MCP как пользовательский инструмент MCP, следуйте руководству по быстрому началу работы с Microsoft Foundry.

Другие клиенты MCP

Используйте URL-адрес сервера MCP из шага 3.4 для подключения от любого клиента, совместимого с MCP.

Мониторинг и устранение неполадок

Просмотр журналов контейнерных приложений

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

Проверка работоспособности конечной точки MCP

curl "https://$MCP_URL/health"

Общие проблемы

Ошибка подключения

  • Убедитесь, что для входящего трафика для контейнерных приложений задано значение external
  • Проверка правильности строки подключения SQL
  • Проверка правил брандмауэра в SQL Azure

Данные не возвращаются

  • Проверка создания и заполнения таблицы Products
  • Проверьте разрешения сущности в dab-config.json
  • Просмотр журналов контейнерных приложений на наличие ошибок

Производительность замедляется

  • Рассмотрите возможность увеличения выделения ЦП и памяти
  • Проверьте, нужно ли масштабировать реплики
  • Просмотр метрик Application Insights

Рекомендации по обеспечению безопасности для рабочей среды

  • Включите проверку подлинности — настройте проверку подлинности Microsoft Entra ID вместо анонимного доступа
  • Использование управляемых удостоверений . Разрешить приложениям-контейнерам проходить проверку подлинности в SQL с помощью управляемого удостоверения
  • Реализовать CORS – Ограничить, каким доменам разрешен доступ к вашему MCP серверу.
  • Включение ограничения скорости — защита от злоупотреблений
  • Безопасное использование Azure Key Vault — хранение строк подключения
  • Мониторинг с помощью Application Insights — отслеживание использования и производительности
  • Ограничение разрешений. Предоставление необходимых уровней доступа

Очистите ресурсы

После завершения удалите группу ресурсов, чтобы удалить все ресурсы:

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

Внешнее содержимое