Sunday面试指南

MCP 的 Tools、Resources、Prompts 有什么区别?分别在什么场景使用?

下面是一段教学用的模拟面试。

🧑‍💻 面试官:你给知识库助手接了 MCP Server,里面只需要提供工具吗?

🙋‍♂️ 我:不一定。可以提供查询工具,也可以提供资料和提示词模板。

🧑‍💻 面试官:资料也能通过查询工具返回。那 Resources 还有什么用?

🙋‍♂️ 我:需要区分“执行一次查询”和“读取一个已标识的内容对象”。它们可能返回相同文字,但应用使用它们的方式不同。

🧑‍💻 面试官:如果 Resource 每次读取都返回最新数据,它是不是就变成 Tool 了?用户选了一个 Prompt,又是不是等于同意后面的工具操作?

这题要抓住“能力怎样被使用”:执行动作、读取内容、选择提示入口,分别是三种职责。

面试速答(60 秒版)

MCP Server 可以提供三类常见能力。Tools 用来执行具体动作,例如搜索资料、查询订单。Resources 用来暴露能够读取的内容,例如文档、数据库结构。Prompts 则提供带参数的提示词入口,例如让用户选择“根据这份材料检查合同风险”。

这里不能只按返回内容判断。查询工具可以返回文字,Resource 也可以动态生成内容;区别在于应用怎样发现和使用这项能力。

在一个知识库助手里,可以先读取 Resource 了解资料结构,再由用户选择 Prompt 确定任务,最后让模型提出 Tool 调用。三者可以配合使用。

同时,发现了一项能力,不代表已经使用它。读到 Resource 后,应用还要决定是否把内容交给模型;选了 Prompt,也不等于批准其中所有操作。权限和高风险动作的确认仍然要单独处理。

MCP:三类能力,三种入口:先分能力,再看控制权

知识点详解:把三类能力放进同一个助手

先看一次“检查报销规则”的任务

假设咱们在做一个企业知识库助手,员工想知道一份差旅报销申请是否符合规定。

开发者可以提供三项能力:

能力一个具体例子应用需要做什么
Resource当前差旅制度的内容地址读取内容,决定是否用于本轮任务
Prompt“检查报销申请”的任务模板传入申请信息,取得组织好的消息
Tool根据申请编号查询明细发起调用,得到实际查询结果

这三个例子并不是必须照着实现。它们的作用是让你看清:有时应用需要一份材料,有时用户需要一个任务入口,有时系统需要执行一次操作。

如果所有能力都做成工具,也可能完成任务。但应用就要通过工具调用承担内容选择、任务入口等职责。是否值得这样做,要看客户端能力和产品的交互方式。

同一个任务,三类能力怎样协作:发现能力不等于已进入上下文

Resources 的重点,是让内容可以被识别和读取

Resource 通常有一个 URI,也就是标识内容的地址。应用发现这个地址后,可以发起读取请求,再拿到文本或其他内容。

因此,Resource 不是“模型已经知道的知识”。

假设客户端列出了十份制度,模型本轮只收到了用户的问题。制度虽然能被发现,却没有被读出来、更没有放进模型输入,模型仍然不能据此回答。

读取以后也不一定要全部交给模型。应用可以只取当前任务需要的部分,检查用户权限,再组织进上下文。

还有一个容易答错的地方:Resource 不一定是静态文件。一个地址可以代表不断更新的监控摘要,每次读取的结果不同。内容会不会变化,不能作为 Tool 和 Resource 的唯一分界。

Tools 的重点,是带参数执行一次动作

查询报销明细时,系统需要提交申请编号。工具收到参数,再去相应系统查询,最后返回结果。

在支持工具调用的应用里,模型可以根据工具说明提出调用请求。不过,模型提出请求之后,真正的权限检查和执行仍由应用与服务端完成。

工具也不一定有写入副作用。搜索、计算、查询都可以是工具。因此,不能把 Tools 简化为“修改数据”,把 Resources 简化为“只读数据”。

更有用的判断是:你准备暴露一个可供读取的内容对象,还是一项需要传入参数并执行的能力?

Prompts 提供任务入口,不直接完成任务

假设用户选择“检查报销申请”,应用向 MCP Server 请求这个 Prompt,并传入相关参数。Server 返回的可以是一组组织好的消息,帮助应用把任务说清楚。

后面的推理和工具执行,还没有因此完成。

如果模板建议“发现异常就发送通知”,应用也不能因为用户选了模板,就默认用户授权向所有人发送消息。提示词表达任务,执行授权约束动作,两者需要分别判断。

MCP 的服务端规范把三类能力分别概括为模型、应用和用户控制的交互方式。这有助于理解产品职责,但它不是靠提示词就能落实的权限系统。具体客户端仍然可以设计不同的选择和呈现流程。

接入以后,怎样确认它真的起作用了?

先把三种动作分别记录下来:发现了什么、读取或取得了什么、实际调用了什么。

如果助手没有使用制度,检查 Resource 内容有没有进入模型请求。如果任务描述不对,检查 Prompt 参数和返回消息。如果查询越权,检查 Tool 的身份与参数校验。

只看到 MCP 连接成功,无法确认这些环节已经正常工作。

面试官继续追问

同一份文档既作为 Resource,又由 Tool 搜索出来,算重复设计吗?

不一定。直接读取已知文档和按条件搜索未知文档,解决的是不同需求。但如果客户端只需要一种访问方式,就不必为了凑齐三类能力增加重复接口。

Prompt 可以包含 Resource 吗?

可以组织引用或内容,但应用仍要理解相应消息和资源表示,按权限与输入预算处理。不要把“模板里有引用”理解为模型自动读取了所有外部内容。

为什么接入后,客户端只展示 Tools?

先确认客户端支持哪些能力、有没有完成能力协商与对应交互。Server 提供了三类能力,不代表每个客户端都会把三类都做成可见入口。

面试速记卡

  • Tools:带参数执行能力,可以查询,也可以产生副作用。
  • Resources:暴露可识别、可读取的内容,不限于静态文件。
  • Prompts:提供可选择、可参数化的任务提示入口。
  • 配合方式:准备材料、组织任务、执行动作可以分开承担。
  • 工程边界:发现不等于使用,选提示词不等于批准所有操作。

公司面试真题

这道题暂未收录可核验的公司真题来源。你可以先阅读本文解析,或浏览已收录的公司面试真题。

浏览公司面试真题 →
简历汪永久免费在线制作简历,模板直接套用、导出无水印,永久免费、下载免费,不需要付费解锁任何功能。去写简历