MCP 到底接在了哪一层?从“Agent 调工具”说起

作者:杨杨杨大侠日期:2026/9/24

“最后不还是 Agent 在调工具吗?那 MCP 多做了什么?”

这个问题比背定义有用。因为第一次看 MCP,很容易把模型、Agent、Harness、Client、Server 都画成一团,然后得出一个模糊的结论:MCP 就是 Function Calling 的另一种写法。

先说结论:模型负责提出要做什么,应用负责把它做成一次真实调用;MCP 约定的是应用与外部服务之间怎么对接。

先从一次工具调用看起

假设我对一个代码助手说:“帮我看看 PR 123,有没有明显问题。”模型发现自己还没看到改动,于是提出:调用 get_pr_diff,参数是 123

到这里,模型只给出了调用意图。真正去取 PR、处理权限、拿回结果的,是运行这个助手的应用。Function Calling 主要解决前半段:让模型以结构化方式表达工具名和参数,再由执行方把结果交回来。OpenAI Function Calling 文档

如果 get_pr_diff 来自一个独立的服务,应用还得知道:服务在哪儿?它有哪些工具?参数长什么样?调用后会返回什么?MCP 给这段对接提供了共同的协议。MCP 架构规范

所以两者可以连起来用,但不在同一层:

1模型提出调用  应用接收并检查  MCP Client 请求 MCP Server  返回结果给模型
2

有的平台也原生支持 MCP 接入,并不要求应用先把每个 MCP 工具都转换成普通的 function tool。上面这条链路是帮助理解职责的简化图,不是所有平台内部唯一的实现方式。OpenAI MCP 接入文档

MCP Client 到底放在哪里?

MCP 文档把参与者分为 Host、Client 和 Server。Host 是使用这些能力的应用;它创建和管理 MCP Client。一个 Client 与一个 Server 通信,Server 则提供工具、资料等能力。MCP 架构规范

在 Codex 这类 Agent 应用里,Client 通常由 Harness 管理。但它不属于模型,也不只能放在 Harness 里。IDE、桌面应用、自己写的后端,只要实现 MCP Client,都能连接 MCP Server。普通程序甚至可以不接模型,直接读取 Resource 或调用 Tool。

也不必先建一个统一注册中心。本地 Server 可以由应用启动,远程 Server 可以按地址连接;应用需要知道要连接谁,并在执行时落实自己的权限规则。MCP Server 本身不需要再“提供一个 Client 端”。MCP TypeScript Client 入门

Tools、Resources、Prompts:别把三者都当成函数

继续用 PR 审查的例子:

Server 提供的能力可以是什么谁通常决定何时用
Toolget_pr_diff(123),获取这次改动模型选择,应用执行
Resourcerepo://CONTRIBUTING.md,项目开发规范应用决定怎样展示或加入上下文
Promptreview_pr(123),一套审查提问模板用户选择,应用取回模板消息

Resource 像“可寻址的资料”。它不一定是静态文件,也可以是由 Server 在读取时生成的内容;关键是 Client 能通过 URI 找到并读取它。Tool 也能查询数据,两者的区别主要是调用接口和使用方式,不是“读操作只能用 Resource、写操作只能用 Tool”。Resources 规范Tools 规范

Prompt 则像应用里可选的提问方式:用户点“审查 PR”,填入编号,Server 返回适合放进对话的消息。它不会因为 Server 连上了,就自动变成模型的系统指令Prompts 规范

一个 Server 可以同时提供三种能力,也可以只提供 Tool。MCP 没要求“凑齐三件套”才能工作。MCP Server 能力概览

放到同一张图里

下面画的是一种常见用法。虚线表示按需读取 Prompt 或 Resource;三类能力没有固定调用顺序,也不要求每轮都用到。

这张图只画了一轮。实际任务里,模型可能连续调用多个 Tool;应用也可能在工具返回后再读取 Resource。协议规定了这些能力怎么请求,没有规定必须按 Prompt → Resource → Tool 的顺序走。

什么场景下值得用 MCP?

我更愿意把判断标准放在“这项能力要被谁使用”上。假如同一个代码仓库服务,既要接 IDE,又要接桌面 Agent,后面可能还要接内部审查平台,那么每个宿主各写一套工具适配,很快就会变成重复劳动。把能力放进独立的 MCP Server,几个应用就能用同一套方式发现和调用它。

下面几种情况,MCP 往往比较合适:

  • 一项外部能力要被多个 Host 复用,例如代码平台、知识库、工单系统同时服务于 IDE 和 Agent 应用。
  • Client 需要按协议发现 Server 当前提供的 Tools、Resources 或 Prompts,而不是在应用里长期写死一份能力清单。
  • 能力本来就有独立的服务边界,希望把参数、返回结构和接入方式稳定下来,方便服务与应用各自演进。

