如何将.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连接地址,是整个系统的核心实体。
