Skip to content
Go back

Agent 与 MCP 入门指南:理解与实践

前言

日常多少都用过或听过一些 Agent:Cursor 的 Agent 模式、Claude code、最近爆火的 Manus 等。很多人下意识地认为构建 Agent 需要深厚的 AI 背景,但其实 Agent 的核心思想非常简单:即为大模型提供工具以感知环境,让它不仅能思考,还能借助工具主动完成任务。

让我们先跳过那些复杂的理论,从最实际的角度出发,讲清楚两件事:Agent 到底是什么,以及如何低成本的定制一个自己的Agent。你会发现,普通人要想创造一个实用 Agent 的关键不在于从零构建一个大脑,而在于精心设计所需场景的指令为它打造一套称手的工具

一、Agent 介绍

1. Agent 概念

Agent 的定义有很多种。宽泛地说,只要是 LLM 加上能调用工具来做事的系统,都可以称为 Agent。Anthropic 把这类系统称为「agentic systems」,并根据架构层面的不同,分成 Workflow 和 Agent 两类:

非必要不建议用 LLM 搭建 Agent,不要为了用 Agent 而用 Agent。LLM 会引入额外的复杂性和不确定性。能用代码工程解决的就用代码工程解决。

下面讲的 Agent,都特指后者(非 Workflow 的自主 Agent)。

Chat 和 Agent 的区别:Chat 是对话,Agent 是行动。Chat(LLM)是一个超级大脑,而 Agent 是为这个大脑配了一副身体,能用眼鼻嘴去感知这个世界、能行走、能动手使用工具。

举个例子:「帮我订一张明天北京到上海最便宜的机票」。

关键在于 Agent 不只是说,它能做

Agent 循环

如图所示,Agent 不是一次性问答机器,而是一个动态的执行引擎。它思考,行动,观察结果,调整策略,再行动,如此循环直到任务完成。

Agent 的组成

业界普遍接受的 Agent 架构,来自 OpenAI 应用研究主管 Lilian Weng 的总结:Agent = 大模型 + 工具使用 + 记忆 + 规划

Agent 组成

2. Tool(工具)

Tool 是 Agent 与外部世界交互的通道。LLM 本身只知道训练数据里的东西,它没有实时信息,不会操作文件,不能发网络请求。Tool 补上了这个缺口:查询数据库、调用 API、读写文件、搜网页,这些都是通过 Tool 实现的。

Tool 示例

需要注意,LLM 本身不具备工具调用的能力。我们看到的「AI 调用工具」,本质上是将可用的工具信息提供给 LLM,LLM 根据当前上下文生成工具的调用参数,然后由 Agent 框架执行真正的工具调用,再将结果返回给 LLM。Agent 框架把这整个过程打包隐藏了实现细节。

3. Memory(记忆)

Memory 是 Agent 的「海马体」,让它能记住上下文和历史信息,实现跨会话的个性化交互。

Memory 示例

为什么需要 Memory?当前大部分 Agent 或 Chat 基本上是无状态的,无法从过去的互动中学习。我们得不断跟 AI 重复自己的偏好,或者不断调预设提示词。要从无状态工具变成真正智能的有状态代理,需要赋予它们记忆。

Memory 和 RAG 的区别:RAG 侧重将外部知识引入当前会话,让回答更准确;Memory 侧重捕捉用户偏好、历史决策和失败经验,让交互更智能、更个性化。

4. Planning(规划)

Planning 是 Agent 的思考方式,指导它如何行动。

任务拆解:大任务拆成小步骤。早期通过提示词引导 LLM 逐步推理(如 “think step by step”);后期出现的推理模型(如 o1、DeepSeek R1)则将推理能力通过训练内化到了模型本身,不再依赖外部提示。

自我反思:计划赶不上变化。Agent 需要根据执行结果不断调整。其中最经典的模式是 ReAct(Reasoning and Acting):LLM 不断与环境交互,观察结果,确定下一步。

Thought:  分析当前状态,决定下一步
Action:   执行工具调用
Observation:  观察工具返回结果
...(重复上述循环)

ReAct 非常贴近 Agent 的本质,强调 Agent 与环境的持续交互 and 动态调整,这正是智能体区别于传统程序的关键。

Planning 示例

二、MCP 介绍

1. 从 Function Call 到 MCP

前面说到 Tool 是 LLM 与外部世界交互的通道。但 Tool 的具体实现,各家都不一样。

LLM 不能直接调工具。真正发生的过程分为两步:

  1. 模型 API 层:你把工具的定义(名称、描述、参数 schema)通过 API 的 tools 字段传递给模型。各模型厂商有自己的格式:OpenAI 是一套,Anthropic 是一套,Google 又是一套。模型根据上下文判断是否需要调用工具,并生成调用参数。

  2. Agent 运行时:收到模型的工具调用请求后,Agent 框架负责真正执行:调 API、读文件、查数据库,然后把执行结果返回给模型。

问题在于,工具的定义和调用格式没有统一的行业规范。对 Agent 的开发者来说,一个工具只能硬编码在代码里对接特定的平台,特定的SDK,换平台/SDK就要重写。对用户来说,因为没有标准协议,你也无法在常用的 Agent 工具上(如 Cursor、Claude Code)直接接入自己的业务工具。

没有 MCP 之前

2. MCP 是什么

