00-Introduction_MCP数据库集成简介


文档摘要

MCP数据库集成简介 本实验内容 本入门实验全面介绍了如何构建与数据库集成的模型上下文协议(MCP)服务器。通过Zava零售分析案例(https://github.com/microsoft/MCP-Server-and-PostgreSQL-Sample-Retail),您将了解业务场景、技术架构以及实际应用。 概述 模型上下文协议(MCP)使得AI助手能够安全地实时访问和交互外部数据源。结合数据库集成后,MCP为数据驱动的AI应用解锁了强大的功能。 本学习路径将教您构建生产级MCP服务器,通过PostgreSQL将AI助手连接到零售销售数据,同时实现企业模式,如行级安全性、语义搜索和多租户数据访问。

MCP数据库集成简介

本实验内容

本入门实验全面介绍了如何构建与数据库集成的模型上下文协议(MCP)服务器。通过Zava零售分析案例(https://github.com/microsoft/MCP-Server-and-PostgreSQL-Sample-Retail),您将了解业务场景、技术架构以及实际应用。

概述

**模型上下文协议(MCP)**使得AI助手能够安全地实时访问和交互外部数据源。结合数据库集成后,MCP为数据驱动的AI应用解锁了强大的功能。

本学习路径将教您构建生产级MCP服务器,通过PostgreSQL将AI助手连接到零售销售数据,同时实现企业模式,如行级安全性、语义搜索和多租户数据访问。

学习目标

完成本实验后,您将能够:

  • 定义模型上下文协议及其数据库集成的核心优势
  • 识别MCP服务器架构中与数据库相关的关键组件
  • 理解Zava零售案例及其业务需求
  • 认识安全、可扩展的数据库访问的企业模式
  • 列举学习路径中使用的工具和技术

挑战:AI与现实世界数据的结合

传统AI的局限性

现代AI助手功能强大,但在处理现实世界业务数据时面临显著局限:

挑战 描述 业务影响
静态知识 AI模型基于固定数据集训练,无法访问当前业务数据 过时的洞察,错失机会
数据孤岛 信息锁定在数据库、API和AI无法访问的系统中 分析不完整,工作流程分散
安全限制 直接数据库访问带来安全和合规问题 部署受限,数据需手动准备
复杂查询 业务用户需要技术知识才能提取数据洞察 采用率降低,流程低效

MCP解决方案

模型上下文协议通过以下方式解决这些挑战:

  • 实时数据访问:AI助手查询实时数据库和API
  • 安全集成:通过认证和权限控制访问
  • 自然语言界面:业务用户可用简单英语提问
  • 标准化协议:适用于不同AI平台和工具

认识Zava零售:我们的学习案例 https://github.com/microsoft/MCP-Server-and-PostgreSQL-Sample-Retail

在整个学习路径中,我们将为Zava零售构建一个MCP服务器,这是一个虚构的DIY零售连锁店,拥有多个门店位置。此场景展示了企业级MCP实施的实际应用。

业务背景

Zava零售运营:

  • 8家实体店,位于华盛顿州(西雅图、贝尔维尤、塔科马、斯波坎、埃弗里特、雷德蒙德、柯克兰)
  • 1家在线商店,用于电子商务销售
  • 多样化产品目录,包括工具、五金、园艺用品和建筑材料
  • 多层管理结构,包括门店经理、区域经理和高管

业务需求

门店经理和高管需要AI驱动的分析工具来:

  1. 分析销售表现,涵盖各门店和时间段
  2. 跟踪库存水平,识别补货需求
  3. 了解客户行为和购买模式
  4. 通过语义搜索发现产品洞察
  5. 通过自然语言查询生成报告
  6. 通过基于角色的访问控制维护数据安全

技术需求

MCP服务器必须提供:

  • 多租户数据访问,门店经理只能看到自己门店的数据
  • 灵活查询,支持复杂SQL操作
  • 语义搜索,用于产品发现和推荐
  • 实时数据,反映当前业务状态
  • 安全认证,实现行级安全性
  • 可扩展架构,支持多个并发用户

️ 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框架:现代Python MCP服务器实现
  • 工具注册:声明式工具定义,具有类型安全性
  • 请求上下文:用户身份和会话管理
  • 错误处理:强大的错误管理和日志记录

2. 数据库集成层

  • 连接池:高效的asyncpg连接管理
  • 模式提供者:动态表模式发现
  • 查询执行器:带RLS上下文的安全SQL执行
  • 事务管理:ACID合规性和回滚处理

3. 安全层

  • 行级安全性:PostgreSQL RLS实现多租户数据隔离
  • 用户身份:门店经理认证和授权
  • 访问控制:细粒度权限和审计记录
  • 输入验证:防止SQL注入和查询验证

4. AI增强层

  • 语义搜索:基于向量嵌入的产品发现
  • Azure OpenAI集成:生成文本嵌入
  • 相似性算法:pgvector余弦相似性搜索
  • 搜索优化:索引和性能调优

技术栈

核心技术

组件 技术 用途
MCP框架 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服务 Azure AI Foundry OpenAI模型和端点
监控 Application Insights 可观察性和诊断
安全 Azure Key Vault 密钥和配置管理

实际使用场景

让我们探索不同用户如何与我们的MCP服务器交互:

场景1:门店经理绩效评估

用户:Sarah,西雅图门店经理
目标:分析上一季度的销售表现

自然语言查询

"显示我门店在2024年第四季度收入最高的前10种产品"

发生了什么

  1. VS Code AI聊天将查询发送到MCP服务器
  2. MCP服务器识别Sarah的门店上下文(西雅图)
  3. RLS策略过滤数据,仅显示西雅图门店数据
  4. 生成并执行SQL查询
  5. 格式化结果并返回到AI聊天
  6. AI提供分析和洞察

场景2:通过语义搜索发现产品

用户:Mike,库存经理
目标:找到与客户需求类似的产品

自然语言查询

"我们有哪些产品类似于‘用于户外使用的防水电连接器’?"

发生了什么

  1. 查询由语义搜索工具处理
  2. Azure OpenAI生成嵌入向量
  3. pgvector执行相似性搜索
  4. 相关产品按相关性排序
  5. 结果包括产品详情和库存情况
  6. AI建议替代品和捆绑销售机会

场景3:跨门店分析

用户:Jennifer,区域经理
目标:比较所有门店的销售表现

自然语言查询

"比较过去6个月所有门店的类别销售情况"

发生了什么

  1. RLS上下文设置为区域经理访问权限
  2. 生成复杂的多门店查询
  3. 数据在门店位置间聚合
  4. 结果包括趋势和比较
  5. AI识别洞察并提出建议

安全性和多租户深度解析

我们的实现优先考虑企业级安全性:

行级安全性(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助手与现实世界数据
业务背景:Zava零售的需求和挑战
架构概述:关键组件及其交互方式
技术栈:学习路径中使用的工具和框架
安全模型:多租户数据访问和保护
使用模式:实际查询场景和工作流程

下一步

准备深入学习了吗?继续学习:

实验01:核心架构概念

了解MCP服务器架构模式、数据库设计原则以及支持我们零售分析解决方案的详细技术实现。

额外资源

MCP文档

数据库集成

Azure服务

免责声明:这是一个使用虚构零售数据的学习练习。在生产环境中实施类似解决方案时,请始终遵循您组织的数据治理和安全政策。

免责声明
本文档使用AI翻译服务 Co-op Translator 进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。原始语言的文档应被视为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用此翻译而产生的任何误解或误读不承担责任。


发布者: 作者: 转发
评论区 (0)
U