Azure MCP演示-ZavaShop人工智能助手
概述
此存储库演示了 具有模型上下文协议(MCP)的Azure函数 与...集成 Azure人工智能代理 用于构建智能购物助手。该项目展示了如何创建远程MCP服务器和人工智能驱动的会话代理,可以处理图像生成、文件搜索和交互式客户服务场景。
项目架构
该项目由三个主要部分组成:
1.使用Azure函数(Python)的远程MCP服务器
位于 MCP/remote-mcp-functions-python/,此组件提供:
- MCP工具端点:通过Azure Functions公开的可供AI代理使用的自定义工具
- 图像生成:与Azure OpenAI DALL-E集成,用于AI驱动的图像创建
- Blob存储集成:使用Azure Blob存储进行片段存储和检索
- 定制商店工具:ZavaShop用例的专用工具(定制衬衫设计、登录、产品信息)
主要特点:
- 使用功能密钥身份验证保护HTTPS端点
- 用于实时MCP通信的服务器发送事件(SSE)
- 使用MCP协议的可扩展工具框架
- 使用Azurite存储仿真器提供本地开发支持
- 使用以下命令部署到Azure
azd
2.集成MCP的AI Agent
文件: zavashop_voicelive_with_mcp_file_agent.py
此实现演示了:
- 快速代理 使用Azure AI项目SDK
- MCP工具集成:连接到远程MCP服务器以生成图像
- 文件搜索功能:基于矢量存储的产品信息检索
- 审批工作流程:演示受控工具执行的MCP审批请求处理
3.带有功能工具的AI Agent
文件: zavashop_voicelive_with_tool_genai_file_agent.py
这种替代实施方式展示了:
- 功能工具:代理内的直接函数调用处理
- Azure OpenAI映像生成:无需外部MCP服务器即可生成内联图像
- 混合工具方法:结合文件搜索和自定义功能工具
用例:ZavaShop智能助手
ZavaShop助手是一个基于人工智能的客户服务代理,可以:
- 回答产品查询:使用文件搜索从产品目录中检索信息
- 生成自定义设计:根据客户描述创建服装项目的视觉表示
- 处理客户请求:协助登录、定制和个性化购物体验
示例工作流
场景1:产品搜索
User: "Can you list all SKUs in ZavaShop?"
Agent: Uses file search tool → Returns product information from vector store场景2:自定义设计生成
User: "Create a blue Uniqlo-style shirt with the Strava logo"
Agent: Triggers image generation → Returns generated image URL场景3:带有跑步统计信息的定制衬衫
User: "I want a custom shirt with my marathon stats"
Agent: Prompts for login → Retrieves stats → Generates custom design技术栈
Azure服务
- Azure 函数:MCP服务器托管的无服务器计算
- Azure AI Foundry:代理编排和对话管理
- Azure OpenAI服务:图像生成(DALL-E)和语言模型
- Azure Blob存储:片段和图像存储
- Azure矢量存储:产品信息索引和搜索
开发工具
- Python 3.11+:主要编程语言
- Azure开发者命令行界面(azd):简化部署
- Azure功能核心工具:本地开发和调试
- 模型上下文协议:标准化AI工具集成
- OpenAI SDK:代理和响应处理
关键依赖关系
azure-ai-projects:AI代理框架azure-functions:功能应用框架azure-storage-blob:Blob存储集成azure-identity:Azure身份验证openai:用于代理操作的OpenAI客户端requests:API调用的HTTP客户端Pillow:图像处理
项目结构
AzureMCPDemo/
├── MCP/
│ └── remote-mcp-functions-python/ # Remote MCP Server
│ ├── src/
│ │ ├── function_app.py # MCP tool definitions
│ │ ├── requirements.txt # Python dependencies
│ │ └── imgs/ # Generated images directory
│ ├── infra/ # Azure infrastructure (Bicep)
│ │ ├── main.bicep # Main infrastructure template
│ │ └── app/ # Application-specific resources
│ └── azure.yaml # Azure Developer CLI configuration
├── zavashop_voicelive_with_mcp_file_agent.py # MCP-based agent
├── zavashop_voicelive_with_tool_genai_file_agent.py # Function tool-based agent
└── README.md # This file入门指南
先决条件
- Azure订阅:活动的Azure订阅
- 开发工具:
- Python 3.11或更高版本 - Azure功能核心工具(>=4.0.7030) - Azure开发者命令行界面(azd) - Docker(用于Azurite存储模拟器)
- 环境变量:
创建一个 .env 文件包含以下内容:
AZURE_AI_PROJECT_ENDPOINT=
AZURE_AI_MODEL_DEPLOYMENT_NAME=
AZURE_OPENAI_ENDPOINT=
AZURE_OPENAI_DEPLOYMENT_NAME=
AZURE_OPENAI_API_KEY=
AZURE_OPENAI_API_VERSION=2025-04-01-preview
MCP_ENDPOINT=
ASSET_FILE_PATH=
地方发展
1.启动Azure存储模拟器
docker run -p 10000:10000 -p 10001:10001 -p 10002:10002 \
mcr.microsoft.com/azure-storage/azurite2.在本地运行MCP服务器
cd MCP/remote-mcp-functions-python/src
pip install -r requirements.txt
func startMCP服务器将在以下地点提供: http://0.0.0.0:7071/runtime/webhooks/mcp/sse
3.使用MCP检验员进行测试
npx @modelcontextprotocol/inspector连接到: http://0.0.0.0:7071/runtime/webhooks/mcp/sse
4.运行AI代理
# MCP-based agent
python zavashop_voicelive_with_mcp_file_agent.py
# Function tool-based agent
python zavashop_voicelive_with_tool_genai_file_agent.py部署到Azure
部署MCP服务器
cd MCP/remote-mcp-functions-python
azd up此命令将:
- 配置Azure功能、存储帐户和其他所需资源
- 部署MCP服务器代码
- 配置安全和网络
可选:启用Direct3D隔离
azd env set VNET_ENABLED true
azd up检索功能键
部署后,获取MCP系统密钥:
az functionapp keys list \
--resource-group \
--name 更新您的 .env 文件包含:
MCP_ENDPOINT=https://.azurewebsites.net/runtime/webhooks/mcp/sse?code=MCP工具可用
内置工具
- hello_cp:测试连接性和基本功能
- 定制:启动定制衬衫设计流程
- 登录:验证和检索用户运行统计信息
- get_snippet:从blob存储中检索已保存的代码片段
- 保存片段:将代码片段保存到blob存储区
- gen_image:使用Azure OpenAI DALL-E生成图像
工具定义
每个工具都使用MCP协议定义,包括:
- 工具名称:唯一标识符
- 描述:用于人工智能理解的自然语言描述
- 参数:定义输入要求的JSON模式
- 绑定:用于存储/计算集成的Azure Functions绑定
代理实现模式
模式1:MCP远程工具(推荐用于生产)
优势:
- 集中工具管理
- 可在多个代理之间重复使用
- 可扩展和可维护
- 支持审批工作流
使用时间:
- 多个代理需要相同的工具
- 工具需要复杂的基础设施
- 需要治理和批准
模式2:功能工具(轻量级)
优势:
- 实施更简单
- 直接功能执行
- 减少延迟
- 无外部依赖关系
使用时间:
- 单代理应用程序
- 简单的工具逻辑
- 快速原型制作
安全注意事项
MCP服务器安全
- 功能键:所有端点都使用系统密钥进行保护
- 仅限HTTPS:强制SSL/TLS加密
- CORS配置:来源受限
- 可选OAuth:可通过Azure AD身份验证进行扩展
- Direct3D集成:网络隔离支持
AI代理安全
- 凭证管理:使用Azure默认Azure凭据
- MCP审批流程:手动批准敏感操作
- 输入验证:执行前验证工具参数
- 审计日志:记录所有工具调用以符合要求
高级功能
图像生成管道
- 用户提供自然语言提示
- 代理处理提示和呼叫
gen_image工具 - Azure OpenAI DALL-E 生成映像 (base64)
- 映像已上传到Azure Blob存储
- 公共URL返回给用户
- 图像可以显示在UI中或用于进一步处理
矢量存储搜索
- 产品目录已上传到Azure OpenAI矢量存储
- Agent使用FileSearchTool进行语义搜索
- 检索并展示相关产品信息
- 基于库存的情境感知响应
监控与调试
查看功能应用程序日志
az webapp log tail \
--name \
--resource-group MCP工具测试检查员
MCP检查员提供:
- 实时工具发现
- 交互式工具测试
- 响应验证
- 调试信息
应用洞察
所有部署的功能都包括Application Insights,用于:
- 性能监控
- 误差跟踪
- 自定义遥测
- 分布式跟踪
成本优化
消费计划
- 仅支付执行时间
- 自动缩放
- 无闲置成本
储存成本
- Blob存储:按使用的容量付费
- 考虑旧映像的生命周期策略
人工智能服务
- Azure OpenAI:基于令牌的定价
- 为用例选择合适的模型层
最佳实践
- 环境管理:为dev/test/prod使用单独的环境
- 秘密管理:将敏感数据存储在Azure密钥库中
- 错误处理:实施全面的try-catch块
- 日志记录:使用结构化日志记录以获得更好的可观察性
- 测试:在代理集成之前单独测试工具
- 文档:保持工具描述清晰,便于人工智能理解
- 版本控制:使用代理版本控制进行安全更新
故障排除
常见问题
MCP连接失败
- 验证功能应用程序是否正在运行
- 检查功能键是否正确
- 确保CORS配置正确
图像生成失败
- 验证Azure OpenAI端点和密钥
- 检查部署名称是否匹配
- 验证API版本兼容性
文件搜索未返回任何结果
- 确认矢量存储已创建
- 验证文件上传成功
- 检查代理是否具有正确的vector_store_ids
代理不使用工具
- 确保工具描述清晰
- 验证说明参考工具功能
- 检查MCP批准是否被拒绝
贡献
这是一个展示Azure AI功能的演示项目。请随意:
- 使用自定义工具进行分叉和实验
- 添加新的代理功能
- 改进错误处理和日志记录
- 分享反馈和建议
相关资源
许可证
本项目按原样提供,用于演示目的。具体条款请参考单个组件许可证。
支持
对于问题和疑问:
- 查看 远程MCP函数Python示例
- 查看Azure AI Foundry文档
- 在此存储库中打开问题
______________________________________________________________________
基于Azure AI构建 | 由模型上下文协议提供支持 | 由OpenAI增强
