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 онлайн-магазином для электронной коммерции
- Разнообразным каталогом продуктов, включая инструменты, оборудование, садовые принадлежности и строительные материалы
- Многоуровневым управлением с управляющими магазинов, региональными менеджерами и руководителями
Бизнес-требования
Менеджерам магазинов и руководителям нужна аналитика на базе ИИ для:
- Анализа продаж по магазинам и периодам времени
- Отслеживания запасов и определения потребностей в пополнении
- Понимания поведения клиентов и моделей покупок
- Обнаружения инсайтов по продуктам с помощью семантического поиска
- Генерации отчетов посредством вопросов на естественном языке
- Поддержания безопасности данных с контролем доступа по ролям
Технические требования
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 года"
Что происходит:
- AI чат в VS Code отправляет запрос на MCP сервер
- MCP сервер определяет контекст магазина Сары (Сиэтл)
- Политики RLS фильтруют данные только для магазина Сиэтл
- Формируется и выполняется SQL запрос
- Результаты форматируются и возвращаются в AI чат
- ИИ предоставляет анализ и инсайты
Сценарий 2: Обнаружение продуктов с семантическим поиском
Пользователь: Майк, менеджер по инвентарю
Цель: Найти товары, похожие на запрос клиента
Запрос на естественном языке:
"Какие продукты мы продаем, похожие на «водонепроницаемые электрические соединители для наружного использования»?"
Что происходит:
- Запрос обрабатывается инструментом семантического поиска
- Azure OpenAI генерирует вектор эмбеддинга
- pgvector выполняет поиск по сходству
- Сопоставленные продукты ранжируются по релевантности
- Результаты содержат детали товара и наличие
- ИИ предлагает альтернативы и возможности формирования комплектов
Сценарий 3: Аналитика по нескольким магазинам
Пользователь: Дженнифер, региональный менеджер
Цель: Сравнить результаты работы всех магазинов
Запрос на естественном языке:
"Сравни продажи по категориям для всех магазинов за последние 6 месяцев"
Что происходит:
- Устанавливается RLS контекст для доступа регионального менеджера
- Формируется сложный запрос по нескольким магазинам
- Данные агрегируются по локациям магазинов
- Результаты показывают тренды и сравнительный анализ
- ИИ выявляет инсайты и рекомендации
🔒 Безопасность и мультиарендность: подробности
Наша реализация ставит в приоритет корпоративную безопасность:
Безопасность на уровне строк (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
- Спецификация MCP - официальная документация протокола
- MCP для начинающих - подробное руководство по MCP
- Документация FastMCP - документация по Python SDK
Интеграция с базой данных
- Документация PostgreSQL - полный справочник PostgreSQL
- Руководство pgvector - документация расширения векторов
- Безопасность на уровне строк - руководство по RLS PostgreSQL
Сервисы Azure
- Документация Azure OpenAI - интеграция сервисов ИИ
- Azure Database for PostgreSQL - управляемый сервис базы данных
- Azure Container Apps - серверлес контейнеры
Отказ от ответственности: Это учебное упражнение на основе вымышленных данных розничной торговли. Всегда следуйте политике управления данными и безопасности вашей организации при внедрении подобных решений в производственной среде.
Отказ от ответственности: Этот документ был переведен с использованием сервиса машинного перевода Co-op Translator. Несмотря на наши усилия по обеспечению точности, имейте в виду, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется обратиться к профессиональному человеческому переводу. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования этого перевода.