Files
2026-07-13 13:31:35 +08:00

26 KiB

Введение в интеграцию MCP с базой данных

🎯 Что охватывает эта лабораторная работа

Данная вводная лабораторная работа предоставляет всесторонний обзор создания серверов Model Context Protocol (MCP) с интеграцией базы данных. Вы узнаете бизнес-кейс, техническую архитектуру и реальные примеры применения на примере аналитики Zava Retail из https://github.com/microsoft/MCP-Server-and-PostgreSQL-Sample-Retail.

Обзор

Model Context Protocol (MCP) обеспечивает безопасный доступ помощников ИИ к внешним источникам данных и взаимодействие с ними в реальном времени. В сочетании с интеграцией баз данных MCP открывает мощные возможности для приложений ИИ, основанных на данных.

Этот учебный путь научит вас создавать готовые к производству MCP серверы, которые связывают помощников ИИ с данными по розничным продажам через PostgreSQL, реализуя корпоративные паттерны, такие как безопасность на уровне строк, семантический поиск и доступ к данным нескольких арендаторов.

Учебные цели

К концу этой лабораторной работы вы сможете:

  • Определить Model Context Protocol и его ключевые преимущества для интеграции с базами данных
  • Выделить основные компоненты архитектуры MCP сервера с базами данных
  • Понять кейс Zava Retail и его бизнес-требования
  • Распознать корпоративные паттерны для безопасного и масштабируемого доступа к базе данных
  • Перечислить инструменты и технологии, используемые в ходе обучения

🧭 Задача: ИИ встречается с реальными данными

Ограничения традиционного ИИ

Современные помощники ИИ невероятно мощны, но сталкиваются с серьезными ограничениями при работе с реальными бизнес-данными:

Задача Описание Бизнес-воздействие
Статичные знания Модели ИИ обучены на фиксированных данных и не могут получить доступ к актуальным бизнес-данным Устаревшие инсайты, упущенные возможности
Изолированные данные Информация заперта в базах данных, API и системах, недоступных ИИ Неполный анализ, разрозненные рабочие процессы
Ограничения безопасности Прямой доступ к базе данных вызывает проблемы с безопасностью и соответствием требованиям Ограниченное развертывание, ручная подготовка данных
Сложные запросы Бизнес-пользователи нуждаются в технических знаниях для получения инсайтов Снижение использования, неэффективные процессы

Решение MCP

Model Context Protocol решает эти задачи, предоставляя:

  • Доступ к данным в реальном времени: помощники ИИ обращаются к живым базам данных и API
  • Безопасную интеграцию: контролируемый доступ с аутентификацией и разрешениями
  • Интерфейс на естественном языке: бизнес-пользователи задают вопросы простым английским
  • Стандартизованный протокол: работает с разными платформами и инструментами ИИ

🏪 Знакомьтесь, Zava Retail: наш учебный кейс https://github.com/microsoft/MCP-Server-and-PostgreSQL-Sample-Retail

В ходе обучения мы построим MCP сервер для Zava Retail, вымышленной сети DIY магазинов с несколькими физическими локациями. Этот реалистичный сценарий демонстрирует внедрение MCP корпоративного уровня.

Бизнес-контекст

Zava Retail управляет:

  • 8 физическими магазинами в штате Вашингтон (Сиэтл, Белвью, Такома, Спокан, Эверетт, Редмонд, Киркланд)
  • 1 онлайн-магазином для электронной коммерции
  • Разнообразным каталогом продуктов, включая инструменты, оборудование, садовые принадлежности и строительные материалы
  • Многоуровневым управлением с управляющими магазинов, региональными менеджерами и руководителями

Бизнес-требования

Менеджерам магазинов и руководителям нужна аналитика на базе ИИ для:

  1. Анализа продаж по магазинам и периодам времени
  2. Отслеживания запасов и определения потребностей в пополнении
  3. Понимания поведения клиентов и моделей покупок
  4. Обнаружения инсайтов по продуктам с помощью семантического поиска
  5. Генерации отчетов посредством вопросов на естественном языке
  6. Поддержания безопасности данных с контролем доступа по ролям

Технические требования

MCP сервер должен обеспечивать:

  • Мультиарендный доступ к данным, где менеджеры видят только данные своего магазина
  • Гибкий запрос, поддерживающий сложные SQL операции
  • Семантический поиск для поиска и рекомендаций продуктов
  • Данные в реальном времени, отражающие текущее состояние бизнеса
  • Безопасную аутентификацию с использованием безопасности на уровне строк (RLS)
  • Масштабируемую архитектуру, поддерживающую множественных одновременных пользователей

