Что такое SQL MCP Server?

Это важно

Сервер протокола контекста модели SQL (MCP) доступен в Data API Builder версии 1.7 и выше.

SQL MCP Server предоставляет разработчикам простой, предсказуемый и безопасный способ переноса агентов ИИ в рабочие процессы данных. SQL MCP Server выполняет эту задачу, не предоставляя базу данных или опираясь на хрупкий анализ естественного языка. Сервер основывается на абстракции сущностей построителя данных, RBAC, кэшировании и телеметрии для предоставления готовой к производству операционной среды, которая функционирует одинаково в REST, GraphQL и MCP. Вы настраиваете его один раз, а движок обрабатывает остальное.

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

Протокол контекста модели (MCP)

Протокол контекста модели (MCP) — это стандарт, определяющий, как агенты ИИ обнаруживают и вызывают внешние средства. Инструмент — это одна операция, например создание записи или чтение данных. Каждое средство описывает свои входные данные, выходные данные и поведение. MCP предоставляет предсказуемый способ обнаружения и использования возможностей агентов.

СЕРВЕР MCP для SQL

SQL MCP Server — это динамический механизм microsoft открытый код для агентических приложений. Вы настраиваете его с помощью JSON-файла, который определяет следующее:

  • Подключение к базе данных
  • Какие таблицы, представления или хранимые процедуры следует предоставить
  • Разрешения, применяемые к каждому объекту

SQL MCP Server входит в состав построителя API данных (DAB) начиная с версии 1.7. Она предоставляет операции SQL в виде небольшого семейства средств MCP , чтобы агенты могли взаимодействовать с сущностями базы данных с помощью управляемого контракта. Сервер размещается самостоятельно, но для разработчиков он также может выполняться локально через командную строку DAB.

Подсказка

Построитель API данных — это с открытым исходным кодом и его можно использовать бесплатно.

Сведения о протоколе MCP

SQL MCP Server реализует протокол MCP версии 2025-06-18 как фиксированный по умолчанию. Она поддерживает два транспорта: потоковую передачу HTTP для стандартных сценариев размещения и stdio для локальных сценариев или сценариев CLI. Во время инициализации сервер объявляет возможности инструментов и ведения журнала, возвращает метаданные сервера, такие как имя и версия DAB, и включает поле из , чтобы клиенты понимали назначение сервера.

Инспектор MCP

Для конечных точек MCP на основе HTTP, например, когда DAB работает на http://localhost:5000/mcp, запустите инспектор MCP в режиме прокси, передав URL-адрес конечной точки напрямую.

Сначала запустите построитель API данных:

dab start

Затем в другом терминале запустите инспектор MCP с URL-адресом конечной точки:

npx -y @modelcontextprotocol/inspector http://localhost:5000/mcp

Это маршрутизирует запросы через прокси-сервер инспектора и помогает избежать проблем с заголовками браузера CORS и сеансов, например Mcp-Session-Id , которые могут возникать в прямом режиме.

Транспорт Stdio

Транспорт stdio полезен для локальных рабочих процессов разработки и интерфейса командной строки. Вы можете указать роль с параметром role:<role-name>, которая по умолчанию anonymous, если не указано иное. В этом режиме проверка подлинности использует поставщика симулятора, а входящие запросы ограничены 1 МБ.

dab start --mcp-stdio
dab start --mcp-stdio role:<role-name>

Случаи использования

Ниже приведены некоторые типичные варианты использования ДЛЯ SQL MCP Server:

  • Разрешить копилотам или чат-ботам выполнять безопасные операции CRUD
  • Создание внутренних автоматизации без написания SQL
  • Добавление возможностей агента без предоставления базы данных напрямую

Защита схемы

Построитель данных использует хорошо определенный уровень абстракции сущностей , который перечисляет все таблицы, представления и хранимые процедуры, предоставляемые через API в конфигурации. Этот слой позволяет псевдонимировать имена и столбцы, описывать объекты и параметры, а также ограничивать доступные поля для разных ролей.

Это важно

Построитель API данных (DAB) учитывает роли и предоставляет доступ только к тем сущностям и операциям, к которым текущая роль имеет разрешение.

Так как SQL MCP Server является компонентом построителя API данных, он также использует этот уровень абстракции. Этот подход предотвращает предоставление внутренней схемы внешним потребителям и позволяет определять сложные, а также даже межисточниковые семейства объектов и связей на уровне API.

Решение NL2SQL

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

Why? Модели не являются детерминированными, и сложные запросы наиболее вероятно могут вызвать тонкие ошибки. Эти сложные запросы часто являются теми, которые пользователи надеются, что ИИ может сгенерировать, но они также те, которые требуют наибольшего внимания при создании недетерминированным способом.

Замечание

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

