最近在学习 AI Agent 相关内容时,遇到了几个高频概念:

刚开始学习的时候,我一直有一个疑问:
带着这些问题,我整理了一下自己的理解。
大语言模型(LLM)本身只能处理文本。
例如:
用户:
帮我查询今天北京天气
LLM 本身并不知道实时天气。
因为:
所以需要给 LLM 增加:
Tools(工具)
工具本质就是:
一个可以执行具体功能的函数。
例如:
getWeather(city)searchWeb(keyword)queryDatabase(sql)
当用户提出问题时:
用户↓LLM↓判断自己无法完成↓调用工具↓获得结果↓生成最终回答
这个过程就是:
Function Calling
虽然 Function Calling 解决了:
但是随着工具越来越多,又出现了新的问题。
假设现在有很多工具:
searchGoogle()searchWeb()searchInternet()querySearch()
它们功能都类似:
搜索互联网
那么:
LLM 应该调用哪一个?
如果工具描述不够清晰:
模型很容易选择错误。
这就是:
决策瘫痪(Decision Paralysis)
为了让 LLM 知道有哪些工具可用。
我们需要把工具信息传递给模型:
例如:
工具名称工具描述参数返回值使用方式
如果只有几个工具:
没有问题。
但是如果:
100个工具500个工具1000个工具
这些工具描述都会进入:
Context(上下文)
导致:
最终:
工具越多,模型反而越难判断。
为了解决这些问题:
Anthropic 提出了:
MCPModel Context Protocol
中文:
模型上下文协议
MCP 本质是一套:
LLM 与外部工具交互的标准协议。
它规定:
简单理解:
以前:
每个 AI 平台都有自己的工具调用方式
现在:
所有工具统一遵守 MCP 标准
MCP 中主要有三个角色:
MCP ClientMCP ServerTool
关系:
用户↓MCP Client↓LLM↓MCP Server↓Tool
负责:
例如:
负责:
例如:
一个 MCP Server 可以提供:
天气查询工具数据库查询工具文件读取工具
真正执行任务的函数。
例如:
getWeather()
真正执行:
查询天气 API
MCP 主要解决三个问题。
MCP Client 可以向 MCP Server 请求:
有哪些工具?
MCP Server 返回:
[ {name:"getWeather",description:"查询天气",parameters:{} }]
LLM 就知道:
当前有哪些能力。
LLM 不直接执行函数。
流程:
LLM↓MCP Client↓MCP Server↓Tool
MCP Server 负责真正调用工具。
除了告诉模型:
工具叫什么
还可以告诉模型:
什么时候使用参数怎么传返回什么格式
提高模型选择工具的准确率。
例如:
用户在 Trae 中输入:
帮我查询上海天气
流程:
用户↓Trae(MCP Client)↓LLM↓LLM 判断需要天气工具↓Trae 请求 MCP Server↓调用 weather Tool↓返回天气数据↓发送给 LLM↓LLM 生成答案↓展示用户
这是 MCP 最核心的问题。
答案:
MCP Client 主动向 MCP Server 获取工具列表。
流程:
第一步:
MCP Client 启动。
↓
第二步:
请求 MCP Server:
list_tools()
↓
第三步:
MCP Server 返回:
工具名称工具描述参数 Schema
↓
第四步:
MCP Client 将这些工具信息配置到 LLM 的:
tools 参数
LLM 并不是直接认识工具。
它依赖:
工具名称工具描述参数定义
例如:
工具:
getWeather
描述:
查询指定城市实时天气
用户:
北京今天温度多少?
LLM 推理:
用户需要天气信息↓getWeather 描述匹配↓返回调用请求
所以:
工具描述质量非常重要。
实际 Agent 中:
一次任务可能需要多轮调用。
例如:
用户:
帮我分析最近销售数据
可能需要:
流程:
用户请求↓LLM↓需要数据库工具↓调用 MCP Server↓返回数据↓继续发送给 LLM↓LLM 判断下一步↓继续调用工具↓最终回答
这个过程会不断:
messages追加↓LLM重新推理↓工具调用↓messages合并
直到得到最终答案。
一个简单 MCP 服务开发流程:
pnpm i @modelcontextprotocol/sdk zod
其中:
MCP 官方开发 SDK。
用于:
定义参数类型↓自动生成 JSON Schema
例如:
z.object({ city:z.string()})
自动转换:
{ city:{type:"string" }}
让 LLM 理解工具参数。
创建一个服务:
MCP Server
作为工具管理中心。
例如:
注册天气工具:
getWeather
包含:
让 Client 可以连接。
例如:
TraeCursorClaude Desktop
测试:
如果面试官问:
可以回答:
MCP 是 Model Context Protocol,是一套标准化协议,用于统一 LLM 与外部工具、数据源、系统之间的交互方式。它解决了传统 Function Calling 中工具管理困难的问题,通过 MCP Server 暴露工具,让 MCP Client 获取工具定义并提供给 LLM,最终实现模型对工具的发现和调用。
主要有三个作用:1. 标准化工具调用方式2. 让 LLM 可以动态发现工具3. 提高工具选择和调用准确率,减少上下文占用
开发 MCP Server 时:首先安装 @modelcontextprotocol/sdk 和 zod。然后创建 MCP Server 实例。接着通过 Server 注册 Tool,使用 zod 定义工具参数,自动生成 JSON Schema。启动 MCP Server 后,开发 MCP Client 获取工具列表并测试调用。整个流程就是:Client 获取 Tool 信息,LLM 根据描述选择工具,Client 调用 MCP Server,Server 执行 Tool,结果返回给 LLM。
一句话理解:
Function Calling:让 LLM 能调用工具。MCP:让 LLM 可以标准化、高效、准确地管理和调用大量工具。
未来 AI Agent 的核心能力:
不是单纯让模型变聪明。
而是:
LLM+Tools+MCP+Agent Workflow
共同组成真正能够完成复杂任务的智能系统。