使用说明
MCP服务器AZURE演示-模型上下文协议(MCP)服务器
全面演示部署在Azure上的模型上下文协议(MCP)服务器,展示多种部署模式和Azure服务集成。
🚀 概述
此项目演示了如何使用各种托管选项(包括容器应用程序、应用程序服务和Azure功能)在Azure上构建和部署MCP(模型上下文协议)服务器。该演示包括一个完整的Todo API后端,Cosmos DB集成和全面的基础设施作为代码。
架构组件
- 所有 Web API:RESTful API,用于使用Cosmos DB后端管理todo项目
- MCP服务器Web应用程序:作为web应用程序托管的模型上下文协议服务器
- MCP Azure功能:无服务器MCP服务器实现
- 基础设施:使用二头肌模板完成Azure基础架构
- API管理:集中式API网关和管理
- .NET Aspire:地方发展协调
🏗️ 建筑
┌─────────────────────────────────────────────────────────────┐
│ Azure Cloud │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Container Apps │ │ App Service │ │ Azure Functions │ │
│ │ │ │ │ │ │ │
│ │ • Todo API │ │ • MCP Web App │ │ • MCP Function │ │
│ │ • MCP Server │ │ │ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │ │ │ │
│ ┌─────────────────────────────────────────────────────────────┤
│ │ API Management │ │
│ └─────────────────────────────────────────────────────────────┤
│ │ │ │ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Cosmos DB │ │ Key Vault │ │ App Insights │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
🛠️ 使用的技术
- .NET 8.0:所有应用程序的核心框架
- ASP。NET核心:Web API和MCP服务器实现
- Azure容器应用:无服务器容器托管
- Azure应用服务:Web应用程序托管
- Azure功能:无服务器计算
- Azure Cosmos数据库:用于todo存储的NoSQL数据库
- Azure API管理:API网关和管理
- Azure二头肌:基础设施即代码
- Azure开发者命令行界面(azd):部署自动化
- .NET Aspire:地方发展协调
📋 先决条件
- .NET 8.0 SDK
- Azure命令行界面
- Azure开发者命令行界面(azd)
- Docker桌面 (适用于集装箱化部署)
- 具有适当权限的Azure订阅
🚀 快速开始
1.克隆存储库
git clone <repository-url>
cd mcp-server-azure
2.初始化Azure开发人员CLI
azd init
3.部署到Azure
azd up
此命令将:
- 使用二头肌模板配置所有Azure资源
- 构建和部署所有应用程序
- 配置网络和安全
- 设置监控和日志记录
4.地方发展。NET Aspire
cd src/aspire/McpDemoAppHost
dotnet run
访问Aspire仪表板 https://localhost:15888 监控所有服务。
📁 项目结构
├── azure.yaml # Azure Developer CLI configuration
├── infra/ # Infrastructure as Code
│ ├── main.bicep # Main Bicep template
│ ├── main.parameters.json # Parameters file
│ └── modules/ # Bicep modules
│ ├── apis/ # API Management modules
│ ├── compute/ # Compute service modules
│ ├── data/ # Data service modules
│ └── shared/ # Shared resource modules
├── src/
│ ├── aspire/ # .NET Aspire orchestration
│ │ └── McpDemoAppHost/ # Aspire host project
│ ├── backend/
│ │ └── TodoWebAPI/ # Todo REST API
│ └── mcpservers/ # MCP Server implementations
│ ├── McpServer.Services/ # Shared MCP services
│ ├── McpServer.WebApp/ # MCP Web App
│ └── McpServer.AzureFunction/ # MCP Azure Function
└── README.md
🔧 配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
AZURE_COSMOSDB_ENDPOINT |
Cosmos DB端点URL | - |
AZURE_COSMOSDB_KEY |
Cosmos DB访问密钥 | - |
TodoServiceUrl |
Todo API基础URL | https://localhost:7053 |
APPLICATIONINSIGHTS_CONNECTION_STRING |
应用洞察连接 | - |
本地开发设置
该项目包括本地测试的开发设置:
- 所有API:
https://localhost:7053 - MCP Web应用程序:
https://localhost:7054 - Aspire仪表板:
https://localhost:15888
🎯 API终点
所有API
| 方法 | 端点 | 描述 |
|---|---|---|
GET |
/todos |
全部获得 |
GET |
/todos/{id} |
获取具体待办事项 |
POST |
/todos |
创建新待办事项 |
PUT |
/todos/{id} |
全部更新 |
DELETE |
/todos/{id} |
删除所有 |
MCP服务器端点
| 方法 | 端点 | 描述 |
|---|---|---|
POST |
/mcp |
MCP协议端点 |
GET |
/health |
健康检查 |
🔄 部署选项
1.Azure容器应用程序(推荐)
- 无服务器容器托管
- 自动缩放
- 与DAPR集成
- 对可变工作负载具有成本效益
2.Azure应用服务
- 传统PaaS托管
- 始终可用
- 轻松自定义域设置
- 内置身份验证
3.Azure功能
- 事件驱动的无服务器计算
- 按执行付费模式
- 自动缩放到零
- 多种触发器类型
🧪 测试
运行单元测试
dotnet test
测试API端点
使用附带的HTTP文件:
src/backend/TodoWebAPI/TodoWebAPI.http
负载测试
该项目支持Azure负载测试集成。有关详细信息,请参阅负载测试文档。
📊 监测和可观察性
- 应用洞察:分布式跟踪和性能监控
- 日志分析:集中式日志记录
- Azure监视器:指标和警报
- 健康检查:内置健康端点
🔐 安全功能
- 管理身份:Azure服务的无密码身份验证
- 密钥库:安全的秘密管理
- 超文本传输安全协议:强制SSL/TLS加密
- CORS:可配置的跨源资源共享
- 认证:Azure AD集成就绪
🌐 网络
- 虚拟网络:隔离网络环境
- 专用端点:安全的数据库连接
- API管理:集中式API网关
- 负载均衡器:高可用性设置
📈 扩展和性能
- 自动缩放:根据需求自动缩放
- 集装箱登记处:高效的图像管理
- 内容分发网络:内容交付优化
- 缓存:Redis缓存集成就绪
🚀 CI/CD管道
该项目已准备好进行GitHub Actions部署:
azd pipeline config
这设置了:
- 推送自动化部署
- 基础设施供应
- 安全扫描
- 性能测试
🤝 贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
📚 资源
🆘 故障排除
常见问题
-
部署失败
- 检查Azure CLI身份验证:
az login - 验证订阅访问权限:
az account show - 审查目标区域的资源配额
- 检查Azure CLI身份验证:
-
容器应用程序问题
- 检查容器日志:
az containerapp logs show - 验证映像注册表访问权限
- 检查环境变量
- 检查容器日志:
-
数据库连接问题
- 验证Cosmos DB端点和密钥
- 检查网络连接
- 查看托管身份权限
获取帮助
- 检查 问题 章节
- 查看Azure服务运行状况
- 查阅Azure文档
- 使用
azd故障排除命令
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🙏 致谢
- Microsoft Azure团队提供出色的文档
- .NET社区,持续创新
- 模型上下文协议规范贡献者
- Azure Developer CLI团队可提供简化的部署体验
由以下材料制成❤️ 对于MCP服务器AZURE