很多团队把 2026 年的 Claude 功能清单当成「模型又变强了」的新闻稿:Messages API、Tool Use、MCP、Structured Output、Agent 循环——名字越来越多,代码里却仍是一次 messages.create 里塞 prompt、工具和 JSON 期望。真正会炸的往往不是回复文采,而是工具参数对不上 schema、MCP 权限面过大、下游用正则抠 JSON。下文要验证的是:这五块是不是同一层能力?非对称结论:分水岭在 schema 约束与执行边界,不在模型名。
面向要在生产里接 Claude API 的开发者:把 Claude API、Tool Use、MCP 连接器、Structured Output 与 Agent 循环按「入口 / 执行 / 上下文」分类,再用对比表和场景矩阵决定何时自建工具、何时走远程 MCP、何时必须开 strict。MCP 协议本身见站内MCP 是什么:AI 界的 USB 接口;IDE 侧 Skills 分层见Claude Skills 与 Cursor Rules 对照。本篇只讲 API 侧如何拼成可运维的 Agent。
1. 为什么清单越长,线上越容易碎?
2025 年底到 2026,Anthropic 把「能调工具」「能连 MCP」「能按 JSON Schema 吐结构」从实验能力推到 Messages API 主路径:output_config.format 取代旧的 beta output_format;工具定义可设 strict: true,用语法约束采样保证参数合法;远程 MCP 可通过 mcp_servers + type: "mcp_toolset" 直接挂进同一次请求。文档写得很清楚,工程上却容易做成三件事叠在一块:
- 把「给用户看的自然语言」和「给后端 ingest 的 JSON」塞进同一次无 schema 的文本回复;
- 把本机脚本、SaaS、以及带写权限的 MCP 工具列成一张平铺
tools表,模型自己挑; - 把 Agent 理解成「把同一条 user 消息循环 20 次」,却不设最大步数、不审计
tool_use。
结果是:演示能跑,工单里全是 JSONDecodeError、错误的枚举、以及 MCP 服务器被当成万能 shell。问题不在 Claude API「功能不够」,而在没有把入口、执行面、上下文面拆开。若你的 Agent 还要在 macOS 上跑 xcodebuild,执行面还会落到真实机器——这与GitHub Actions 自建 macOS Runner 是同一类运维问题,不是提示词问题。
2. 五层分别是什么?(What)
2.1 Claude API — 对话入口,不是 Agent 产品
Claude API(Messages)是把模型、消息、系统提示、缓存和计费接到你系统的入口。它不负责替你执行工具,也不保证文本一定能 json.loads。把它当「聊天完成」用完全合法;一旦下游要写库、改工单、触发 CI,就必须叠加后面几层。选型时先问:这次调用的消费者是人,还是解析器?
2.2 Tool Use — 自建执行面
Tool Use 让模型在回复里产出 tool_use 块,你在服务端执行后再把 tool_result 送回。适合你拥有实现的内部 API:查库存、创建工单、跑仓库脚本。2026 年生产建议在工具定义上加 strict tool use:strict: true 与 input_schema 一起走语法约束,减少「字符串 2 当成数字」这类下游崩溃。代价是 schema 必须落在官方支持的 JSON Schema 子集里。
2.3 MCP 连接器 — 远程工具面,不是再写一套 SDK
Messages API 的 MCP connector 让你在请求里声明远程 MCP 服务器(URL、OAuth),再用 mcp_toolset 决定启用全部、白名单或黑名单工具。它解决的是工具发现与传输:不必为每个 SaaS 手写 Anthropic 工具 JSON。它不自动等于安全——写文件、执行 shell 的 MCP 仍要把权限收到网关或 allowlist。协议原理与本篇「API 怎么挂服务器」互补,不要把两篇文章当成同一篇百科。
2.4 Structured Output — 给解析器的上下文,不是给读者的文风
Structured Output 用 output_config.format 的 json_schema 约束模型文本块必须是合法 JSON。适合抽取字段、生成报表对象、给下一个服务当合同。它和 Tool Use 正交:你可以只要结构化文本、只要严格工具、或两者同开。不要用它替代工具调用——JSON 再漂亮也不会替你打 HTTP。
2.5 AI Agent — 循环策略,不是第五个 API 产品
AI Agent 在 Claude 语境里通常是:模型选工具 → 你执行 → 结果回灌 → 直到停。停的条件必须是你写的:最大轮次、禁止的工具名、预算、人工确认。Agent 可以只用自建 Tool Use,也可以混 MCP;Structured Output 适合循环结束时的最终交付物。没有循环控制的「全自动」只是无限重试。
3. 核心对比表(How Compare)
| 能力 | 入口 | 执行能力 | 上下文 | 适合人群 |
|---|---|---|---|---|
| Claude API | Messages / SDK messages.create |
生成文本与多模态理解,不执行外部副作用 | messages + system + 缓存块 | 聊天、草稿、人工阅读的摘要 |
| Tool Use | 请求里的 tools[] 自建定义 |
由你的后端执行函数,可 strict: true |
工具 schema + 往返 tool_result | 有内部 API、要审计每一次调用的团队 |
| MCP 连接器 | mcp_servers + mcp_toolset |
远程 MCP 工具;可多服务器、OAuth | 工具列表由服务器发现,需裁剪 | 要接现成 MCP、少手写工具 JSON 的集成 |
| Structured Output | output_config.format = json_schema |
不执行工具;保证文本 JSON 可解析 | schema 进入采样约束 | ETL、工单字段、下游强类型服务 |
| AI Agent 循环 | 你的编排器(while / 队列 / 工作流引擎) | 多次 Tool Use 或 MCP,直到停条件 | 累积 tool_result,需防上下文膨胀 | 要多步改系统状态、且能设预算的团队 |
| 对比项 | 自建 Tool Use 你写函数 | MCP 连接器 远程发现 |
|---|---|---|
| 所有权 | 实现、日志、限流全在你仓库 | 工具语义由 MCP 服务方定义 |
| 变更速度 | 改 schema 要发版你的 Agent | 服务器增工具会进入发现集,必须 allowlist |
| 严格参数 | 官方 strict 与自建 schema 对齐最直接 | 跨 MCP 客户端时勿把 API 专属字段硬塞进通用 schema |
| 适合 | 核心业务写路径、合规审计 | 只读 SaaS、标准化只读检索、多工具拼盘 |
4. 场景怎么选(Decision)
先定消费者和副作用,再选层。下面矩阵按「你会不会改外部状态」分流。
| 场景 | 优先组合 | 不要做 |
|---|---|---|
| 给运营看的周报 | Claude API 纯文本即可 | 为了「显得高级」强行 JSON Schema |
| 从邮件抽字段入 CRM | Structured Output + 服务端校验 | 用 Tool Use 假装「抽字段也是工具」却不写库 |
| 创建 Jira / 关告警 | 自建 Tool Use + strict: true + 幂等键 |
把写权限 MCP 整包丢进请求 |
| 只读查文档 / 日历 | MCP 连接器 + 工具白名单 | 开启所有工具「以后可能用得上」 |
| 多步修仓库 + 跑测试 | Agent 循环 + 自建 git/test 工具 + 最大步数 | 无上限 while True;在笔记本上通宵跑 xcodebuild |
| 循环结束要给下游 API 合同 | 最后一轮 Structured Output(或单独 parse 调用) | 从带 tool_use 的混杂文本里正则抠 JSON |
5. 推荐组合(Stack)
允许叠加,不要追求「只选一个功能名」。
- 个人脚本 / 内部 bot:Claude API + 2–5 个自建工具 + strict。MCP 先别上,减少密钥面。
- 成长型 SaaS 客服 Agent:自建写路径工具(工单)+ MCP 只读知识库 + 结束时 Structured Output 给质检。
- 平台 / 多团队:MCP 网关统一鉴权与限流;Agent 编排器管步数与预算;核心账务仍自建 Tool Use。
- macOS / iOS 构建 Agent:工具里只暴露「在指定 runner 上触发作业」,真正的
xcodebuild跑在稳定云 Mac,而不是让模型直接 SSH 乱敲。
和 IDE 里的 Skills 怎么配合:API Agent 负责对系统有副作用的循环;Claude Code Skills 负责开发者本机/仓库里的 SOP。两边都可以讲 MCP,但密钥与写权限不要共用一张表。
6. 常见误区
「上了 MCP 就不用写 Tool Use」→ 写路径、合规、幂等仍应自建并审计。「Structured Output 等于 Agent」→ 它只约束文本 JSON,不执行副作用。「strict 可以随便套复杂 JSON Schema」→ 须遵守官方子集;过深的 oneOf / 动态 key 会失败。「把旧 beta→ 迁移期兼容,新代码只用output_format和新output_config混用当两套产品」output_config.format。「模型越强,越不需要最大步数」→ 步数是钱和爆炸半径,与智商无关。「MCP 工具 schema 原样塞→ API 专属字段在通用 MCP 客户端上可能不兼容,要按通道剥离。strict给所有客户端」
7. 七步落地
- 列副作用:只读查询、写内部库、触发 CI、碰生产。每类单独一张工具表。
- 先写 1 个自建工具:最小
input_schema+strict: true,打通 tool_use → 执行 → tool_result。 - 给人看的和给机器的分开:对机器的交付用 Structured Output 或单独 parse 调用。
- MCP 只挂只读:
mcp_servers+ allowlist;写工具继续自建。 - 加上循环外壳:最大 N 步、超时、token 预算、拒绝未声明工具名。
- 观测:记录每次 tool 名、参数哈希、耗时、是否 schema 失败;不要只 log 最终 assistant 文本。
- 把重执行绑到固定节点:macOS 作业走云 Mac / 自建 runner,Agent 只发「作业 ID」,不把笔记本当生产。
# 伪代码:生产请用官方 SDK
POST /v1/messages
{
"model": "claude-opus-4-6",
"max_tokens": 2048,
"tools": [{
"name": "create_ticket",
"strict": true,
"input_schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"severity": {"type": "string", "enum": ["low","high"]}
},
"required": ["title","severity"],
"additionalProperties": false
}
}],
"output_config": {
"format": {
"type": "json_schema",
"schema": {
"type": "object",
"properties": {
"ticket_id": {"type": "string"},
"next_action": {"type": "string"}
},
"required": ["ticket_id","next_action"],
"additionalProperties": false
}
}
},
"messages": [{"role": "user", "content": "开一张高优先级工单:构建超时"}]
}
模型名以你账号控制台与Tool Use 官方概述为准;上线前在预发核对 output_config 与 strict 是否已退出 beta 头依赖。
8. 总结
Claude API 解决「怎么把模型接到系统」;Tool Use 解决「自建执行从哪进、参数如何被保证」;MCP 解决「远程工具怎么发现、怎么裁剪」;Structured Output 解决「给解析器的合同」;AI Agent 解决「循环何时停、爆炸半径多大」。五者不是五个并列的「新功能新闻」,而是一层入口加两层执行面加一层交付格式加一层你必须自己写的编排。先画副作用边界,再打开 MCP 和循环,演示能进生产。
延伸阅读:Structured outputs · Strict tool use · MCP connector · 站内MCP 协议入门
FAQ
Agent 调得动工具,还得有地方把构建跑完
Claude 的 Tool Use 和 MCP 只能把「意图」变成一次次调用;真正的 xcodebuild、Fastlane 和签名发生在 macOS 上。Hashvps 云端 Mac mini M4 提供 SSH/VNC、独享 IPv4 与可复现的 Homebrew——同一套 MCP 只读工具指向仓库,写路径作业打到固定 runner,而不是让模型对着变化无常的笔记本 shell。
若你正在把 Claude API Agent 接到 iOS/macOS 流水线, Hashvps 云 Mac 是性价比很高的执行节点—— 了解套餐方案,让循环在远端按预算跑完。