24 KiB
Увод у интеграцију MCP базе података
🎯 Шта овај лабораторијски задатак обухвата
Овај уводни лабораторијски задатак пружа обухватан преглед изградње Model Context Protocol (MCP) сервера са интеграцијом базе података. Разумеш пословни случај, техничку архитектуру и примене у стварном свету кроз пример анализе Зава Ритрејл на https://github.com/microsoft/MCP-Server-and-PostgreSQL-Sample-Retail.
Преглед
Model Context Protocol (MCP) омогућава AI асистентима да безбедно приступају и интерагују са спољашњим изворима података у реалном времену. У комбинацији са интеграцијом базе података, MCP откључава моћне могућности за AI апликације вођене подацима.
Овај пут учења вас учи како да изградите MCP сервере спремне за продукцију који повезују AI асистенте са подацима о продаји у малопродаји преко PostgreSQL-а, имплементирајући корпоративне обрасце као што су Row Level Security, семантичко претраживање и приступ подацима више закупаца.
Циљеви учења
На крају овог лабораторијског задатка бићете у могућности да:
- Дефинишете Model Context Protocol и његове основне предности за интеграцију база података
- Идентификујете кључне компоненте архитектуре MCP сервера са базама података
- Разумете пример коришћења Зава Ритрејл и његове пословне захтеве
- Препознате корпоративне обрасце за безбедан, скалабилан приступ базама података
- Наведете алате и технологије коришћене током овог пута учења
🧭 Изазов: AI и подаци из стварног света
Традиционална ограничења AI
Модерни AI асистенти су веома моћни, али се суочавају са значајним ограничењима када раде са подацима из стварног пословања:
| Изазов | Опис | Пословни утицај |
|---|---|---|
| Статичко знање | AI модели обучени на фиксним скуповима података не могу приступити актуелним пословним подацима | Застареле увиде, пропуштене прилике |
| Силоси података | Информације закључане у базама података, API-јима и системима до којих AI нема приступ | Непотпуна анализа, фрагментовани радни токови |
| Безбедносна ограничења | Директан приступ бази података подиже безбедносне и усаглашеносне бриге | Ограничена примена, ручна припрема података |
| Комплексни упити | Пословни корисници захтевају техничко знање за извлачење увида из података | Смањена употреба, неефикасни процеси |
MCP решење
Model Context Protocol решава ове изазове пружајући:
- Приступ подацима у реалном времену: AI асистенти упитују живе базе података и API-је
- Безбедну интеграцију: Контролисани приступ са аутентификацијом и дозволама
- Интерфејс природним језиком: Пословни корисници постављају питања на обичном енглеском
- Стандаризован протокол: Ради на различитим AI платформама и алатима
🏪 Упознајте Зава Ритрејл: наш студијски случај https://github.com/microsoft/MCP-Server-and-PostgreSQL-Sample-Retail
Током овог пута учења изградићемо MCP сервер за Зава Ритрејл, измишљен ланац DIY малопродајних радњи са више локација. Овај реалистичан сценарио демонстрира имплементацију MCP корпоративног стандарда.
Пословни контекст
Зава Ритрејл послује:
- 8 физичких продавница широм државе Вашингтон (Сијетл, Белвју, Такома, Спокан, Еверет, Редмонд, Киркланд)
- 1 онлајн продавница за е-продају
- Разнолик асортиман производа укључујући алате, хардвер, баштенски материјал и грађевински материјал
- Вишестепено управљање са менаџерима продавница, регионалним менаџерима и извршним особама
Пословни захтеви
Менаџери продавница и извршне особе захтевају AI-ом подржану аналитику да би:
- Анализирали учинак продаје по продавницама и временским периодима
- Пратили ниво залиха и идентификовали потребе за допуном
- Разумели понашање купаца и обрасце куповина
- Открили увиде у производе кроз семантичко претраживање
- Генерисали извештаје са упитима природним језиком
- Одржавали безбедност података са контролом приступа по улогама
Технички захтеви
MCP сервер мора пружити:
- Приступ подацима више закупаца где менаџери приказују само податке своје продавнице
- Флексибилно упитивање које подржава сложене SQL операције
- Семантичко претраживање за проналазак производа и препоруке
- Подаци у реалном времену који одражавају тренутно пословно стање
- Безбедна аутентикација са row-level security
- Скалабилна архитектура за подршку више паралелних корисника
🏗️ Преглед архитектуре 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: Модеран Python MCP сервер имплементација
- Регистрација алата: Декларативне дефиниције алата са безбедношћу типова
- Контекст захтева: Идентитет корисника и управљање сесијом
- Обрада грешака: Робустно управљање грешкама и евиденција
2. Слој интеграције базе података
- Кеширање конекција: Ефикасно управљање asyncpg конекцијама
- Пружање шеме: Динамичко откривање шеме табела
- Екзекуција упита: Безбедно извршавање SQL-а са RLS контекстом
- Управљање трансакцијама: ACID усклађеност и руковање повлачењем
3. Безбедносни слој
- Row Level Security: PostgreSQL RLS за изолацију података више закупаца
- Идентитет корисника: Аутентикација и овлашћење менаџера продавница
- Контрола приступа: Фино грануларне дозволе и ревизијске трагове
- Валидација уноса: Превенција SQL инјекције и валидација упита
4. AI слој за побољшање
- Семантичко претраживање: Векторска уграђивања за проналазак производа
- Azure OpenAI интеграција: Генерисање текстуалних уграђивања
- Алгоритми сличности: pgvector cosine similarity претраживање
- Оптимизација претраживања: Индексирање и подешавање перформанси
🔧 Технолошки стек
Основне технологије
| Компонента | Технологија | Намена |
|---|---|---|
| MCP Framework | FastMCP (Python) | Модерна имплементација MCP сервера |
| База података | PostgreSQL 17 + pgvector | Релациони подаци са претраживањем вектора |
| AI услуге | 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 | Сервелес хостинг контејнера |
| AI услуге | Microsoft Foundry | OpenAI модели и ендпоинти |
| Мониторинг | Application Insights | Посматрање и дијагностика |
| Безбедност | Azure Key Vault | Управљање тајнама и конфигурацијом |
🎬 Сценарији употребе у стварном свету
Погледајмо како различити корисници интерагују са нашим MCP сервером:
Сценарио 1: Преглед учинка менаџера продавнице
Корисник: Сара, менаџер продавнице у Сијетлу
Циљ: Анализа продаје у прошлом кварталу
Упит природним језиком:
"Прикажи ми 10 најбољих производа по приходу за моју продавницу у 4. кварталу 2024."
Шта се дешава:
- VS Code AI чат шаље упит MCP серверу
- MCP сервер идентификује контекст Саране продавнице (Сијетл)
- RLS политике филтрирају податке само за продавницу у Сијетлу
- Генерише се и извршава SQL упит
- Резултати се форматирају и враћају AI 4ету
- AI пружа анализу и увиде
Сценарио 2: Проналазак производа семантичким претраживањем
Корисник: Мајк, менаџер залиха
Циљ: Пронаћи производе сличне корисниковом захтеву
Упит природним језиком:
"Које производе продајемо који су слични 'водоотпорним електричним конекторима за спољашњу употребу'?"
Шта се дешава:
- Упит обрађује алат за семантичко претраживање
- Azure OpenAI генерише вектор уграђивања
- pgvector извршава претрагу по сличности
- Повезани производи рангирани по релевантности
- Резултати укључују детаље о производу и доступност
- AI предлаже алтернативе и могућности паковања
Сценарио 3: Аналитика између продавница
Корисник: Џенифер, регионални менаџер
Циљ: Упоредити учинак свих продавница
Упит природним језиком:
"Упореди продају по категоријама за све продавнице у последњих 6 месеци"
Шта се дешава:
- RLS контекст постављен за приступ регионалног менаџера
- Генерише се сложени упит преко више продавница
- Подаци се агрегирају са свих локација
- Резултати укључују трендове и поређења
- AI идентификује увиде и препоруке
🔒 Детаљан преглед безбедности и приступа више закупаца
Наша имплементација приоритизује безбедност корпоративног нивоа:
Row Level Security (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 повезује AI асистенте и податке из стварног света
✅ Пословни контекст: Захтеви и изазови Зава Ритрејла
✅ Преглед архитектуре: Кључне компоненте и њихове интеракције
✅ Технолошки стек: Алати и оквири коришћени кроз целину
✅ Безбедносни модел: Приступ подацима више закупаца и заштита
✅ Обрасци коришћења: Сценарији и радни токови упита у реалном свету
🚀 Шта следи
Спремни за дубље урањање? Наставите са:
Lab 01: Core Architecture Concepts
Упознајте архитектонске обрасце MCP сервера, принципе дизајна база података и детаљну техничку имплементацију која покреће наше решење за анализу у малопродаји.
📚 Додатни ресурси
MCP документација
- MCP Specification - Званична документација протокола
- MCP for Beginners - Обухватни водич за учење MCP-а
- FastMCP Documentation - Python SDK документација
Интеграција базе података
- PostgreSQL Documentation - Комплетна референца за PostgreSQL
- pgvector Guide - Документација проширења за векторе
- Row Level Security - Водич за PostgreSQL RLS
Azure услуге
- Azure OpenAI Documentation - Интеграција AI услуга
- Azure Database for PostgreSQL - Управљана база података
- Azure Container Apps - Сервелес контејнери
Напомена: Ово је вежба учења која користи измишљене податке малопродаје. Увек пратите политике управљања подацима и безбедности ваше организације када имплементирате слична решења у продукцијским окружењима.
Изјава о одрицању одговорности: Овај документ је преведен коришћењем услуге за аутоматски превод Co-op Translator. Иако тежимо тачности, имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Оригинални документ на његовом изворном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразума или погрешна тумачења која произилазе из коришћења овог превода.