了解现代实时事件架构
1 简介
MCP架构的服务本质上是一个运行在服务器上的“前端代理大脑” + “实时事件总线” + “工具执行沙盒”,它彻底抛弃了传统 MVC 的“页面-请求-响应”范式。

改为MCP:
所有参与方(用户、Claude、前端页面、其他用户)都通过同一个 WebSocket 连接到这个“中央大脑”,
大脑负责:
• 协调 Claude 的思考与工具调用
• 执行所有工具(保护 API Key)
• 实时广播状态变更
• 维护会话与内存状态
这才是 2025 年真正的 Web 端实时 AI 应用架构范式,而传统 MVC 已经完全无法胜任这种交错、实时、多方协作的场景。
2 类比理解
- 最直观的比喻
传统 MVC 应用 类似 邮局(你寄信 → 等回复)
AI的 MCP 架构服务 类似 微信群聊 + 群机器人
Claude 类似 群里一个超级智能的成员
tool_call 类似 @机器人 执行命令
broadcastChatMessage 类似 群消息自动推送
WebSocket 类似 所有人都在同一个群里
当你理解了MCP是“一个带工具调用能力的超级微信群服务器”,你就理解了它的全部精髓。
这就是为什么它看起来“乱”、没有 Controller、没有路由、满屏 channel 和 sync.Map,因为它根本不是 MVC,它是 实时协作式 AI 应用的新范式。
3 如何进行设计和实现
Go 语言实现一个生产级 MCP(Model Context Protocol)WebSocket 服务,专门服务于 Web 端实时应用(如在线聊天、AI 客服、文档协同编辑、AI 代理控制面板等),并完美支持 Claude 的交错思考(Interleaved Thinking),是当前最前沿的 AI-Native Web 架构之一。
WebSocket 服务是一个专为前端实时 AI 应用(特别是支持 Claude 交错思考 / Interleaved Thinking)设计的、轻量级、高性能的工具调用协议层,其核心目标是让 Web 前端通过一个单一 WebSocket 长连接,就能同时拥有:
实时聊天消息收发(类似传统即时聊天室)
与大模型(Claude)进行带工具调用的交错思考(tool use in streaming)
不暴露 Anthropic API Key 到前端
支持多会话、广播、状态同步
4 实现原理及对比
与传统 MVC 架构的区别与联系两个维度,深入剖析。
MCP 服务的核心实现原理(为什么能做到实时 + 工具交错)
-
- 协议层:MCP(Model Communication Protocol 自研协议)
基于 JSON 的轻量消息协议,类似 JSON-RPC 2.0 + LSP(Language Server Protocol)的混合体
核心消息类型:
initialize / initialize_response:握手,声明可用 tools
tool_call:前端或 Claude 请求调用工具
tool_result / tool_error:工具执行结果返回
自定义事件(如 chat_message)用于推送
-
- 架构核心:WebSocket 作为“双向 RPC + 事件总线”
传统 HTTP 是请求-响应,单向、短连接。而这里:
textWeb 前端 ← WebSocket (双向) → Go MCP Server ←→ Anthropic Claude (stream)
关键创新点在于:
角色传统做法MCP 服务做法(关键突破)Claude 调用工具前端直接调用 → 暴露 API KeyGo 服务端代理,所有工具都在服务端执行工具结果如何回到 Claude只能等整轮结束再发新请求通过 chan MCPMessage + stream.SendToolResult() 实现流中动态插队实时推送聊天消息轮询或 SSE直接通过 sessions.Range 广播到所有 WebSocket前端状态同步复杂的前后端状态管理所有状态(聊天记录、工具)集中在服务端,前端无状态
-
- “交错思考”实现的核心闭环(最精妙的部分)
Go 1. Claude 在流式响应中发出 tool_use
case anthropic.ToolUseEvent:
// 2. Go 服务器拦截,构造 MCP tool_call 消息
// 3. 直接调用本地的 tool(如 send_message)
session.handleToolCall(toolCallMsg)
// 4. 工具执行完发 tool_result → handleClaudeToolResult 收到
// 5. 通过 channel 把结果塞回 Anthropic 的 stream
stream.SendToolResult(result.ID, result.Result, ...)
这形成了一个完美的闭环:Claude → Go → Tool → Go → Claude,整个过程在一次 stream 中完成,中间不需要断开重新发请求。
这就是真正的 Interleaved Thinking / Thinking with Tools in Streaming,而这个能力在 2025 年只有 Anthropic 最高级别 beta 才开放。
5 与层次架构的区别与联系
维度 层次架构 MCP架构服务
核心区别 通信协议HTTP REST/GraphQL,短连接WebSocket 长连接从“请求-响应”到“事件驱动双向通信”
会话状态 无状态(靠 JWT/Cookie)或服务器 Session 有状态(sessions sync.Map 存活连接)服务端持有长连接对象,可随时 push
控制器(Controller) 每个 URL 一个函数,处理完返回 没有传统 Controller,消息驱动无路由概念,按 msg.Type 和 msg.Method 分发业务逻辑位置
Service 层 tool_xxx 函数 + 全局广播函数 业务被拆成“可被工具调用”的纯函数数据流向前端 → C → M → 响应 → 前端双向、交叉、并发Claude、用户、前端三方可同时发消息
实时性 靠轮询或 SSE 实现伪实时 原生推送,延迟 <50ms质的飞跃
前端复杂度 需要维护大量 API、状态、轮询 逻辑只维护一个 WebSocket,逻辑极简前端代码量减少 70%+
是否适合AI-Agent 勉强(工具调用要多轮 HTTP) 天生为 Agent + Tools 设计这是最大差异
因此MCP 服务是“后 MVC 时代”的实时 AI 应用架构
传统 MVC WebSocket 架构 Model(数据)- View(页面)- Controller(路由)Session(长连接)- Tool(能力)- Message(事件)适合 CRUD、表单提交
MCP架构适合实时协同、AI Agent、交错思考扩展性靠加 API扩展性靠“加一个 tool 函数”状态存在数据库状态可存在内存(chatHistory + sessions)。
- 点赞
- 收藏
- 关注作者
评论(0)