SpringAI轻松构建MCP Client-Server架构
《SpringAI轻松构建MCP Client-Server架构》共 0.3 万字,通篇围绕 MCP、上下文、架构、Agent 展开,归在「Agent 与工具调用」这一层。
适合要让 AI 真的去干活、不只是陪人聊天的人
目录骨架(8 节)
- 1、前言
- 2、什么是 MCP?
- 3、MCP 架构
- 4、MCP & JAVA 支持
- 5、MCP & function calling
- 6、小结
- 4.1、多种传输方式
- 4.3、简单构建自己的 MCP Server
示例代码
注:将ppt后缀名改为zip后解压
jdk版本:17.0.8
1、前言
最近 Anthropic 主导发布了 MCP(Model Context Protocol,模型上下文协议)后,着实真真火了一把。熟悉 AI 大模型的人对 Anthropic 应该不会陌生,Claude 3.5 Sonnet 模型就是他们发布的,包括现在的最强编程 AI 模型 3.7 Sonnet。今天我们来刨析下什么是 MCP,AI 大模型下,需要 MCP 吗?
2、什么是 MCP?
MCP(Model Context Protocol)模型上下文协议,是一种适用于 AI 大模型与数据源交互的标准协议。旨在实现跨模型、跨会话的上下文信息持久化与动态共享。它通过标准化接口实现模型间的上下文传递、版本控制和协同推理,解决复杂 AI 任务中的上下文碎片化问题。
那为什么需要重新定义 AI 的上下文管理? 在我们最开始使用 AI 大模型的时候,经常会遇到以下一些问题,如:上下文可能莫名的丢失,导致会话的语义出现断层。再如:不同模型之间,比如 ChatGPT 和 DeepSeek 之间记忆不互通,或者不同版本之间无法追踪上下文的变更历史等等,这些其实都是信息孤岛。
因此,我们需要有一个专门的协议或者说技术能跨模型、跨版本串联我们的上下文,解决记忆互通的问题。
如果我们观察整个 AI 自动化的发展过程,我们会发现 AI 自动化分三个阶段:AI Chat、AI Composer、AI Agent。
- AI Chat 通常只是提供建议和代码片段,人机协作的模式通常需要用户手动进行复制,调试,集成。
- AI Composer 相比 AI Chat 支持了局部的代码自动修改,我们只需要确认接受或拒绝接受即可。但是也局限于代码的上下文操作。
- AI Agent 可以完成端到端的任务闭环。他是一个完全的智能体,自主决策,修改,调整我们所需的代码块,或者自主提取需要的信息。我们只需要负责监控动作就行。但是跨系统的协作能力有所欠缺。
因此,进一步的演化路线自然是为了完善 AI Agent 的跨模型或跨系统而实现。他是一个中间层,可以作为 AI Agent 的智能路由中枢。
熟悉 Java 分布式的朋友应该会发现,这个其实很想分布式的发展进程。而 MCP 更多像是一个 RPC 的标准协议一样。不确定我这么比喻是否恰当。
3、MCP 架构
模型上下文协议 (MCP) 遵循客户端 - 主机 - 服务器架构,其中每个主机可以运行多个客户端实例。这种架构使用户能够跨应用程序集成 AI 功能,同时保持明确的安全边界并隔离问题。MCP 基于 JSON-RPC 构建,提供有状态会话协议,专注于客户端和服务器之间的上下文交换和采样协调。
官方的 MCP 系统架构图:

可以发现 MCP 基于三层分层模式:
- MCP Host(主机应用):运行 AI 模型或代理的宿主程序,如 Claude 桌面版、某 IDE 中的 AI 助手等。主机应用通过内置的 MCP 客户端与外部建立连接,是连接的发起方。
- MCP Client(客户端):嵌入在主机应用中的协议客户端组件。每个 MCP 客户端与一个特定的 MCP 服务器保持一对一的连接,用于向服务器发送请求或接收响应。一个主机应用中可以运行多个 MCP 客户端,从而同时连接多个不同的服务器。
- MCP Server(服务器):独立运行的轻量程序,封装了某一数据源或服务的具体能力,通过标准化的 MCP 接口对外提供。每个 MCP 服务器相当于一个 “适配器”,将底层的数据源 / 工具(本地文件、数据库、第三方 API 等)的功能以统一格式暴露出来,供客户端调用。
- 本地数据源:部署在用户本地环境中的数据资源,例如本机文件系统、数据库、应用服务等。MCP 服务器可以受控地访问这些资源,并将内容提供给 AI 模型使用。例如,一个本地 MCP 服务器可以读取电脑文件或查询本地 SQLite 数据库,然后将结果发给模型作为参考。
- 远程服务:通过网络提供的外部系统或在线服务(通常通过 HTTP API 访问)。MCP 服务器也可以连接到这些远程服务获取数据。比如,可以有一个 MCP 服务器连接 Slack 的 Web API,代表 AI 助手执行发送消息、读取频道记录等操作。
4、MCP & JAVA 支持
MCP 提供了多种编程语言的支持,如 Python,Java,Kotlin,TypeScript 等。这里以 Java SDK 为例,官方也提供了相关文档:https://modelcontextprotocol.io/sdk/java/mcp-overview
