首页 科技信息文章正文

萌芽AI助手带你零基础读懂MCP:AI Agent与外部工具的标准化接口(2026年4月)

科技信息 2026年05月12日 03:09 20 小编

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

一、痛点切入:为什么需要MCP?

先看一个最常见的场景。假设你开发了一个AI助手,想让它能查询天气。传统的做法是这样的:

python
复制
下载
 传统实现:硬编码工具调用

def call_weather_api(city: str): 调用某个天气API的专有接口 return requests.get(f"https://api.weather.com/v1/weather?city={city}") 然后在prompt中手动描述工具格式 tools = [{"type": "function", "function": {...}}]

这种做法有三个致命痛点:

  1. 碎片化严重:OpenAI、Claude、Google各自的Function Calling格式互不兼容,每接入一个新模型都要重新适配-12

  2. 扩展性差:增加一个新工具需要修改Agent代码并重新部署。

  3. 安全边界模糊:工具调用权限缺乏标准化管理,容易引发越权风险-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 HostAI应用,提供LLM集成入口Claude Desktop、Cursor
MCP ClientHost创建的连接器,与服务器建立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的基本工作流程如下:

text
复制
下载
用户输入 → LLM识别意图 → 选择预定义函数 → 填充参数(JSON) → 执行API调用 → 返回结果

整个过程发生在模型内部,工具列表直接硬编码在模型的系统提示或请求参数中。

四、MCP与Function Calling的区别总结

两者不是替代关系,而是解决不同层面问题的互补方案。

对比维度MCPFunction Calling
架构解耦,工具与模型完全分离,独立部署紧耦合,工具列表通常硬编码在模型调用中-51
跨模型兼容性通用协议,一次实现可跨模型复用厂商特定,OpenAI、Google等格式不统一-12
动态性服务器可运行时动态注册新工具功能列表通常静态,需重启才能更新-51
复杂度需要额外部署Server,相对复杂轻量快速,适合简单场景-12
安全控制沙箱机制,访问权限受严格约束依赖应用自身实现,风险较高-51

一句话记忆:MCP是解耦的标准化协议,Function Calling是模型内置的便捷能力

在实际应用中,两者可以协同工作,形成“Function Calling负责意图解析,MCP负责协议传输与工具执行”的分层架构-

五、代码示例:从零搭建一个MCP Server

下面用Python SDK搭建一个最简单的MCP Server,支持加法计算和动态问候资源-21

python
复制
下载
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中注册即可使用:

bash
复制
下载
claude mcp add --transport http my-service http://localhost:8000/mcp

代码执行流程解析

  1. FastMCP创建服务器实例,自动处理MCP协议的生命周期

  2. @mcp.tool()装饰器将add方法注册为可调用的Tool

  3. @mcp.resource()get_greeting注册为可读取的Resource

  4. 客户端(如Claude Desktop)通过MCP协议发现并调用这些能力

对于Java开发者,Spring AI Alibaba也提供了完整的MCP支持。以下是一个Spring Boot服务中暴露天气查询工具的示例-60

java
复制
下载
@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

  • 请求:包含idmethodparams,需要响应

  • 响应:包含idresulterror

  • 通知:仅包含methodparams,无需响应

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支持哪些传输方式?

stdioStreamable HTTP两种。stdio用于本地通信,Streamable HTTP支持远程部署和水平扩展。传统SSE传输方式已被官方弃用,迁移至Streamable HTTP-8

5. MCP的三层架构是什么?

Host(AI应用)→ Client(连接器)→ Server(能力提供方) 。Host创建多个MCP Client会话,每个Client与对应的MCP Server建立独立的JSON-RPC通信通道-8

八、结尾总结

本文核心知识点回顾:

  1. MCP定义:AI模型与外部工具之间的标准化连接协议,被誉为“AI时代的USB-C”

  2. 三层架构:Host → Client → Server,清晰分离职责

  3. 三大原语:Tools(模型自主)、Resources(上下文注入)、Prompts(用户控制)

  4. 与Function Calling的关系:MCP解决协议标准化问题,Function Calling解决意图解析问题,两者互补而非互斥

  5. 底层依赖:JSON-RPC 2.0 + stdio/Streamable HTTP传输

易错提醒:不要把MCP等同于“另一种Function Calling”——MCP是协议层基础设施,而不是模型内置能力。

MCP作为AI Agent基础设施层的核心组件,正在推动从“被动聊天机器人”向“能动智能体”的范式转变-。下一篇文章将从MCP Client视角切入,讲解AI应用如何连接和调用MCP服务,以及企业级MCP Gateway的落地实践,欢迎持续关注!

上海羊羽卓进出口贸易有限公司 备案号:沪ICP备2024077106号