前端进阶之旅前端进阶之旅
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
首页程序员面试题库MCP tool structuredContent outputSchema
AIAI AgentMCP 协议

MCP 工具结果中的 content 与 structuredContent 有什么区别,outputSchema 起什么作用?

content 是面向展示的多模态块,structuredContent 是符合 outputSchema 的对象。读取时应先看 structuredContent,再以 content 作兜底。

前端进阶之旅 · 一题精讲更新于 2026.09.05
AI Agent#MCP 协议#MCP
先看核心答案
理解线索

双通道返回与模式契约

  1. content人类可读的多模态内容块,始终存在
  2. structuredContent可选对象,若有 outputSchema 须符合
  3. outputSchemaJSON Schema 描述返回结构

structuredContent 缺失时仍可只靠 content,但无法保证机器可读性。

核心回答

先记住这个答案

在 MCP 工具调用结果中,content 是必含的内容块数组,例如文本或图像,用于渲染给用户或交给大语言模型理解。structuredContent 是可选的 JSON 对象,若工具声明了 outputSchema,其结构应当与之一致。outputSchema 是 JSON Schema,它定义了结构化返回的字段与类型,客户端可据此校验和直接提取数据。消费时应当优先使用 structuredContent,因为它不需要文本解析且类型安全;仅当它缺失时才退而解析 content。若两者同时存在但信息冲突,通常信任 structuredContent。

  • 结构化内容优先于文本解析
  • outputSchema 声明返回结构
  • 缺失 structuredContent 时读取 content

内容块与结构化对象的互补机制

在 MCP 的工具调用响应中,result 对象需要包含 content 数组,数组里放的是诸如 TextContent、ImageContent 等带类型标记的元素,它们适合被用户界面展示,也容易嵌入到大语言模型的提示里。structuredContent 则是可选单个对象,服务端把机器可用的数据以干净、有一定结构的形态放进去。它的键和嵌套类型应当与工具通过 outputSchema 声明的模式吻合(当声明了 outputSchema 时),客户端可以从工具清单里获得该 schema。

协议规定只有 content 是必须发送的,structuredContent 完全由服务端决定是否给出。当两边都返回时,content 往往承载叙述性摘要,而 structuredContent 提供可直接编程存取的值。客户端应把 structuredContent 当成首选来源,因为它免去了解析自然语言的成本,也避免因措辞变化导致的错误。只有 structuredContent 字段不存在时才解析 content,这是一种常见的安全回退策略。

仓库统计工具中的双通道返回

比如有一个 get_repo_stats 工具,其 outputSchema 声明 owner 为 string、stars 为 integer、license 可为 null。某次返回里,content 是一段英文:“octocat/hello-world has 1523 stars and is MIT licensed.”,而 structuredContent 是 {"owner":"octocat","stars":1523,"license":"MIT"}。下游的排序逻辑需要得到整数 1523,显然不能依赖从文本正则抽取。

编排层在拿到结果后先检查 structuredContent 是否为对象,再用 JSON Schema 比对字段的存在与类型,确认无误后直接读取 stars 属性。假如 schema 不一致,就记录错误并退回到文本正则,但生产环境一般把这个风险暴露为日志,而不是盲目信任任意文本。这样处理让展示型文本和业务数据脱钩,工具实现方能够独立演进。

依赖边界与校验代价

依赖 structuredContent 的前提是服务端真的按 outputSchema 返回。如果工具没有声明 outputSchema,那么我们无法根据 schema 判断对象长什么样,使用 structuredContent 需要额外的信任或自行约定,否则可能更倾向于依赖 content。另外,outputSchema 允许是空对象 {},那表示“任意结构”,也不能提供任何类型保证,同样需要额外的信任或自行约定。

当结构化对象与 schema 不一致时,协议没有规定错误码,客户端只能自行检测。投入严格的 JSON Schema 校验会占用 CPU 但换来稳定性,更实际的做法是在测试环境启用完整校验、生产环境做轻量类型判断并用 try/catch 处理异常。一旦发现异常就抛给上一层,别让损坏的数据悄悄钻进后续流程。

回答前,多想一步

容易答错的地方

认为 structuredContent 只是 content 的压缩版
其实两者载体不同:content 是可展示的块列表,structuredContent 是单一对象。即使内容相同,structuredContent 缺失时无法从文本中无损还原,因此二者不是等价替代。
把 outputSchema 误解为只校验输入
outputSchema 专门描述返回对象的结构,而 inputSchema 用于入参。若只按输入场景使用,客户端就无法为返回数据生成类型提示或校验逻辑,容易在字段改名时悄然崩溃。
试着用自己的话回答

面试官还会怎么问?

如果 structuredContent 和 outputSchema 不一致,客户端可以怎么做?

没有强制要求,但可视为服务端错误。稳妥做法是放弃该对象并回退到 content,同时打印警告;若数据是交易关键则直接抛错误,避免下游被虚假值污染。

有没有必须使用 structuredContent 的场景?

有。例如结果需要写入数据库或参与计算,字段必须是整数或枚举。此时文本无法可靠解析,只有结构化数据能携带准确的类型。

content 为空数组但 structuredContent 有值时合法吗?

合法,content 字段可以为空数组,但它必须存在以维持结构完整性。客户端若只关心结构化数据,可以不理会 content。

从一道题,走向一组知识

把知识连起来

MCP 协议

MCP tools/call 的请求响应怎样流转,协议错误和工具失败怎么区分?

同属「MCP 协议」专题,接着看 MCP tools call 调用流程 错误 在具体场景中的处理方式。

MCP 协议

MCP 协议中 Host、Client、Server 三者分别承担什么角色,为什么 Client 要与 Server 保持一对一连接?

同属「MCP 协议」专题,接着看 MCP 架构 host client server 角色 在具体场景中的处理方式。

参考资料

  • Specification - Model Context Protocol

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 内容块与结构化对象的互补机制
  3. 仓库统计工具中的双通道返回
  4. 依赖边界与校验代价
  5. 容易答错的地方
  6. 面试官还会怎么问
  7. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