反过来,如果只有一个应用、两三个稳定的本地函数,而且没有跨宿主复用和动态发现的需求,直接使用 Function Calling 配合普通函数通常更省事。少一层服务,也少一套连接、部署和故障排查成本。

一个很实用的做法是:先用简单工具把需求跑通;当第二个宿主出现,或者同一套接入开始被重复实现时,再认真考虑 MCP。它解决的是连接规模变大后的协作问题,不是每个工具调用都必须经过的仪式。

FAQ:前面几个问题,一次答完

MCP 是不是 Function Calling 的另一种写法?

不是。Function Calling 让模型结构化表达“调用哪个工具、传什么参数”;MCP 约定应用怎样发现并连接外部能力。它们可以出现在同一条调用链上,但解决的是不同层的问题。

MCP Server 一定要注册到统一中心吗?

不需要。应用可以按配置连接远程 Server,也可以直接启动本地 Server。统一目录或服务市场可以作为额外设施,但不是使用 MCP 的前置条件。

MCP Client 一定在 Agent Harness 里吗?

不一定。Host 负责创建和管理 Client;在 Agent 应用里,这部分常由 Harness 承担。IDE、桌面应用或后端服务也可以自己实现 Client,甚至不接模型也能使用 Server 提供的能力。

Resource、Prompt、Tool 有固定使用顺序吗?

没有。用户可以先选 Prompt,应用可以在任意合适的时机读取 Resource,模型也可以按任务需要调用一次或多次 Tool。具体顺序由产品交互和任务流程决定。

最后怎么记?

下次再看到 MCP,可以先问三个问题:

  1. 谁做决定? 模型通常决定要不要调用 Tool;Prompt 通常由用户选择;Resource 怎样进入上下文由应用安排。
  2. 谁真正发请求? 是应用里的 MCP Client,不是模型自己连到 Server。
  3. Server 提供什么? 它可以提供 Tool、Resource、Prompt 中的一种或多种。

把“模型决策”和“协议通信”分开,MCP 就没那么玄了。它没有替 Agent 思考,也没有替应用处理所有权限和流程;它让不同应用与外部能力之间有了一套共同的接法。


MCP 到底接在了哪一层?从“Agent 调工具”说起》 是转载文章,点击查看原文


相关推荐


Vibe Coding 实战问答:从 Token 成本到线上 Bug 的避坑指南
ᕙ(•̤᷆ ॒ ູ॒•̤᷇)ᕘ.2026/9/15

Vibe Coding 与 AI 辅助编程 · 问答整理 主题:AI 辅助编程的定位认知、Token 成本控制、线上问题处理与实战经验。 1. Vibe Coding 到底是什么? Vibe Coding 与常规 AI 辅助编程的核心差异,在于人对代码的参与程度与责任归属: 维度Vibe CodingAI 辅助编程代码生成AI 生成AI 生成代码审查不看,直接 Accept逐行审查报错处理粘贴给 AI分析根因再决定对代码负责不负责完全负责 一句话概括:Vibe Coding 是"只管氛围、


【智能体】Agent的四种设计模式之:React(2026最新版)
Carl_奕然2026/9/7

ReAct 模式 —— 推理与行动交织的循环智能体 1、引言2、ReAct 到底怎么工作?3、ReAct 核心原理3.1 关键数据结构3.2 与 Chain-of-Thought 的区别 4、生产级实现(LangGraph + MCP)5、2026 年的关键改进点5.1 从 "字符串解析" 到 "结构化输出"5.2 步数预算与防循环5.3 KV-Cache 复用优化 6、适用场景与性能基准7、总结 1、引言 小屌丝:鱼哥,我最近写了个 Agent,让它查天气,结果你猜怎么着?它


Linux(一)Linux的基本指令操作和shell命令以及运行原理
在路上慢慢走2026/8/30

1. 引言 在正式学习 Linux 指令之前,先花几分钟了解一下 Linux 的来龙去脉,会帮助你更好地理解为什么指令是这样设计的、为什么系统是这样组织的。这一节作为「前传」,只讲最核心的背景知识,不涉及具体指令操作。 2. 什么是 Linux Linux 是一个开源的操作系统内核,最初由芬兰人林纳斯·托瓦兹(Linus Torvalds)于 1991 年发布。我们平时说的「Linux 系统」,实际上是 Linux 内核加上 GNU 工具集、各种应用软件共同组成的完整操作系统,通常称为 GNU/


Neo4j与Cypher入门:从图思维到多跳查询实战
桃酥不是桃2026/8/22