Вместо этого SQL MCP Server поддерживает модель NL2DAB. Этот подход использует безопасный уровень абстракции сущностей построителя данных и встроенного построителя запросов DAB. Вместе они создают точные, хорошо сформированные Transact-SQL (T-SQL) полностью детерминированным образом. Этот подход устраняет риск, издержки и неприятности, связанные с NL2SQL, сохраняя безопасность и надежность для созданных агентом запросов.

Поддержка DDL

DDL (язык определения данных) — это язык базы данных, используемый для создания и изменения объектов, таких как таблицы и представления. SQL MCP Server основан на DML (языке обработки данных) — языке базы данных, используемом для создания, чтения, обновления и удаления данных в существующих таблицах и представлениях. DML также охватывает выполнение хранимых процедур. В результате SQL MCP Server предназначен для работы с данными, а не схемой. Эта конструкция соответствует рабочим вариантам использования MCP, в которых агенты ИИ взаимодействуют с критически важными или бизнес-конфиденциальными системами.

Подсказка

Чтобы изменить схему во время локальной разработки, можно использовать расширение Microsoft SQL Server (MSSQL) в Visual Studio Code, которое обеспечивает полную поддержку DDL.

Поддержка RBAC

SQL MCP Server использует ту же проверенную систему управления доступом на основе ролей (RBAC), используемую в построителе API данных. Каждая сущность в конфигурации определяет, какие роли могут считывать, создавать, обновлять или удалять данные, а также какие поля включены или исключены для этих ролей. Эти правила применяются автоматически к каждому инструменту MCP, обеспечивая согласованность безопасности в REST, GraphQL и MCP без дополнительной настройки.

Это важно

Ограничения на основе ролей применяются на каждом шаге взаимодействия агента.

Поддержка кэширования

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

Поддержка мониторинга

SQL MCP Server выдает журналы и данные телеметрии, позволяющие предприятиям отслеживать и проверять активность с одной панели стекла. Эта возможность включает Azure Log Analytics, Application Insights и локальные журналы файлов в контейнере.

Телеметрия

SQL MCP Server полностью инструментирован с помощью диапазонов и действий OpenTelemetry (OTEL). Каждая операция отслеживается, чтобы разработчики могли сопоставлять поведение между распределенными системами. Дополнительные сведения о поддержке Open Telemetry в построителе данных.

Медицинские проверки

SQL MCP Server обеспечивает подробные проверки работоспособности и сущностей в конечных точках REST, GraphQL и MCP. Работоспособность построителя данных позволяет разработчикам определять ожидания производительности, задавать пороговые значения и проверять, работает ли каждая конечная точка должным образом.

Настройка SQL MCP Server

MCP настраивается в файле конфигурации DAB. Если у вас уже есть рабочая конфигурация для создания API данных, обновление до версии 1.7 или более поздней автоматически создает рабочий сервер SQL MCP без дополнительных шагов.

Конфигурация

Вы можете включить MCP глобально или на уровне сущности. Эта возможность позволяет выбрать, какие объекты будут отображаться в средствах MCP, а какие останутся недоступными для агентов. MCP соответствует тем же правилам, которые используются для REST и GraphQL, поэтому конфигурация остается единственным источником истины для разрешений, проекций и политик.

При включении MCP SQL MCP Server автоматически создает область инструментов на основе конфигурации. Вы не определяете средства MCP вручную. Встроенная dml-tools система обнаруживает и предоставляет сущности процедурно, что хорошо масштабируется от небольших схем до очень больших баз данных.

Начало работы

Начало работы означает создание dab-config.json для управления двигателем. Эту задачу можно выполнить вручную или с помощью CLI Data API Builder (DAB). Интерфейс командной строки упрощает задачу, позволяя инициализировать файл с помощью одной команды. Значения свойств конфигурации могут использовать литеральные строки, переменные среды environment или секреты из Azure Key Vault.

dab init --database-type mssql --connection-string "<your-connection-string>" --config dab-config.json --host-mode development

Вы можете указать каждую таблицу, представление или хранимую процедуру, которую требуется предоставить SQL MCP Server, добавив их в конфигурацию. Интерфейс командной строки позволяет легко добавлять их, назначать псевдонимы, настраивать их разрешения и сопоставлять столбцы, если вы хотите. Самое главное, с description помощью свойства можно включить семантические сведения, чтобы помочь языковым моделям лучше понять данные.

dab add {entity-name} \                          # object alias (Employees)
  --source {table-or-view-name} \                # database object (dbo.Employees)
  --source.type {table|view|stored-procedure} \  # object type (table)
  --permissions "{role:actions}" \               # role and allowed actions (anonymous:*)
  --description "{text}"                         # semantic description (Company employee records)

Параметры среды выполнения

