MCP三类核心组件及其应用的解释

MCP(Model Context Protocol)协议定义了三类核心组件:资源(resource)提示(prompt)和工具(tools)。在具体使用时经常有些混淆:资源可以搜索或API获得,也可以通过提示和工具进行调用;提示本身也可以对资源和工具提出要求;工具也可能对资源有一定的操作。它们并不是边界清晰和互斥的,这就给MCP的使用带来了复杂性,因此并不能依靠MCP市场中简单的说明进行调用。

1. 资源(Resource)🌐

定义:指 AI 模型可以读取的数据内容,如文档、图像、数据库表、API 返回值等,是“上下文原料”。

特点

  • 通常通过 URI 或 API 进行检索(像 HTTP GET)。
  • 只读的,不会被 AI 主动修改。
  • 例如:数据库记录、文件系统里的 PDF、网页内容等。

作用:在生成提示(prompt)时,提供原始数据上下文,辅助模型理解任务背景。

例如,用于文档问答,AI 会先读取资源内容,再构建答案。

2. 提示(Prompt)

定义:即“预设的模板提示”或“交互流程定义”,由服务器提供,模型可以选择使用。

特点

  • 是结构化模板,可能带参数;
  • 引导模型如何使用资源和工具;
  • 相当于互动脚本或“建议用户话术”。

作用

  • 帮助模型在复杂业务场景中按步骤进行交互;
  • 保证信息调用和上下文获取的流程标准化,避免遗漏。

3. 工具(Tool)🛠️

定义:AI 模型可以调用的可执行功能:如调用 API、运行脚本、写数据库、发送消息等。

特点

  • 是动态、可修改环境或执行动作的“函数”;
  • 通常带有 JSON 模式定义参数;
  • 模型可选择通过tools/call调用操作。

作用

  • 完成实际任务(如收集数据、发邮件、修改文件等);
  • 使 AI 能够主动参与而非仅被动回答。

三者的区别与联系

  • 联系:AI 在使用资源获得上下文后,可能按提示模板构建任务流程,再调用工具完成操作。它们构成:资源 → 提示 → 工具 的链条。
  • 区别
  • Resource 是“静态数据”,
  • Prompt 是“交互结构模板”,
  • Tool 是“可执行动作”。

🧠 工作流程示例

  1. LLM 向 MCP Client 请求 list 支持的Prompts/Resources/Tools
  2. LLM 选择资源,比如获取某篇文档内容。
  3. 根据Prompt 模板构建对话或提问流程。
  4. 如需操作,如“发送报告”,调用对应Tool完成。

小结

  • Resource:提供信息上下文,是模型的“原材料”。
  • Prompt:提供逻辑框架或步骤,是模型的“脚本指导”。
  • Tool:执行具体操作,是模型的“行动能力”。

三者相辅相成,共同构建了 MCP 的模块化、结构化和可扩展的上下文交互系统,使 AI 不仅善于“说”,还能“做”,并能有条理地组织这一过程。

应用中的问题:

在实际使用中还有个问题:三类核心组件搜是在MCP Server 端定义和提供的,也就是说,资源(Resource)提示(Prompt)工具(Tool)均是由服务器端注册和暴露,那么Client 端是如何发现、展示、选择与使用这些能力的呢?

🧩 1. MCP Server 与三类组件

  • MCP Server是运行在目标系统(如文件系统、数据库、HTTP 服务等)一端的进程,它会通过 MCP 协议将可用的资源|提示|工具暴露给 Client。因此很多遗留系统要支持智能体调用,就需要开发MCP服务器接口,向MCP客户端暴露必要的能力。这是目前大多数现有系统能否升级成支持AI/大模型/智能体应用最简单的方式,也是最关键的一步。这一过程中原有系统的能力和MCP服务开发的丰富性与灵活性就成了升级后AI平台能力水平的关键。
  • Server 端支持动态更新,能向 Client 通知新增或调整能力(如notifications/tools/listchanged)。

2. Client 如何建立能力列表(list)

Client 与连接的每个 MCP Server 之间建立会话后,会执行如下操作:

  1. Capability discovery(能力发现):Client 向每个 Server 发出listtools、listresources、listprompts请求。
  2. 服务器回应可用组件列表,包括它们的名称、描述、URI、参数模板等。()
  3. Client 将这些列表合并、缓存,借此构建一个“能力目录”,供 AI 模型在推理阶段自动或用户交互时调用。

简而言之,list操作完全由 Client 向 Server 请求,并由 Server 响应定义;Client 不会“自己构建”,只是汇总和展现。

3. 如何获得大量 MCP Server 的能力?

  • 连接多个 MCP Server:Client 可以在启动时配置多个 Server 实例,支持本地(如文件系统 MCP Server)、远程(HTTP/SSE)等多种部署方式。
  • 统一能力采集:每个 Server 都会被 “discovery” 阶段调用 list 系列接口,Client 会分别获取每个 Server 的工具、资源、提示。
  • 动态监听能力更新:如果 Server 支持listChanged或 SSE 推送通知,这些新增或变化会被 Client 捕获,更新其能力缓存。

大量 Server 的使用场景

  • 多来源的文档知识库(GitHub、Google Drive、Postgres…),每个一个 MCP Server。
  • 本地 IDE、操作系统、云服务等也可通过独立 MCP Server 接入。

例如,Windows 引入了MCP registry,Client 会自动发现并连接多个 MCP Server(如文件系统、WSL、应用),形成一个综合能力池。

  • Client 发起list tools/resources/prompts,给所有已知 Server
  • Server 分别反馈能力列表
  • Client 聚合形成一个统一能力视图供 AI 使用

未来基于智能体的AI应用开发很大程度上取决于MCP Client的开发。在此基础上加上智能编排和工作流调用,就能形成非常智能、灵活的各类应用,传统应用系统/平台就能越来越多地升级成基于大模型智能体的应用。



留下评论