MCP(Model Context Protocol)是 Anthropic 开源的一个标准协议,定义了 AI 系统与工具之间通信的规范。就像 HTTP 统一了各种 RPC 实现一样,MCP 统一了各家不同的 Function Call 格式。

有了 MCP 之后

MCP 之于 Function Call,相当于 HTTP 之于 RPC。
在 HTTP 出现之前,各家 RPC 都基于私有协议,互不兼容。RPC 是一个概念/范式(远程调用函数),HTTP 是一个标准协议(统一了客户端和服务端通信的规范)。同样,Function Call 是一个概念(AI 调用外部工具),MCP 是一个标准协议(统一了各家不同的实现格式)。

MCP 的核心概念就两个:

3. 开发一个 MCP Server

开发 MCP Server 并不复杂。本质上就是实现一个满足 MCP 协议的服务,暴露一些 Tool 的元信息(名称、描述、参数 schema),并在收到调用时执行对应的逻辑。

以最简单的场景为例:你想让 AI 能查天气。写一个 MCP Server,暴露一个 get_weather Tool,定义好参数(城市名、日期),实现查询逻辑(调天气 API 或读数据库),然后返回结构化的结果。就这么简单。

如果你想让 AI 能操作你的业务系统,方式完全一样:把对应的接口或查询封装成 Tool 即可。

MCP Server 可以用任何语言写,哪怕没有官方 SDK,自己让 AI 手搓一个问题也不大。开发完成后,将可执行文件的路径或云端链接,配置到 Agent 工具里就能用。 开发一个 MCP 并不复杂,我们不需要了解协议的具体细节,甚至不需要会写代码,只需要给 AI 说「我要开发一个用于 xxx 的 MCP」,最多再把 MCP 的官方文档给 AI,就够了。

开发 mcp 的时候需要注意:工具要精简,返回内容要克制。不要把整个接口的完整响应全部返回给 AI,只保留你真正关心的字段,避免污染上下文。

三、如何让你的 AI 用上工具

理解了 Agent 和 MCP 之后,很多人会想:那我如果我想拥有一个 AI 助手,是不是得自己实现 ReAct 循环,或者基于各种 Agent 框架来开发一套?

不需要。你日常使用的很多工具,已经具备了 Agent 的全部能力。

Cursor、Claude Code、Cline 这类工具,本质上就是完整的 Agent 框架:

这些工具虽然都作为 Coding Agent 宣传,但别被这个名字限制住。在文章目录下启动,它就是写作 Agent;在堆满 Excel 的目录启动,它就是数据分析 Agent。需要注意,这种方式仅适用于个人提效,生产级的 Agent 还是需要自己实现 Agent 来覆盖更多细节。

你不需要从零搭建任何东西。只需要做两件事:

  1. 开发 MCP Server,当这些 Agent 内置的 Tool 不能满足你的诉求时,为 AI 提供针对你业务场景的工具
  2. 设计 System Prompt,告诉 AI 它是什么角色、要完成什么任务、如何使用这些工具

然后把这些配置到你的 Agent 工具上,它就变成了你的专属助手。

System Prompt 是关键

很多人花大量精力在开发工具上,却忽略了 System Prompt。实际上,对于一个具体场景的 Agent,Prompt 和 Tool 同等重要。Tool 决定了 Agent 的「能力边界」——能做什么,Prompt 决定了「行为方式」——怎么做、什么时候做、做到什么程度。

一个好的 System Prompt 应该包含:

配置到 Agent 工具

配置方式通常很简单:在 Agent 工具的设置中添加 MCP Server 的路径或连接信息,然后在 Rule / System Prompt / CLAUDE.md 中填入你的指令。之后在对话中直接提需求,Agent 就会自动调用你提供的工具。

整个过程不涉及写 Agent 框架代码,不需要实现业务逻辑之外的任何基础设施。你专注在「我的业务需要 AI 帮我做什么」上,把对应的工具写出来,配置好指令,就完成了。

一个具体的例子

假设你想做一个线上问题排查的 Agent。你需要让 AI 能:

工程代码的读取 Agent 基本上都支持,工作区就放到代码仓库下就行。我们只需要写一个 MCP Server(拆成两个也可以),暴露两个 Tool: query_logsexecute_sql。然后在 CLUADE.md 或者 Cursor Rule 里告诉 AI:「你是一个线上问题排查助手,当用户提供告警信息时,可以根据报错信息使用 query_logs 来查询日志并读取对应的代码来分析问题…」

配置到 Cursor 或 Claude Code 上,粘贴告警信息,AI 就会自动走完整个流程。

四、观点

我并不认为每个人都需要去从零到一构建下一个颠覆行业的 Agent。

对于我们大多数开发者而言,Agent 真正的价值在于创造那些能解决「我自己的问题」的助手:一个能帮你排查线上告警的帮手、一个能自动抓取分析工单的工具、一个能帮你处理繁琐配置的脚本。这些 Agent 虽小,却能实实在在地提升工作效率。

所以,忘掉宏大叙事,从一个微小的痛点开始。

找到那个你每天都在重复的、让你烦躁的机械性任务,然后问自己:AI 能不能帮我做这件事?如果只需要简单的逻辑判断和信息整合,可以让 AI 给你写一个脚本提效;如果任务需要理解模糊的自然语言描述、需要根据上下文动态决策,我们可以用常用的 Agent 工具构建一个我们的 AI 助手。

五、参考资料


Share this post on:

Previous Post
MCP vs Skill vs CLI: AI Agent 上下文管理的本质与实践