Skip to content

视频 07 来源笔记:Tool、Skill 与 MCP

来源元信息

  • 讲者:小单说AI
  • Bilibili:BV1Y17h6REm5
  • 本地字幕:从零实现自己的agent第七期:MCP、Skill、Tool.ai-zh.srt
  • 字幕覆盖:00:00:00–00:09:48
  • 对照材料:bilibili-transcripts/07-MCP-Skill-Tool.txtppt/第七期-tool-skill-mcp.html
  • 对应代码:sp_mcp-skill-tool.py(专门演示)与 step11_mcp.py(累计实现)

按时间顺序的主题窗口

[00:00:00–00:01:35] 厨房比喻与职责分离

Agent 是主厨,Skill 是菜谱,Tool 是厨具,MCP 是与外部服务沟通的统一渠道。比喻的核心是四者不互相替代:方法、执行能力和接入协议属于不同层。

[00:01:35–00:02:20] MCP 解决 N×M 对接

过去每个 Agent 对每个外部服务写一套适配;MCP 让服务按统一协议暴露能力,客户端按统一方式发现和调用。它降低的是集成与发现成本。

[00:02:20–00:02:53] MCP 的发现与调用

客户端建立会话并初始化,读取服务端工具列表及输入 Schema,再转换为模型可见的工具定义。模型选中后,客户端通过 MCP 发起调用,并把结果送回模型上下文。

[00:02:53–00:03:56] Skill 是方法而不是执行器

Skill 描述适用场景、步骤、依赖工具和输出格式。它本身不执行动作,真正的副作用仍由 Tool 或 MCP Server 完成。

[00:03:56–00:04:15] Skill 的渐进式披露

模型先看到名称和短描述,需要时再加载完整 SKILL.md。视频用红烧肉步骤说明,一份 Skill 可以编排多次工具调用。

[00:04:15–00:05:03] Tool 与 Function Calling

模型选择工具并给出参数,Harness 校验与执行,结果返回后模型继续判断。一次大任务常由多次工具调用完成。

[00:05:03–00:05:36] 红烧肉端到端串联

外部订单经 MCP 到达,Agent 加载红烧肉 Skill,根据步骤依次调用备料、炒糖色、焖煮和装盘工具,最终形成产物。

[00:05:36–00:06:37] 三者缺一时的失败

没有 Skill,模型需要现场探索方法;没有 Tool,只能描述不能执行;没有 MCP,仍可用本地工具,但缺少标准化的外部能力接入。这里应理解为职责缺失,而不是所有任务强制同时使用三者。

[00:06:37–00:07:27] 代码的三块结构

专门示例同时实现外部服务、MCP 客户端、Skill 扫描加载和内置烹饪工具,再由 Agent Loop 统一注册并调度。

[00:07:27–00:08:20] 会话启动与工具注册

客户端发现 MCP 工具,Skill Loader 提供菜单摘要,内置工具与远程工具合并为模型可见集合。累计实现使用名称前缀避免跨 Server 工具名冲突。

[00:08:20–00:09:04] 终端执行

演示先接单,再加载 Skill,随后依序执行四个 Tool。运行日志正好对应“发现 → 选择方法 → 动作 → 观察”的状态流。

[00:09:04–00:09:48] 总结与 Agent 的调度权

MCP、Skill、Tool 都服务于 Agent;模型提出调用顺序,Harness 决定是否允许和如何执行。调度权不能被误解为模型拥有无限权限。

主教学论点

Tool 是可执行能力,Skill 是可复用方法,MCP 是发现和调用外部能力的协议。三者在 Agent Loop 中汇合,但权限与真实执行始终由 Harness 控制。

两段 MCP 状态流

text
连接阶段:transport → initialize → list_tools/resources/prompts → register schemas
调用阶段:model tool_call → policy → MCP call_tool → server executes → result → model

远程发布还需在状态流中补上:鉴权、作用域、超时、限流、重试策略、审计和错误映射。

演示序列

  1. 启动烹饪 MCP Server。
  2. 客户端初始化并发现服务能力。
  3. 向模型注册 MCP 工具与 Skill 摘要。
  4. 输入红烧肉订单。
  5. 观察 MCP 接单、load_skill 和四次本地工具调用。
  6. 检查最终结果与工具执行轨迹。

重要比喻

  • 主厨 = Agent:做判断和编排。
  • 菜谱 = Skill:记录经过整理的工作方法。
  • 厨具 = Tool:真实执行一步动作。
  • 外卖渠道 = MCP:统一连接外部能力。

外卖渠道并不精确覆盖 MCP 的 Resources 与 Prompts,也容易让人误以为 MCP 只负责“接收任务”。课程正文会用协议原语修正。

术语与纠正

  • 自动字幕中的 tour 应为 ToolMCB 应为 MCPSKU.md 应为 SKILL.md
  • MCP 全称 Model Context Protocol
  • 视频说“JSON 方式递过来”是在解释 Schema;MCP 实际还有初始化、能力协商、传输和多种协议原语。
  • Skill 不等于固定的工作流引擎;模型仍可根据上下文选择和调整步骤。

需要工程限定的说法

  • 没有 MCP 仍可调用本地或私有 API 工具;MCP 的价值是标准化,不是外部连接的唯一方式。
  • MCP Server 属于外部信任边界,返回的描述与内容都可能不可信。
  • 发现工具后不能直接全量授权,应通过 CapabilityPolicy 控制工具、网络和密钥。
  • 教学客户端每次调用临时启动 stdio 会话,生产环境通常需要连接复用、健康检查与生命周期管理。
  • MCP 传输协议不等于公开发布;给别人使用还需要包分发或远程 URL、认证、版本和运维。

来源映射

  • CAE:build-agent-example/code/sp_mcp-skill-tool.pydoc/sp_mcp-skill-tool.md;累计实现 step11_mcp.py
  • 《深入理解 AI Agent》:第 4 章工具分类、Skill + 通用执行器、MCP 和主动工具发现。
  • 必做实验:chapter4/active-tool-discoverychapter4/async-agent
  • Mini Emperor:mcp_server.py 的 FastMCP Tools、Resource、Prompt 与 Bearer 权限;api.py 挂载 /mcpskills.py 保持 Skill 与运行扩展分离。
  • 进入正文:book/07-Tool-Skill-MCP.md

内容差异与待核对

  • PPT 的 MCP 页面明确写“Schema 发现 + Tool Call”,比口述“握手后递过来”更精确。
  • 专门演示为了讲清职责使用烹饪场景,累计 step11_mcp.py 才展示配置、动态工具表和服务名前缀。
  • 视频没有展开 Resources、Prompts、远程 Streamable HTTP 和发布 Registry;这些是用户要求在正文补足的扩展。

Markdown 是唯一内容源,HTML 由构建流程生成。