Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Это важно
Сервер протокола контекста модели SQL (MCP) доступен в Data API Builder версии 1.7 и выше.
SQL MCP Server поддерживает два транспорта: потоковую передачу HTTP для размещенных и облачных сценариев, а также stdio для локальной разработки и прямой интеграции агента. В этой статье рассматривается stdio транспорт.
В stdio режиме построитель данных (DAB) взаимодействует с клиентом MCP полностью через стандартный ввод/вывод (stdin/stdout). Http-сервер или сетевой порт не запущен. Клиент MCP запускает DAB как дочерний процесс и передает сообщения обратно и вперед с помощью протокола контекста модели (MCP).
Когда следует использовать stdio транспорт
| Сценарий | Рекомендуемый транспорт |
|---|---|
| Локальная разработка на рабочей станции разработчика | stdio |
| VS Code с GitHub Copilot (режим агента) | stdio |
| Конвейеры CI/CD или автоматизация с использованием скриптов агентами | stdio |
| Облачное размещение (приложения-контейнеры, служба приложений) | HTTP |
| Агент AI Foundry с удаленной конечной точкой MCP | HTTP |
| Команды агентов, совместно использующие одну конечную точку | HTTP |
Выберите stdio , когда требуется самая простая локальная настройка без открытых портов. Выберите HTTP, когда сервер MCP должен быть доступен в сети.
Необходимые условия
- Интерфейс командной строки построителя данных (версия 1.7 или новее)
- Существующий
dab-config.jsonс включенной функцией MCP (см. Требуемая конфигурация) - Клиент, совместимый с MCP (VS Code с GitHub Copilot, Claude Desktop или настраиваемым агентом)
Требуемая конфигурация
Перед использованием stdio транспорта включите MCP в dab-config.json:
"runtime": {
"mcp": {
"enabled": true,
"path": "/mcp",
"dml-tools": {
"describe-entities": true,
"create-record": true,
"read-records": true,
"update-record": true,
"delete-record": true,
"execute-entity": true,
"aggregate-records": true
}
}
}
Поле path используется только для транспорта HTTP и игнорируется в stdio режиме. Блок dml-tools определяет, какие операции обработки данных доступны в качестве средств MCP.
Это важно
Если "mcp": { "enabled": false } или mcp блок отсутствует, DAB не удается запустить в stdio режиме.
Запуск в режиме stdio
Используйте флаг на --mcp-stdiodab start:
dab start --mcp-stdio --config ./dab-config.json
Чтобы запуститься под определенной ролью разрешений, выполните следующие действия:
dab start --mcp-stdio role:authenticated --config ./dab-config.json
Аргумент role:<name> позиционный и должен немедленно следовать --mcp-stdio. Если его не указать, роль по умолчанию будет anonymous. Имя роли должно соответствовать роли, определенной в permissions разделе по крайней мере одной сущности в конфигурации.
Как работает режим stdio
Когда обнаруживается --mcp-stdio, DAB вносит во внутреннее состояние следующие изменения:
Кодировка UTF-8 (без метки порядка байтов)
Входные и выходные данные консоли вынуждены использовать UTF-8 без метки порядка байтов (BOM). Этот параметр UTF-8 необходим для чистого JSON-over-stdio взаимодействия, так как многие клиенты MCP отклоняют префиксированные потоки BOM.
Проверка подлинности симулятора
Аутентификатор принудительно устанавливается в режим симулятора, независимо от указаний в файле конфигурации. Этот режим моделирования позволяет применять указанную роль непосредственно без реального JSON-токена (JWT) или провайдера удостоверений. Поставщик симулятора предназначен для сценариев разработки и не должен использоваться для защиты рабочих конечных точек HTTP, но это правильно для локальных stdio сеансов.
Следующие значения применяются в памяти и переопределяют конфигурацию во время сеанса:
| Ключ | Ценность |
|---|---|
MCP:StdioMode |
"true" |
MCP:Role |
"<role-name>" или "anonymous" |
Runtime:Host:Authentication:Provider |
"Simulator" |
Нет прослушивателя HTTP
Хост ASP.NET Core запускается, и все службы регистрируются, но DAB вызывает stdio.RunAsync() вместо host.Run(). Порт TCP не привязан. Все сообщения протокола MCP передаются через stdin/stdout.
Доступные средства MCP
Следующие инструменты доступны в stdio режиме, в зависимости от вашей dml-tools конфигурации и разрешений сущности:
| инструмент | Описание |
|---|---|
describe_entities |
Список доступных сущностей и их полей и разрешений |
create_record |
Вставляет новую запись (только таблицы) |
read_records |
Считывает записи из сущности |
update_record |
Обновляет существующую запись |
delete_record |
Удаляет существующую запись (таблицы и представления) |
execute_entity |
Выполняет хранимую процедуру |
aggregate_records |
Выполняет агрегирование запросов к таблицам и представлениям |
Пользовательские средства MCP, поддерживаемые хранимыми процедурами, также регистрируются при использовании --mcp-stdio.
Настройка клиента MCP для stdio
Клиенты MCP, которые поддерживают транспортировку stdio, запускают DAB как подпроцесс и передают данные по каналам stdin/stdout. Синтаксис конфигурации клиента зависит от клиента.
VS Code (mcp.json)
{
"servers": {
"sql-mcp-server": {
"type": "stdio",
"command": "dab",
"args": [
"start",
"--mcp-stdio", "role:anonymous",
"--config", "{path}/dab-config.json",
"--LogLevel", "error"
]
}
}
}
Сохраните этот файл в .vscode/mcp.json папке проекта. VS Code автоматически обнаруживает конфигурацию и отображает сервер в MCP: список серверов. Так как клиент управляет жизненным циклом процесса, вам не нужно выполнять dab start отдельно в терминале.
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"sql-mcp-server": {
"type": "stdio",
"command": "dab",
"args": [
"start",
"--mcp-stdio", "role:anonymous",
"--config", "{path}/dab-config.json",
"--LogLevel", "error"
]
}
}
}
Совмещение с другими dab start параметрами
--mcp-stdio совместим со всеми другими dab start параметрами:
| Опция | Поведение с помощью --mcp-stdio |
|---|---|
--config |
Использует указанный файл конфигурации (аналогично режиму HTTP) |
--LogLevel |
Применяет указанный уровень журнала (errorрекомендуется для stdio) |
dab start \
--mcp-stdio role:api-reader \
--config ./dab-config.json \
--LogLevel Error
Режим устранения неполадок stdio
Failed to start the engine in MCP stdio mode
DAB не удалось запустить. Проверьте следующие моменты:
- Файл конфигурации действителен: выполните команду
dab validate --config <path> - Строка подключения к вашей базе данных правильная и доступная.
- MCP включен в конфигурации:
"mcp": { "enabled": true }
Разрешение на вызовы средства MCP запрещено
Роль, указанная в role:<name>, не имеет необходимых разрешений для сущности и операции.
permissions Проверьте раздел соответствующей сущности в конфигурации.
Средства MCP не перечислены
dml-tools Либо задано false глобально, либо сущность имеет "dml-tools": false свои mcp параметры. Кроме того, убедитесь, что mcp.enabled является true.
Ошибки искажённого вывода или разбора JSON
Убедитесь, что в коде запуска ничего не записывает в stdout текст, не являющийся JSON, перед запуском сервера MCP. Выходные данные журнала должны переходить к stderr или файлу журнала, а не stdout. При необходимости используйте --LogLevel для подавления подробных сообщений о запуске.