🏗️ Обзор архитектуры MCP сервера

Наш MCP сервер реализует многоуровневую архитектуру, оптимизированную для интеграции с базой данных:

┌─────────────────────────────────────────────────────────────┐
│                    VS Code AI Client                       │
│                  (Natural Language Queries)                │
└─────────────────────┬───────────────────────────────────────┘
                      │ HTTP/SSE
                      ▼
┌─────────────────────────────────────────────────────────────┐
│                     MCP Server                             │
│  ┌─────────────────┐ ┌─────────────────┐ ┌───────────────┐ │
│  │   Tool Layer    │ │  Security Layer │ │  Config Layer │ │
│  │                 │ │                 │ │               │ │
│  │ • Query Tools   │ │ • RLS Context   │ │ • Environment │ │
│  │ • Schema Tools  │ │ • User Identity │ │ • Connections │ │
│  │ • Search Tools  │ │ • Access Control│ │ • Validation  │ │
│  └─────────────────┘ └─────────────────┘ └───────────────┘ │
└─────────────────────┬───────────────────────────────────────┘
                      │ asyncpg
                      ▼
┌─────────────────────────────────────────────────────────────┐
│                PostgreSQL Database                         │
│  ┌─────────────────┐ ┌─────────────────┐ ┌───────────────┐ │
│  │  Retail Schema  │ │   RLS Policies  │ │   pgvector    │ │
│  │                 │ │                 │ │               │ │
│  │ • Stores        │ │ • Store-based   │ │ • Embeddings  │ │
│  │ • Customers     │ │   Isolation     │ │ • Similarity  │ │
│  │ • Products      │ │ • Role Control  │ │   Search      │ │
│  │ • Orders        │ │ • Audit Logs    │ │               │ │
│  └─────────────────┘ └─────────────────┘ └───────────────┘ │
└─────────────────────┬───────────────────────────────────────┘
                      │ REST API
                      ▼
┌─────────────────────────────────────────────────────────────┐
│                  Azure OpenAI                              │
│               (Text Embeddings)                            │
└─────────────────────────────────────────────────────────────┘

Ключевые компоненты

1. Слой MCP сервера

  • FastMCP Framework: современная реализация MCP сервера на Python
  • Регистрация инструментов: декларативные определения инструментов с типобезопасностью
  • Контекст запроса: идентификация пользователя и управление сессиями
  • Обработка ошибок: надежное управление ошибками и журналирование

2. Слой интеграции с базой данных

  • Пул соединений: эффективное управление соединениями asyncpg
  • Провайдер схемы: динамическое обнаружение схем таблиц
  • Выполнение запросов: безопасное выполнение SQL с контекстом RLS
  • Управление транзакциями: соблюдение ACID и обработка откатов

3. Слой безопасности

  • Безопасность на уровне строк: PostgreSQL RLS для изоляции мультиарендных данных
  • Идентификация пользователя: аутентификация и авторизация менеджеров магазинов
  • Контроль доступа: детализированные разрешения и аудит
  • Валидация ввода: предотвращение SQL-инъекций и валидация запросов

4. Слой улучшения ИИ

  • Семантический поиск: векторные эмбеддинги для поиска продуктов
  • Интеграция Azure OpenAI: генерация текстовых эмбеддингов
  • Алгоритмы сходства: поиск близости с помощью pgvector cosine similarity
  • Оптимизация поиска: индексация и настройка производительности

🔧 Технологический стек

Основные технологии

Компонент Технология Назначение
MCP Framework FastMCP (Python) Современная реализация MCP сервера
База данных PostgreSQL 17 + pgvector Реляционные данные с векторным поиском
Сервисы ИИ Azure OpenAI Текстовые эмбеддинги и языковые модели
Контейнеризация Docker + Docker Compose Среда разработки
Облачная платформа Microsoft Azure Производственное развертывание
Интеграция IDE VS Code AI чат и рабочий процесс разработки

Инструменты разработки

Инструмент Назначение
asyncpg Высокопроизводительный драйвер PostgreSQL
Pydantic Валидация и сериализация данных
Azure SDK Интеграция облачных сервисов
pytest Фреймворк для тестирования
Docker Контейнеризация и развертывание

Производственный стек

Сервис Ресурс Azure Назначение
База данных Azure Database for PostgreSQL Управляемый сервис базы данных
Контейнер Azure Container Apps Серверлес-хостинг контейнеров
Сервисы ИИ Microsoft Foundry OpenAI модели и конечные точки
Мониторинг Application Insights Наблюдаемость и диагностика
Безопасность Azure Key Vault Управление секретами и конфигурацией

