用于矢量搜索的Azure OpenAI MCP服务器
这是一个模型上下文协议(MCP)服务器,旨在使用Azure OpenAI与Deep Research合作。它通过Azure OpenAI的Vector Store API和文档检索功能提供语义搜索,演示如何使用Azure的企业级人工智能服务构建自定义MCP服务器,该服务器可以使用特定于公司的知识和工具扩展ChatGPT。
特性
- 增强搜索工具:使用带有file_search工具的Azure OpenAI助手API进行语义搜索
- 智能提取工具:使用Azure OpenAI助手API完成文档内容提取
- SSE 运输:服务器发送事件传输,用于与ChatGPT进行实时通信
- Azure集成:Azure OpenAI与企业安全和合规性的完全集成
- 混合搜索:Azure通过矢量相似性和关键字匹配增强搜索
- 自动引用:内置引用支持和源文件引用
- MCP合规性:遵循OpenAI的MCP规范,用于深度研究集成
需求
- Python 3.8+
- fastmcp(>=2.9.0)
- 玉米(>=0.34.3)
- openai(Python SDK-与Azure openai兼容)
- pydantic(fastmcp的依赖性)
- 具有矢量存储功能的Azure OpenAI服务
安装
1.安装依赖项
pip install fastmcp uvicorn openai2.Azure OpenAI设置
设置Azure OpenAI环境变量:
export AZURE_OPENAI_API_KEY="your-azure-openai-api-key"
export AZURE_OPENAI_ENDPOINT="https://your-resource-name.openai.azure.com"
export AZURE_OPENAI_DEPLOYMENT_NAME="your-deployment-name"
export VECTOR_STORE_ID="vs_your_vector_store_id"
export AZURE_OPENAI_API_VERSION="2024-05-01-preview" # Optional, defaults to this3.获取Azure配置
API密钥:在Azure门户中找到→ 您的OpenAI资源→ 密钥和端点
端点:在Azure门户中找到→ 您的OpenAI资源→ 密钥和端点(格式: https://your-resource.openai.azure.com)
部署名称:您在Azure OpenAI Studio中为GPT-4部署命名的名称
矢量存储ID:在Azure OpenAI Playground中创建一个向量存储,并记下ID(格式: vs_xxxxxxxxx)
4.运行服务器
python main.py服务器将于启动 http://0.0.0.0:8000 启用SSE传输。
5.验证设置
运行验证脚本以测试您的配置:
python validate.py # or whatever you named the validation file用法
连接到ChatGPT深度研究
- 访问ChatGPT设置:转到ChatGPT设置
- 导航到连接器:点击“连接器”选项卡
- 添加MCP服务器:添加您的服务器URL:
http://your-domain:8000/sse/ - 测试连接:服务器应显示为可用于深入研究
服务器端点
- SSE 终端:
http://0.0.0.0:8000/sse/-主MCP通信端点 - 健康检查:服务器日志将显示成功启动和工具注册
可用工具
搜索工具
- 目的:使用带有增强的file_search的Azure OpenAI助手API查找相关文档
- 输入:搜索查询字符串(自然语言效果最佳)
- 输出:包含引用、文件ID、标题和文本片段的匹配文档列表
- 特性:
- 结合向量相似度和关键字匹配的混合搜索 - 自动查询优化和结果重新排序 - 内置引文支持和源文件引用 - 上下文感知搜索,最多包含20个相关块
提取工具
- 目的:使用Azure OpenAI助手API提取完整的文档内容
- 输入:矢量存储搜索结果中的文件ID(文件xxx格式)
- 输出:通过AI驱动的内容提取提取完整文档内容
- 特性:
- 绕过Azure OpenAI文件下载限制 - 基于AI的完整文档文本内容提取 - 自动清理临时助理和线程 - 带标题、节和格式的结构化内容提取
矢量存储集成
该服务器与您的Azure OpenAI矢量存储集成,其中包含您上传的文档。Azure OpenAI提供了比标准OpenAI更强的功能:
- 增强分块:每个区块800个令牌,400个令牌重叠
- 混合搜索:将语义相似性与关键字匹配相结合
- 查询优化:自动重写查询以获得更好的结果
- 结果重新排名:智能选择最相关的内容
- 企业安全:Azure的企业级安全性和合规性
支持的文件类型
Azure OpenAI矢量存储支持:
- PDF文档
- 文本文件
- Word文档(.docx)
- Markdown文件
- 以及其他基于文本的格式
定制
使用自己的矢量存储
- 创建矢量存储:在Azure OpenAI Playground中,创建一个新的矢量存储
- 上传文档:通过操场将文档添加到矢量存储中
- 更新配置:设置
VECTOR_STORE_ID到您的新矢量存储ID - 重新启动服务器:服务器在启动时加载配置
修改搜索行为
中的搜索功能 main.py 可以针对以下内容进行定制:
- 针对特定搜索行为的不同辅助指令
- 自定义结果处理和格式化
- 从搜索结果中提取其他元数据
- 自定义内容片段长度和格式
- 多矢量存储支持
环境配置
创建一个 .env 文件以便于配置管理:
# .env file
AZURE_OPENAI_API_KEY=your_api_key_here
AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com
AZURE_OPENAI_DEPLOYMENT_NAME=your_deployment_name
VECTOR_STORE_ID=vs_your_vector_store_id
AZURE_OPENAI_API_VERSION=2024-05-01-preview部署
地方发展
服务器在端口8000上本地运行,可以使用ChatGPT进行测试。
生产部署
用于生产用途:
- 使用HTTPS:确保您的服务器具有SSL/TLS证书
- 认证:请考虑添加OAuth或API密钥身份验证
- 速率限制:实现Azure OpenAI API调用的速率限制
- 监控:添加服务器运行状况的日志记录和监控
- 扩展:考虑高流量场景的负载平衡
- Azure集成:使用Azure应用服务或容器实例进行托管
隧道局部测试
如果在本地运行并且需要外部访问:
# Using ngrok
ngrok http 8000
# Using cloudflare tunnel
cloudflared tunnel --url http://localhost:8000建筑
此Azure OpenAI MCP服务器使用:
- FastMCP:简化MCP协议实施
- 乌维科恩:用于HTTP/SSE传输的ASGI服务器
- Azure OpenAI:具有增强功能的企业级人工智能服务
- 助理API:Azure OpenAI用于搜索和内容提取的高级助手框架
- 矢量存储API:Azure具有混合功能的语义搜索
与标准OpenAI的主要区别
- 认证:使用Azure API密钥和基于终结点的身份验证
- 增强型搜索:结合矢量和关键字匹配的混合搜索
- 内容提取:人工智能驱动的内容提取,而不是直接下载文件
- 企业功能:内置合规、安全和监控功能
故障排除
常见问题
- 服务器无法启动:检查端口8000是否已在使用中
- ChatGPT无法连接:确保服务器URL正确且可访问
- 没有搜索结果:验证Azure OpenAI配置和向量存储ID
- 身份验证错误:检查API密钥和终结点配置
- 矢量存储错误:验证矢量存储是否存在并包含文档
- 未找到部署:确保您的部署名称正确并已部署
调试步骤
- 运行验证:使用验证脚本检查配置
- 检查日志:服务器日志显示详细的错误消息
- 测试SSE端点:
curl http://localhost:8000/sse/ - 验证Azure连接:
from openai import AzureOpenAI
client = AzureOpenAI(api_key="...", azure_endpoint="...", api_version="...")
print(client.models.list())- 检查矢量存储:在Azure OpenAI Playground中验证您的矢量存储是否包含文件
Azure特定问题
- API版本错误:确保您正在使用
2024-05-01-preview或以后 - 部署错误:验证您的部署名称是否与Azure OpenAI Studio中的名称完全匹配
- 矢量存储访问:确保您的API密钥可以访问向量存储
- 文件上传问题:使用Azure OpenAI Playground上传和验证文件
性能注意事项
- 搜索延迟:Azure OpenAI助手API调用所用时间长于直接向量搜索
- 速率限制:请注意您的部署的Azure OpenAI速率限制
- 成本优化:监控令牌使用情况,特别是对于大型文档提取
- 缓存:考虑对频繁访问的文档实施响应缓存
安全最佳实践
- API密钥管理:安全存储API密钥,在生产中使用Azure密钥保管库
- 网络安全:使用HTTPS并考虑VPN或专用端点
- 访问控制:为您的MCP服务器实施身份验证
- 审计日志:启用Azure OpenAI日志记录以实现合规性和监控
- 数据隐私:确保上传的文档符合您的数据治理政策
贡献
这是一个生产就绪的实现,可以通过以下方式进行扩展:
- 支持不同文档类别的多向量存储
- 高级搜索过滤和分面搜索
- 与Azure Active Directory集成以进行身份验证
- 使用Azure Application Insights进行监控和警报
- 使用Azure容器应用程序或AKS进行横向扩展
许可证
此实现用于教育和商业用途。确保符合Azure OpenAI服务条款和组织的数据策略。
