一、什么是MCP?
- MCP(Model Context Protocol) 是由 Anthropic 于2024年11月底推出的开放通信协议标准,旨在统一大语言模型(LLM)与外部数据源、工具和服务之间的交互方式。它解决了AI系统集成中接口碎片化的问题,类似于为“模型调用工具”制定通用语言。
- MCP协议规范的Gihub地址:https://github.com/modelcontextprotocol/modelcontextprotocol
核心价值
- 标准化:定义统一的请求/响应格式,避免为每个工具开发定制接口。
- 解决痛点:打破数据孤岛,避免为每个数据源单独开发定制化连接器,降低开发成本。
通过MCP,模型只需发送标准化请求即可调用天气API、数据库或企业内部系统,无需关注底层实现差异。
二、为什么使用MCP?
MCP( 模型上下文协议 )通过标准化AI与外部工具、数据源的交互方式,解决了传统函数调用机制存在的能力固化、生态割裂和集成复杂等问题
能力固化问题
- 传统函数调用依赖静态注册模式,工具能力被预先固化在系统提示词中,模型无法动态感知或使用新增服务。例如,当需要接入新工具时,需重新设计接口描述和提示词模板,导致跨平台适配成本高。
生态割裂问题
- 不同AI平台(如 OpenAI Functions 、 QwenAgent 、 Google Vertex AI )采用私有化工具定义格式,开发者需为同一功能维护多套SDK代码。MCP通过统一标准简化跨平台集成,避免重复开发。
集成复杂问题
- 不同厂商的封闭调用协议导致工具复用困难,即便同一工具在不同平台也需要重新编写调用逻辑。MCP通过开放标准实现模块化连接,降低集成复杂度并提升开发效率。
MCP通过协议层标准化实现突破:
- 生态互操作性
任何兼容MCP的工具(如PostgreSQL/Slack/GitHub)可即插即用,无需重复开发适配器 - 开发效率飞跃
避免重复造轮子,直接复用社区成熟组件(如阿里云百炼MCP Server列表) - 无缝增强AI Agent能力
Agent通过标准MCP调用链组合多工具(如:天气查询、联网搜索、时区转换….)
- 生态互操作性
关键结论
MCP不是又一个技术框架,而是重塑AI工具生态的基础协议。它像AI世界的USB Type-C
接口:
- 终结私有化适配的「线缆地狱」
- 让开发者聚焦业务逻辑而非兼容层
- 通过协议级安全释放企业数据价值
- 通过 MCP 服务器和 MCP 客户端,只要大家都遵循这套协议,就能实现“万物互联”
正如Anthropic技术负责人所言:
“MCP的目标是让调用工具像HTTP访问网页一样简单可靠”
三、MCP怎么使用?
- 要使用MCP,首先我们要知道的它的架构:
- MCP 的核心遵循客户端-服务器架构,其中主机应用程序可以连接到多个服务器:
flowchart LR subgraph "计算机" Host["MCP客户端(AI Agent, IDE...)"] S1["MCP服务 A"] S2["MCP服务 B"] D1[("本地数据源 A")] Host <-->|"MCP 协议"| S1 Host <-->|"MCP 协议"| S2 S1 <--> D1 end subgraph "互联网" S3["MCP服务 C"] D2[("远程服务 B")] D3[("远程服务 C")] S2 <-->|"Web APIs"| D2 S3 <-->|"Web APIs"| D3 end Host <-->|"MCP 协议"| S3
- 从官网介绍页抄的图,链接:https://modelcontextprotocol.io/introduction
- MCP 主机:希望通过 MCP 访问数据的: AI Agent、IDE 等程序
- MCP 客户端:与服务器保持一对一连接的协议客户端
- MCP 服务器:通过标准化MCP协议暴露特定能力的轻量级服务程序
- 本地数据源:MCP 服务器可以安全访问的计算机文件、数据库和服务
- 远程服务:MCP 服务器可以连接到互联网上的可用的外部系统(例如,通过 API)
1、快速开始
从上图,我们大概知道,有一个MCP服务端和MCP客户端,还有它们之间通讯的MCP协议
文字表述还是比较空洞,来个代码实战快速入门吧,我们还是以
spring-ai-alibaba
框架快速演示而Spring AI对MCP的集成有几种方式,如下:
客户端启动器:
spring-ai-starter-mcp-client
- 提供 标准输入/输出 (STDIO)和基于 HTTP 的 SSE 支持spring-ai-starter-mcp-client-webflux
- 基于 WebFlux 的 SSE 传输实现
服务器启动器:
spring-ai-starter-mcp-server
- 支持标准输入/输出 (STDIO) 传输的核心服务器spring-ai-starter-mcp-server-webmvc
- 基于 Spring MVC 的 SSE 传输实现spring-ai-starter-mcp-server-webflux
- 基于 WebFlux 的 SSE 传输实现
我们还是以之前RAG的文章富婆Demo为例,我们创建一个MCP服务
MCP-SERVER
- 1、导入依赖
1 | <dependencies> |
- 2、创建一个富婆查询服务
- RichWomanService
1 |
|
- 上面我们定义了几个富婆查询的方法,可以看有
@Tool
注解的方法 - 然后我们构建一个
ToolCallbackProvider
工具提供者,注入成一个bean,如下:
1 |
|
3、配置MCP服务
编辑application.yml定义我们服务的名称与版本等信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23server:
port: 8091
spring:
application:
name: mcp-server-webflux
ai:
mcp:
server:
name: rich-woman-server
version: 0.0.1
type: ASYNC
sse-endpoint: /sse
sse-message-endpoint: /mcp
instructions: 这个是中国富婆信息查询和资源
capabilities:
tool: true
resource: true
prompt: true
completion: true上面配置好了我们把服务启动起来
MCP-CLIENT
上面我们已经创建好,mcp服务,接下面我们就可以建立一个mcp客户端来调用它了
上面使用:
spring-ai-starter-mcp-server-webflux
对应的使用:spring-ai-starter-mcp-client-webflux
1、导入依赖
1 | <dependencies> |
- 2、配置application.yml
1 | server: |
- 3、使用示例:
1 |
|
我们可以在构建ChatClient的时候,通过配置
defaultToolCallbacks()
方法转入ToolCallbackProvider
或者在调用ChatClient时设置toolCallbacks
传入:ToolCallbackProvider
下面是演示结果图片:
2、第三方工具使用MCP服务
- 我们除了使用IDEA的方式调用MCP服务,我们也可以通过
Cherry Studio
等软件来配置MCP服务使用,如下:
- 首先需要配置MCP服务,从左下角点击设置->MCP服务,把我们的服务地址写入然后保存
- 在消息对话的时候,点击MCP服务,添加我们上面添加的富婆MCP服务,然后就可以对话了
- 可以看到我们提问的时候,去调用了MCP服务的
findByCityName
的方法,通过返回数据给AI大模型,然后在过滤返回给我们。
四、MCP和Tool Calling的区别
MCP(Model Context Protocol,模型上下文协议)和 Tool Calling(工具调用)是两种解决大模型与外部工具/数据源交互的技术方案,但它们在架构设计、协议标准化、安全性等方面存在显著差异。
- Tool Calling
模型内置的能力,指大模型根据用户请求,主动解析并生成结构化调用指令(如JSON格式),触发外部工具执行(如查询天气、数据库)。其核心是模型自身的能力扩展,与特定AI平台强绑定(如OpenAI的Function Calling) - MCP
独立于模型的开放协议,采用客户端-服务器架构(Client-Server)。MCP客户端(如Claude Desktop、IDE插件)向MCP服务器(如本地文件系统、GitHub API服务)发送标准化请求,服务器执行操作后返回结果。MCP的核心是构建模型与工具间的通用桥梁,与模型无关。
以下是详细对比:
维度 | MCP(模型上下文协议) | 传统Tool Calling |
---|---|---|
架构模式 | 模型 → MCP客户端 ↔ MCP服务器 → 工具(解耦) | 模型 → 宿主程序 → 工具(紧耦合) |
标准化 | 开放标准,跨模型兼容 | 平台私有,碎片化 |
上下文支持 | 支持复杂上下文同步与更新 | 仅传递调用参数 |
安全性 | 协议层强制权限管控 | 依赖开发者自行实现 |
扩展性 | 动态发现工具/版本管理 | 静态预定义工具列表 |
适用场景 | 简单单次调用、快速原型 | 企业复杂系统、敏感数据、长期可扩展应用 |
- 举个栗子🌰:
- 传统方案:每次新增工具都要重新训练模型适配,堪比给汽车换发动机才能加装新音响
- MCP方案:像给汽车装USB接口,插U盘播音乐/接导航仪/连行车记录仪即插即用
立刻体验:
- Star MCP官方GitHub:https://github.com/modelcontextprotocol
- 部署文中富婆查询Demo:https://github.com/rstyro/spring-ai-alibaba-demo
- 用Cherry Studio可视化调试(截图见上文)