当写《RAG 没有死》那篇、写到 GraphRAG 那一节的时候,我心里是有点发虚的。多跳推理、知识图谱、社区发现,这些词都是从论文和官方文档里搬来的,我自己并没有真的建过一张图、跑过一条查询。引用式写作的账迟早要还,所以最近两个周末我把 Neo4j 和 Cypher 认真补了一遍,顺手把 Agent 场景下图的选型边界也想清楚了。 这篇是补课笔记的上篇,聊三件事,图数据库到底解决什么问题,Cypher 怎么写,什么时候值得为你的 Agent 引入一张图。先澄清一个容易混的点,之前写《从 Lo


Ubuntu 还是 CentOS?云服务器部署全流程对比与实操指南
木易 士心2026/8/9

文章目录 一、 概述二、 核心差异对比表三、 云服务部署架构图四、 详细部署步骤对比1. 远程连接2. 系统更新与软件安装3. 防火墙与端口配置4. 服务管理5. 文件路径差异 五、 避坑指南与选型建议1. 避坑指南2. 选型建议 一、 概述 在云服务部署中,选择操作系统是第一步也是至关重要的一步。Ubuntu 和 CentOS 是目前市场份额最高的两大 Linux 发行版,分别代表了 Debian 系和 RedHat 系的典型特征。 Ubuntu: 以“开


Kimi 3 全方位评测:从“长文本”到“强逻辑”的跨越
木易 士心2026/7/31

文章目录 1. 前言:告别“记忆长”,走向“理解深”2. 核心代际对比:不只是参数提升,更是范式变革3. 深度功能测评:场景化实战拆解3.1 长文本“无损记忆”——从“大海捞针”到“精准穿刺”3.2 复杂推理——像侦探一样拆解迷题3.3 代码工程能力——从“代码补全”到“架构师视角”3.4 多模态联合分析——图表+文本的“通感”理解3.5 拓展案例分析:垂直领域的“专家级”表现 4. 综合能力雷达图:五维全面扩展5. 典型应用场景与选型建议6. 未来展望:从“阅读者”进化为“智能体”6.


如何使用 OpenTelemetry 对你的搜索 API 进行埋点,并使用 ES|QL 对其进行查询
Elasticsearch2026/7/23

作者:来自 Elastic Matthew Adams 向你的 OpenTelemetry span 添加自定义属性,并运行六个 ES|QL 查询,以揭示最热门的搜索、零结果率以及最慢的查询。 Elasticsearch 提供了大量新功能,帮助你针对自己的使用场景构建最佳搜索解决方案。在我们的实践网络研讨会《构建现代 Search AI 体验》中,了解如何将这些功能付诸实践。你还可以立即开始 免费 Cloud 试用,或在你的 本地机器 上试用 Elastic。 使用大约 20 行的 OpenT


Linux 基础指令从入门到精通:基础指令、重定向、管道与权限完全指南
meilindehuzi_a2026/7/15

Linux 基础指令从入门到精通:基础指令、重定向、管道与权限完全指南 前言1. Linux、操作系统与终端1.1 从 UNIX 到 Linux1.2 操作系统、Shell 与远程登录 2. Linux 文件系统与路径2.1 一切皆文件与目录树2.2 绝对路径、相对路径与定位命令2.3 使用 ls 读懂目录信息 3. 文件与目录的创建、复制、移动和删除3.1 touch、stat、mkdir 与 tree3.2 cp 与通配符3.3 mv、rmdir 与 rm 4. 查看文件、帮助


Rust 开发环境安装(Windows|macOS|Linux)
程序员爱钓鱼2026/7/7

《Rust 编程实战》系列第 2 篇 上一篇我们介绍了为什么要学习 Rust,以及 Rust 的应用场景。 从这一篇开始,我们正式进入 Rust 的学习之旅。 在开始编写 Rust 程序之前,首先需要搭建开发环境。Rust 官方提供了统一的安装工具,无论是 Windows、macOS 还是 Linux,安装方式都非常简单。 本文将带你一步一步完成 Rust 开发环境的安装,并验证是否安装成功。 Rust 官方推荐安装方式 Rust 官方推荐使用 rustup 来安装和管理 Rust。 rus


使用 C# 将 HTML 转 Word 或者 Word 转 HTML
秋天的落叶铺满小路2026/6/29

HTML作为Web内容的标准格式,与Word这种通用的办公文档格式之间的相互转换,是许多企业级应用中的常见需求。无论是将数据库中的动态内容生成为Word报告,还是将现有的Word文档发布为网页,掌握高效的转换方法都能显著提升工作效率。 本文将介绍如何使用 Spire.Doc for .NET 这个专业的文档处理组件,通过 C# 代码轻松实现 HTML 与 Word 之间的相互转换。 为什么选择 Spire.Doc for .NET? .NET 框架本身并不原生支持 Word 或 HTM

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 聚合阅读