AI Agent 入门教程:11-MCP 与 Multi-Agent

先用 MCP 的 Host、Client、Server、Tools、Resources 与 Prompts 接入受控外部能力,再以单 Agent 为基线比较 Manager、Agent-as-Tool 和 Handoff。拆分必须带来可测质量或维护收益。

本文目录7 个章节

MCP 解决外部能力的连接与发现

Agents SDK 已经接管本地循环与 Session,搜索和读取工具仍由当前进程提供。每接一个资料系统都手写认证、能力列表和调用格式,Agent 应用会堆满专用适配器。MCP 用 Host、Client 与 Server 建立标准连接。

TEXT
┌──────────────────── Host ────────────────────┐
│ Model + Agent Runtime + Permission + Approval│
│                  │                           │
│             MCP Client                       │
└──────────────────┼───────────────────────────┘
                   │ protocol / transport
                   ▼
          ┌──────────────────┐
          │    MCP Server    │
          │ Tools / Resources│
          │ Prompts          │
          └──────────────────┘

Server 暴露能力,Client 管理协议会话,Host 保留模型、用户交互、权限和多个连接的协调。MCP 不接管业务授权。

Tools、Resources、Prompts 的用法不同

Tool 是模型可请求的动作,例如搜索文档。Resource 是可读取对象,例如一份规范。Prompt 是可复用模板,例如技术调研提纲。

读取静态文档优先用 Resource,执行有参数的搜索用 Tool,固定工作方法可以由 Prompt 或第 8 篇的 Skill 承载。Skill 可以同时引用 MCP Tool 与 Resource。

接入过程分五步

  1. 核验 Server 身份与运营方。
  2. 初始化连接并协商协议能力。
  3. 列出 Server 能力,经过本地白名单过滤。
  4. 把允许能力映射到 Tool Registry,并设置审批、超时和结果上限。
  5. 缓存 Server 版本;版本或 Schema 改变时重新发现。
PYTHON
from dataclasses import dataclass

@dataclass(frozen=True)
class Capability:
    name: str
    description: str
    input_schema: dict

def filter_capabilities(discovered: list[Capability],
                        allowed: set[str]) -> dict[str, Capability]:
    return {
        capability.name: capability
        for capability in discovered
        if capability.name in allowed
    }

远程返回内容继续按不可信证据处理。连接超时返回 mcp_unavailable,主循环可以使用本地资料或报告证据缺口,不能无限重连。

工具增加后是否要拆 Agent

MCP 可能带来更多工具,但工具多不等于必须多 Agent。先运行单 Agent 基线,观察工具选择错误、Prompt 冲突、权限隔离和团队维护成本。

出现下面任一情况时,拆分才值得试验:

  • 研究和写作指令互相干扰,评测长期无法同时达标。
  • 两组工具使用不同身份和数据边界。
  • 专家上下文可以大幅缩小,减少无关资料。
  • 两个团队需要独立发布和维护。

三种 Multi-Agent 关系

TEXT
Manager                  Agent-as-Tool              Handoff
用户                     用户                       用户
 │                        │                          │
 ▼                        ▼                          ▼
中心 Agent ─▶ 专家        Manager ─call─▶ 专家       前台 Agent ──▶ 专家
 │            │           ▲             │                       控制后续对话
 └────汇总────┘           └────结果─────┘

Manager 用代码统一编排。Agent-as-Tool 让中心 Agent 保留最终控制。Handoff 把当前对话交给专家,适合专家直接处理后续多轮交互。

用 Agents SDK 表示专家工具

PYTHON
from agents import Agent

researcher = Agent(
    name="Researcher",
    instructions="Return evidence with source IDs. Do not draft conclusions.",
)

manager = Agent(
    name="Brief manager",
    instructions="Collect evidence, draft, validate citations, then answer.",
    tools=[
        researcher.as_tool(
            tool_name="collect_evidence",
            tool_description="Collect bounded evidence for the topic.",
        )
    ],
)

专家只接收完成职责所需的上下文和工具,委派深度、并发专家数与预算都有上限。

保留单 Agent 对照组

同一任务集运行单 Agent、Manager 加专家、Handoff 三版,比较成功率、引用正确率、P95、token、费用和维护时间。Multi-Agent 版本如果只改善文风,却降低引用准确率或显著增加费用,就保留单 Agent。

第 12 篇用同一组任务比较单 Agent 与 Multi-Agent,建立正式评测和 Trace,再把通过门槛接到队列、Worker、灰度和发布流程。

REFERENCES

参考链接

  1. 01Architecture Overview | Model Context Protocol
  2. 02MCP and Connectors | OpenAI API
  3. 03Orchestrating Multiple Agents | OpenAI API
  4. 04A Practical Guide to Building Agents | OpenAI

所属系列

AI AGENT 入门教程

下一步

继续浏览相关主题

沿着同一主题继续阅读。

查看最新资讯