Сервер SQL MCP включен по умолчанию в конфигурации API построителя данных. В большинстве случаев вам не нужно добавлять параметры. Сервер автоматически следует тем же разрешениям и правилам безопасности, что и API и база данных. Настройте MCP только в том случае, если вы хотите сузить или ограничить возможности агентов.

"runtime": {
  "mcp": {
    "enabled": true,              // default: true
    "path": "/mcp",               // default: /mcp
    "dml-tools": {
      "describe-entities": true,  // default: true
      "create-record": true,      // default: true
      "read-records": true,       // default: true
      "update-record": true,      // default: true
      "delete-record": true,      // default: true
      "execute-entity": true,     // default: true
      "aggregate-records": true   // default: true
    }
  }
}

Установите dml-tools в true или false, чтобы включить или отключить все инструменты, или используйте объект с переключателями для каждого инструмента. Средство aggregate-records также может принимать объект с свойствами enabledquery-timeout (1–600 секунд, по умолчанию 30). Полный справочник по конфигурации см. в разделе "Конфигурация среды выполнения MCP".

Интерфейс командной строки также позволяет задать каждое свойство по отдельности или программно с помощью скриптов.

dab configure --runtime.mcp.enabled true
dab configure --runtime.mcp.path "/mcp"
dab configure --runtime.mcp.dml-tools.describe-entities true
dab configure --runtime.mcp.dml-tools.create-record true
dab configure --runtime.mcp.dml-tools.read-records true
dab configure --runtime.mcp.dml-tools.update-record true
dab configure --runtime.mcp.dml-tools.delete-record true
dab configure --runtime.mcp.dml-tools.execute-entity true
dab configure --runtime.mcp.dml-tools.aggregate-records.enabled true

Почему нужно отключить отдельные инструменты?

Разработчикам может потребоваться ограничить определенные действия, даже если разрешения ролей или сущностей позволяют им. Отключение средства на уровне среды выполнения гарантирует, что он никогда не отображается для агентов. Например, отключение delete_record полностью скрывает возможность удаления независимо от конфигурации в других местах. Этот сценарий является редким, но полезным, если требуются строгие операционные границы.

Параметры сущности

Кроме того, вам не нужно включить MCP для каждой сущности. Сущности участвуют автоматически, если вы не решили ограничить их. Свойство mcp существует таким образом, чтобы можно было исключить сущность из MCP или сузить ее возможности, но вам не нужно ничего устанавливать для нормального использования. Настройки по умолчанию обрабатывают все.

Используйте формат объекта для конфигурации MCP на уровне сущности:

"entities": {
  "Products": {
    "mcp": {
      "dml-tools": true
    }
  },
  "SensitiveData": {
    "mcp": {
      "dml-tools": false
    }
  }
}

Для сущностей, связанных с хранимыми процедурами, можно также включить custom-tool для регистрации процедуры как именованного инструмента MCP:

"entities": {
  "GetBookById": {
    "source": {
      "type": "stored-procedure",
      "object": "dbo.get_book_by_id"
    },
    "mcp": {
      "custom-tool": true
    }
  }
}

Когда custom-tool это true, SQL MCP Server регистрирует хранимую процедуру в качестве именованного средства с помощью tools/list и tools/call, позволяя агентам обнаруживать и вызывать её непосредственно по имени. Свойство custom-tool допустимо только для сущностей хранимой процедуры.

Замечание

Функции SQL MCP Server 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.

Средства DML

SQL MCP Server предоставляет семь средств языка обработки данных (DML), которые позволяют агентам ИИ выполнять безопасные, типобезопасные операции базы данных: describe_entities, , create_recordread_records, update_recorddelete_record, execute_entityи .aggregate_records Эти средства формируют прогнозируемую поверхность CRUD, которая всегда отражает конфигурацию, разрешения и схему.

Каждое средство учитывает управление доступом на основе ролей (RBAC), разрешения сущностей и политики. Агенты никогда не взаимодействуют напрямую с базой данных. Они работают через безопасный уровень абстракции Data API builder.

Пользовательские инструменты MCP

Помимо встроенных средств DML, SQL MCP Server поддерживает пользовательские средства MCP, производные от хранимых процедур. Когда вы устанавливаете "custom-tool": true на сущность хранимой процедуры, DAB регистрирует её как именованный инструмент через MCP tools/list и tools/call. Этот подход позволяет агентам обнаруживать и вызывать хранимые процедуры непосредственно по имени, дополняя универсальный execute_entity инструмент DML.

Трассировка OpenTelemetry для MCP

Выполнение инструмента MCP полностью инструментировано с помощью диапазонов OpenTelemetry (OTEL). Каждый вызов средства MCP создает данные трассировки вместе с операциями REST и GraphQL, обеспечивая унифицированную наблюдаемость во всех поверхностях API. Узнайте больше о трассировке OpenTelemetry.

Замечание

Функции SQL MCP Server 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.