Skip to content

MCP 介绍与定义 ​

一个 Agent 能查询库存,IDE 助手也想使用同一查询能力。若每个应用都为库存服务单独设计接入方式,工具发现、参数描述和结果处理会反复实现。MCP(Model Context Protocol,模型上下文协议)为 AI 应用与外部能力之间定义了一套可互操作的接口。MCP 架构规范

MCP 解决什么问题 ​

MCP 规定连接双方如何声明能力、发现可用内容、发送请求和返回结果。它让应用能以一致的方式接入多个服务端,但不负责替 Host 决定用户意图,也不保证模型一定选择某个工具。

连接中有三个角色:

角色职责例子
Host管理用户交互、模型调用、连接和授权策略IDE 助手、聊天应用
MCP Client在 Host 内维护与一个 Server 的协议连接IDE 助手中的库存客户端
MCP Server发布能力,处理来自 Client 的协议请求库存查询服务

一个 Host 可以创建多个 Client,分别连接不同的 Server。Client 与 Server 交换 MCP 消息;模型通常由 Host 调用,模型与 Server 不必直接通信。Host 负责选择向模型暴露哪些能力,并在敏感操作前执行自己的确认策略。

Server 提供的三类基础能力 ​

能力含义典型方法
Tools由 Client 请求执行的操作,如查询库存tools/list、tools/call
Resources按 URI 读取的上下文,如商品手册resources/list、resources/read
Prompts可带参数获取的提示模板prompts/list、prompts/get

这些是 Server 向 Client 提供的能力,并不等同于模型的 Function Call。Server 在初始化时声明支持的能力;具体工具还会提供名称、说明和输入模式。Host 可以把合适的工具描述交给模型,再处理模型提出的调用请求。MCP Tools

协议的三个层次 ​

层次回答的问题本专题后续文章
消息格式如何表达请求、响应、通知和错误?JSON-RPC 2.0 介绍
传输消息在本地进程或网络间如何送达?MCP 传输标准化
能力流程工具如何提供、发现、调用并返回?MCP 工具提供与调用流程

MCP 使用 JSON-RPC 2.0 表达消息,可以通过 stdio 或 Streamable HTTP 传输。同一 tools/call 语义不应因为使用本地进程或 HTTP 而改变。MCP 传输规范

边界与下一步 ​

MCP 是应用与工具服务之间的协议,不是模型训练格式、模型供应商 API,也不是自动授权机制。若只需在单个应用内调用 Java 方法,直接使用框架工具回调可能更简单;当多个 Host 需要发现和复用同一个外部能力时,MCP 的统一接口更有价值。

先阅读 JSON-RPC 2.0 介绍,再看传输和工具流程。要运行 Java 示例,可在理解基础流程后阅读 Spring AI MCP 实践。