🎬 Реальные сценарии использования

Давайте рассмотрим, как разные пользователи взаимодействуют с нашим MCP сервером:

Сценарий 1: Анализ эффективности менеджера магазина

Пользователь: Сара, менеджер магазина в Сиэтле
Цель: Проанализировать продажи за последний квартал

Запрос на естественном языке:

"Покажи топ-10 продуктов по выручке для моего магазина в IV квартале 2024 года"

Что происходит:

  1. AI чат в VS Code отправляет запрос на MCP сервер
  2. MCP сервер определяет контекст магазина Сары (Сиэтл)
  3. Политики RLS фильтруют данные только для магазина Сиэтл
  4. Формируется и выполняется SQL запрос
  5. Результаты форматируются и возвращаются в AI чат
  6. ИИ предоставляет анализ и инсайты

Сценарий 2: Обнаружение продуктов с семантическим поиском

Пользователь: Майк, менеджер по инвентарю
Цель: Найти товары, похожие на запрос клиента

Запрос на естественном языке:

"Какие продукты мы продаем, похожие на «водонепроницаемые электрические соединители для наружного использования»?"

Что происходит:

  1. Запрос обрабатывается инструментом семантического поиска
  2. Azure OpenAI генерирует вектор эмбеддинга
  3. pgvector выполняет поиск по сходству
  4. Сопоставленные продукты ранжируются по релевантности
  5. Результаты содержат детали товара и наличие
  6. ИИ предлагает альтернативы и возможности формирования комплектов

Сценарий 3: Аналитика по нескольким магазинам

Пользователь: Дженнифер, региональный менеджер
Цель: Сравнить результаты работы всех магазинов

Запрос на естественном языке:

"Сравни продажи по категориям для всех магазинов за последние 6 месяцев"

Что происходит:

  1. Устанавливается RLS контекст для доступа регионального менеджера
  2. Формируется сложный запрос по нескольким магазинам
  3. Данные агрегируются по локациям магазинов
  4. Результаты показывают тренды и сравнительный анализ
  5. ИИ выявляет инсайты и рекомендации

🔒 Безопасность и мультиарендность: подробности

Наша реализация ставит в приоритет корпоративную безопасность:

Безопасность на уровне строк (RLS)

PostgreSQL RLS обеспечивает изоляцию данных:

-- Store managers see only their store's data
CREATE POLICY store_manager_policy ON retail.orders
  FOR ALL TO store_managers
  USING (store_id = get_current_user_store());

-- Regional managers see multiple stores
CREATE POLICY regional_manager_policy ON retail.orders
  FOR ALL TO regional_managers
  USING (store_id = ANY(get_user_store_list()));

Управление идентификацией пользователя

Каждое соединение MCP включает:

  • ID менеджера магазина: уникальный идентификатор для RLS контекста
  • Назначение ролей: права доступа и уровни разрешений
  • Управление сессией: безопасные токены аутентификации
  • Аудит логов: полная история доступа

Защита данных

Несколько слоев безопасности:

  • Шифрование соединений: TLS для всех соединений с базой данных
  • Предотвращение SQL-инъекций: только параметризованные запросы
  • Валидация ввода: всесторонняя проверка запросов
  • Обработка ошибок: отсутствие чувствительной информации в сообщениях об ошибках

🎯 Ключевые выводы

После выполнения этого введения вы должны понимать:

Ценность MCP: как MCP связывает помощников ИИ и реальные данные
Бизнес-контекст: требования и задачи Zava Retail
Обзор архитектуры: ключевые компоненты и их взаимодействия
Технологический стек: используемые инструменты и фреймворки
Модель безопасности: мультиарендный доступ и защита данных
Шаблоны использования: реальные сценарии запросов и рабочие процессы

🚀 Что дальше

Готовы копнуть глубже? Продолжайте с:

Лабораторная 01: Основные концепции архитектуры

Узнайте про паттерны архитектуры MCP сервера, принципы проектирования базы данных и подробную техническую реализацию, лежащую в основе нашего решения для розничной аналитики.

📚 Дополнительные ресурсы

Документация MCP

Интеграция с базой данных

Сервисы Azure


Отказ от ответственности: Это учебное упражнение на основе вымышленных данных розничной торговли. Всегда следуйте политике управления данными и безопасности вашей организации при внедрении подобных решений в производственной среде.


Отказ от ответственности: Этот документ был переведен с использованием сервиса машинного перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.