模型上下文协议服务器

一个在Azure上部署的模型上下文协议(MCP)服务器演示项目,展示多种部署模式和Azure服务集成,包括Todo API后端和Cosmos DB集成。

  • by congiuluc
  • Bicep
  • 本地部署
  • 更新于
在 GitHub 查看 congiuluc/mcp-server-azure

使用说明

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:地方发展协调

📋 先决条件

🚀 快速开始

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

这设置了:

  • 推送自动化部署
  • 基础设施供应
  • 安全扫描
  • 性能测试

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

📚 资源

🆘 故障排除

常见问题

  1. 部署失败

    • 检查Azure CLI身份验证: az login
    • 验证订阅访问权限: az account show
    • 审查目标区域的资源配额
  2. 容器应用程序问题

    • 检查容器日志: az containerapp logs show
    • 验证映像注册表访问权限
    • 检查环境变量
  3. 数据库连接问题

    • 验证Cosmos DB端点和密钥
    • 检查网络连接
    • 查看托管身份权限

获取帮助

  • 检查 问题 章节
  • 查看Azure服务运行状况
  • 查阅Azure文档
  • 使用 azd 故障排除命令

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

  • Microsoft Azure团队提供出色的文档
  • .NET社区,持续创新
  • 模型上下文协议规范贡献者
  • Azure Developer CLI团队可提供简化的部署体验

由以下材料制成❤️ 对于MCP服务器AZURE