萌芽AI助手带你零基础读懂MCP:AI Agent与外部工具的标准化接口(2026年4月)
如果你最近正在关注AI Agent相关的技术趋势,很可能已经被“MCP”这个词刷屏了。萌芽AI助手在整理AI领域的热点技术时发现,MCP已成为当前AI工程化落地中最受关注的基础设施之一,但很多开发者对它的理解仍停留在“听说过”的阶段。本文将从问题驱动出发,带你一次性搞懂:什么是MCP?它和Function Calling有什么区别?如何上手开发一个MCP服务?
一、痛点切入:为什么需要MCP?

先看一个最常见的场景。假设你开发了一个AI助手,想让它能查询天气。传统的做法是这样的:
传统实现:硬编码工具调用def call_weather_api(city: str): 调用某个天气API的专有接口 return requests.get(f"https://api.weather.com/v1/weather?city={city}") 然后在prompt中手动描述工具格式 tools = [{"type": "function", "function": {...}}]
这种做法有三个致命痛点:
碎片化严重:OpenAI、Claude、Google各自的Function Calling格式互不兼容,每接入一个新模型都要重新适配-12。
扩展性差:增加一个新工具需要修改Agent代码并重新部署。
安全边界模糊:工具调用权限缺乏标准化管理,容易引发越权风险-14。
如果N个AI应用要连接M个外部工具,传统方式需要N×M种定制集成。这正是MCP诞生的背景。
二、核心概念讲解:什么是MCP?
MCP全称Model Context Protocol(模型上下文协议) ,是由Anthropic于2024年11月推出并开源的标准化协议,旨在实现大语言模型与外部数据源和工具之间的安全双向连接-1。
用一句话概括:MCP是AI模型与外部工具/数据源之间的标准化连接协议-6。
为了方便理解,可以把它类比为“AI时代的USB-C接口” 。在USB-C出现之前,不同设备有不同的充电接口,出门需要带一堆线;USB-C统一了接口标准后,一根线就能解决所有问题。同理,MCP统一了AI模型与外部工具的通信方式,让任何一个支持MCP的AI应用都能直接调用任何一个支持MCP的外部工具-8。
MCP采用客户端-服务器架构,核心包含三个层级-8:
| 组件 | 角色 | 示例 |
|---|---|---|
| MCP Host | AI应用,提供LLM集成入口 | Claude Desktop、Cursor |
| MCP Client | Host创建的连接器,与服务器建立1:1会话 | 内部进程,用户无感 |
| MCP Server | 提供外部上下文和能力的服务 | GitHub、Slack、数据库等MCP服务器 |
MCP Server向外暴露三类核心能力原语-8:
Tools(工具) :模型自主决定调用的可执行函数,如查询数据库、调用API
Resources(资源) :结构化数据,用于向LLM注入上下文
Prompts(提示词) :用户可控的可复用提示词模板
三、关联概念讲解:Function Calling
与MCP经常一起被提及的是Function Calling(函数调用) 。Function Calling由OpenAI等厂商推动,允许大语言模型将自然语言转换为API调用,直接执行预设的函数-。
Function Calling的基本工作流程如下:
用户输入 → LLM识别意图 → 选择预定义函数 → 填充参数(JSON) → 执行API调用 → 返回结果整个过程发生在模型内部,工具列表直接硬编码在模型的系统提示或请求参数中。
四、MCP与Function Calling的区别总结
两者不是替代关系,而是解决不同层面问题的互补方案。
| 对比维度 | MCP | Function Calling |
|---|---|---|
| 架构 | 解耦,工具与模型完全分离,独立部署 | 紧耦合,工具列表通常硬编码在模型调用中-51 |
| 跨模型兼容性 | 通用协议,一次实现可跨模型复用 | 厂商特定,OpenAI、Google等格式不统一-12 |
| 动态性 | 服务器可运行时动态注册新工具 | 功能列表通常静态,需重启才能更新-51 |
| 复杂度 | 需要额外部署Server,相对复杂 | 轻量快速,适合简单场景-12 |
| 安全控制 | 沙箱机制,访问权限受严格约束 | 依赖应用自身实现,风险较高-51 |
一句话记忆:MCP是解耦的标准化协议,Function Calling是模型内置的便捷能力。
在实际应用中,两者可以协同工作,形成“Function Calling负责意图解析,MCP负责协议传输与工具执行”的分层架构-。
五、代码示例:从零搭建一个MCP Server
下面用Python SDK搭建一个最简单的MCP Server,支持加法计算和动态问候资源-21。
from mcp.server.fastmcp import FastMCP 创建MCP服务器实例 mcp = FastMCP("my-service") 定义Tool:模型可调用的加法函数 @mcp.tool() def add(a: int, b: int) -> int: """计算两个数的和""" return a + b 定义Resource:模型可读取的动态问候资源 @mcp.resource("greeting://{name}") def get_greeting(name: str) -> str: """获取个性化的问候信息""" return f"Hello, {name}!" 运行服务器(使用Streamable HTTP传输) if __name__ == "__main__": mcp.run(transport="streamable-http")
启动服务器后,在Claude Code中注册即可使用:
claude mcp add --transport http my-service http://localhost:8000/mcp代码执行流程解析:
FastMCP创建服务器实例,自动处理MCP协议的生命周期@mcp.tool()装饰器将add方法注册为可调用的Tool@mcp.resource()将get_greeting注册为可读取的Resource客户端(如Claude Desktop)通过MCP协议发现并调用这些能力
对于Java开发者,Spring AI Alibaba也提供了完整的MCP支持。以下是一个Spring Boot服务中暴露天气查询工具的示例-60:
@Service public class WeatherService { @Tool(description = "根据城市名称获取天气预报") public String getWeatherByCity(String city) { // 查询天气逻辑 return "北京:晴,15℃~27℃"; } }
只需在application.yml中配置MCP协议,服务能力就会自动暴露为MCP Server,供任何支持MCP的客户端调用-60。
六、底层原理:MCP的通信机制
MCP的底层核心是JSON-RPC 2.0消息格式。所有MCP通信都基于JSON-RPC消息进行编码和传输-33。
三种JSON-RPC消息类型-33:
请求:包含
id、method、params,需要响应响应:包含
id、result或error通知:仅包含
method和params,无需响应
MCP定义了两种标准传输机制-8:
stdio:通过标准输入输出通信,适合本地集成、命令行工具,延迟极低
Streamable HTTP:2025年11月规范引入的新传输方式,替代传统SSE,支持远程部署和水平扩展
截至2026年3月,MCP的SDK月下载量已突破9700万次,GitHub星标超过8.1万,Anthropic、OpenAI、Google、Microsoft、AWS等主流厂商均已支持-8。
七、高频面试题与参考答案
1. 什么是MCP?它的主要设计目标是什么?
标准答案:MCP(Model Context Protocol)是由Anthropic提出的开源协议,用于在大型语言模型与外部工具、数据源和服务之间建立标准化的通信桥梁-51。
主要设计目标包含四点-51:
解耦与模块化:将LLM核心与外部工具分离,独立开发迭代
安全性:提供可控的沙箱环境,限制LLM对敏感系统的访问
可扩展性:轻松为模型添加新功能,无需重新训练或微调
标准化:建立统一通信标准,促进工具生态发展
2. MCP与Function Calling的本质区别是什么?
踩分点:从架构、跨模型兼容性、动态性、安全控制四个维度回答。核心结论:MCP是解耦的标准化协议,Function Calling是模型内置的便捷能力,两者可协同使用。
3. MCP Server如何向客户端宣告能力?
通过initialize握手过程:客户端发送初始化请求(含客户端能力和协议版本),服务器回复InitializeResult,其中capabilities字段声明服务器支持的功能(如tools、resources等)-51。
4. MCP支持哪些传输方式?
stdio和Streamable HTTP两种。stdio用于本地通信,Streamable HTTP支持远程部署和水平扩展。传统SSE传输方式已被官方弃用,迁移至Streamable HTTP-8。
5. MCP的三层架构是什么?
Host(AI应用)→ Client(连接器)→ Server(能力提供方) 。Host创建多个MCP Client会话,每个Client与对应的MCP Server建立独立的JSON-RPC通信通道-8。
八、结尾总结
本文核心知识点回顾:
MCP定义:AI模型与外部工具之间的标准化连接协议,被誉为“AI时代的USB-C”
三层架构:Host → Client → Server,清晰分离职责
三大原语:Tools(模型自主)、Resources(上下文注入)、Prompts(用户控制)
与Function Calling的关系:MCP解决协议标准化问题,Function Calling解决意图解析问题,两者互补而非互斥
底层依赖:JSON-RPC 2.0 + stdio/Streamable HTTP传输
易错提醒:不要把MCP等同于“另一种Function Calling”——MCP是协议层基础设施,而不是模型内置能力。
MCP作为AI Agent基础设施层的核心组件,正在推动从“被动聊天机器人”向“能动智能体”的范式转变-。下一篇文章将从MCP Client视角切入,讲解AI应用如何连接和调用MCP服务,以及企业级MCP Gateway的落地实践,欢迎持续关注!
相关文章


最新评论