如何将.NET开发的MCP服务转接平台应用于AI对话机器人?

摘要:前言 最近小智AI对话机器人在ESP32社区实在是太火了,看过之前文章的小伙伴应该都知道之前有给桌面机器人开发过一个.NET客户端,所以对小智也算是比较熟悉。小智虽然支持MCP(Model Context Protocol)协议来扩展功能,
前言 最近小智AI对话机器人在ESP32社区实在是太火了,看过之前文章的小伙伴应该都知道之前有给桌面机器人开发过一个.NET客户端,所以对小智也算是比较熟悉。小智虽然支持MCP(Model Context Protocol)协议来扩展功能,但是小智的MCP端点是一个特殊的WebSocket服务,如果想要为小智开发MCP功能,就需要针对这个特殊的端点进行开发。 于是就想着能不能做一个转接平台,让开发者可以专注于标准MCP服务的开发,而不用关心小智特殊的WebSocket协议细节。这个平台可以将标准的MCP服务聚合后通过WebSocket提供给小智,同时支持多租户,每个用户都可以配置自己专属的MCP服务。 项目已经上线并开源了,大家可以直接访问 https://xiaozhi.verdure-hiro.cn 体验,也可以在GitHub上找到完整源码:verdure-mcp-for-xiaozhi 📺 视频演示 想快速了解项目功能和使用方法?观看我的B站视频教程: B站视频内容 内容简介 适合人群 小智 MCP 转接服务上线与开源 平台介绍、功能演示、在线使用教程 小智商家和小智爱好者 私有化部署与米家智能家居控制 Docker部署教程、米家MCP服务接入实战 需要私有部署和智能家居控制的用户 为什么要做这个项目 技术背景 小智AI的MCP端点采用的是WebSocket协议,这是一个特殊的实现方式,与标准的MCP协议(基于HTTP/SSE)有所不同。如果想要为小智开发MCP功能,开发者需要: 了解WebSocket协议细节:需要处理连接管理、心跳检测、重连机制等 实现MCP协议转换:将标准MCP的HTTP/SSE请求转换为WebSocket消息 处理工具聚合:如果要使用多个MCP服务,需要自己实现工具列表的聚合和路由 解决方案设计 基于这些技术需求,设计了一个MCP服务转接平台来简化开发: 协议转换:自动将标准MCP服务(HTTP/SSE)转换为小智的WebSocket协议 多租户架构:每个用户都有独立的配置空间,互不干扰 可视化管理:通过Web界面管理MCP服务配置,无需手动编辑配置文件 服务聚合:平台作为中间层,将多个MCP服务的工具聚合后提供给小智 分布式支持:支持多实例部署,通过Redis实现分布式协调 从这个项目能学到什么 核心技术栈 .NET 9 - 新的.NET框架,性能和开发体验都很棒(准备过段时间升级.NET 10) Blazor WebAssembly - 纯C#开发前端,无需学习JavaScript 领域驱动设计(DDD) - 规范的分层架构和领域模型 仓储模式 - 数据访问层的最佳实践 Keycloak认证 - OpenID Connect标准的身份认证 WebSocket编程 - 实时双向通信的实现 分布式协调 - 基于Redis的分布式锁和状态管理 架构亮点 这个项目展示了企业级.NET应用的完整架构: verdure-mcp-for-xiaozhi/ ├── Domain/ # 领域层:聚合根、实体、仓储接口 ├── Application/ # 应用服务层:业务逻辑编排 ├── Infrastructure/ # 基础设施层:数据访问、外部服务 ├── Api/ # API层:RESTful接口、WebSocket服务 └── Web/ # Blazor前端:组件化UI开发 核心设计理念 领域模型设计 项目采用DDD设计,核心有两个聚合根: 1. XiaozhiMcpEndpoint(小智连接端点) 代表用户配置的小智WebSocket连接地址,是整个系统的核心实体。
阅读全文