Skip to content
简体中文

切换主题

AI Agent 工作原理

工具调用与 MCP(模型上下文协议)详解

进阶 25 分钟 适合: 初学者 / 开发者 / 研究者

本课要点

  • ▸工具调用时,模型自己从不执行代码:它输出一个结构化请求(工具名 + JSON 参数),由你的程序执行并把结果送回去。
  • ▸工具由名称、自然语言描述和参数的 JSON Schema 定义;描述本质上就是提示词,决定了模型能不能用对这个工具。
  • ▸MCP 统一了 AI 应用发现和调用外部工具与数据的方式,一个 MCP 服务器可以在很多客户端里使用(桌面助手、IDE、编程 Agent)。
  • ▸MCP 连接 Agent 与工具和数据,A2A 连接 Agent 与 Agent;两者现在都由 Linux 基金会旗下的 Agentic AI Foundation 治理。

工具调用:模型如何“使用”软件

大模型只会输出 token,自己没法打开文件或调用 API。工具调用(也叫函数调用)就是连接两者的桥梁:

  1. 你的应用把对话连同一份工具清单发给模型,每个工具有名称、描述和参数的 JSON Schema。
  2. 如果某个工具有帮助,模型会回复一个结构化的工具调用(代替文字或和文字一起):{"name": "get_weather", "arguments": {"city": "上海"}}。
  3. 你的代码校验参数、执行工具,再把结果作为工具消息发回去。
  4. 模型读到结果,要么给出回答,要么继续调用下一个工具。
sequenceDiagram
  participant App as 你的应用
  participant LLM as 模型
  participant Tool as 工具 / API
  App->>LLM: 消息 + 工具定义(名称、描述、JSON Schema)
  LLM-->>App: 工具调用 get_weather(city="上海")
  App->>Tool: 执行(先校验参数、检查权限)
  Tool-->>App: temp_c=21, sky=cloudy
  App->>LLM: 工具结果
  LLM-->>App: "上海现在 21 °C,多云。"

一个工具定义大致长这样(各家格式略有不同,见 OpenAI 和 Anthropic 的文档):

{
  "name": "search_issues",
  "description": "在一个 GitHub 仓库里搜索 issue。用于回答关于 bug 或功能需求的问题。最多返回 20 条,包含编号、标题、状态和链接。",
  "input_schema": {
    "type": "object",
    "properties": {
      "repo":  { "type": "string", "description": "owner/name 格式,例如 'ollama/ollama'" },
      "query": { "type": "string", "description": "关键词,支持 'is:open'" }
    },
    "required": ["repo", "query"]
  }
}

模型经过训练会输出这样的调用;安全边界在你的代码里,由它决定什么真正被执行。

为什么需要一个协议

MCP 出现之前,每个 AI 应用都要逐个对接每个工具:M 个应用 × N 个工具 = M×N 套定制集成。Anthropic 在 2024 年 11 月推出的模型上下文协议(MCP)(发布公告)把它变成 M + N:工具提供方写一个 MCP 服务器,任何支持 MCP 的应用都能用。它常被比作“AI 应用的 USB-C 接口”。

MCP 的架构

flowchart LR
  subgraph Host["宿主应用(桌面助手、IDE、编程 Agent)"]
    LLM["模型"]
    C1["MCP 客户端"]
    C2["MCP 客户端"]
  end
  C1 <-->|"stdio(本地进程)"| S1["MCP 服务器:文件 / git / 浏览器"]
  C2 <-->|"Streamable HTTP + OAuth"| S2["远程 MCP 服务器:SaaS / 数据库"]
  • 宿主(Host):用户运行的 AI 应用,里面有模型循环,并为每个服务器连接创建一个客户端。
  • 服务器(Server):对外提供能力。消息格式是 JSON-RPC 2.0;服务器可以在本地通过 stdio 运行,也可以通过 Streamable HTTP 远程提供,远程服务器使用基于 OAuth 的授权机制(规范)。

服务器提供三种基本能力(架构说明):

能力 由谁控制 例子
工具(Tools) 模型(经用户批准) create_issue、run_query、click
资源(Resources) 应用 文件内容、数据库表结构、文档
提示(Prompts) 用户 可复用的模板,比如“审查这个 PR”

客户端也可以向服务器提供能力,比如 sampling(让服务器请宿主的模型生成内容)、roots(服务器能看到哪些文件夹)、elicitation(向用户询问输入)。连接建立时,双方协商版本和能力;客户端随后列出工具,把它们的定义交给模型。

本站收录的不少软件就是 MCP 宿主或服务器:例如 Claude、Claude Code、Cherry Studio、5ire 是客户端;iMCP(macOS 的信息、通讯录、提醒事项、日历)和 Peekaboo(截屏与画面分析)是服务器。

MCP 与 A2A

MCP 把 Agent 连接到工具和数据(“纵向”)。由 Google 发起的 Agent2Agent 协议(A2A) 把 Agent 彼此连接起来(“横向”):一个 Agent 发布 Agent Card,描述自己的技能和接入地址,其他 Agent 就可以把任务委派给它(a2a-protocol.org)。2025 年 12 月,MCP 被捐给 Linux 基金会新成立的 Agentic AI Foundation(新闻稿),A2A 也在 2026 年 8 月加入,两者都成了厂商中立的标准。详见 A2A 与多 Agent 协作。

怎样写出 Agent 真正用得好的工具

工具质量是决定 Agent 成败的最大因素之一(见 AI Agent 工作原理)。下面这些实用原则,与 Anthropic 关于 为 Agent 编写工具 的建议一致:

  1. 写清用途和边界:什么时候用、什么时候不用、返回什么。
  2. 少而精、按任务设计的工具,胜过给每个 API 端点套一层薄包装;避免功能几乎重复、让模型难以选择的工具。
  3. 在 Schema 里写清参数名、类型、枚举值和示例。
  4. 返回精简、相关的输出:分页或过滤,别把一万行内容倒进上下文。
  5. 可操作的报错:“仓库不存在,应为 'owner/name' 格式”能帮模型自我纠正,一段堆栈信息则不能。
  6. 最小权限与人工确认:默认只读,破坏性操作需要确认。工具描述本身也可能成为攻击入口(见 提示注入与工具投毒)。

动手试试

把一个本地 MCP 服务器接入支持 MCP 的桌面应用,问一个必须用到它的问题,再查看应用显示的工具调用记录。然后读一读这个服务器的工具描述:你读到的,正是模型看到的提示词。

常见问题

函数调用(function calling)和 MCP 有什么区别?

函数调用是模型的一种能力:在某个 API 里,模型可以输出结构化的工具调用请求。MCP 是建立在它之上的开放协议:规定应用如何从外部服务器发现工具、调用工具、取回结果,让工具可以在不同应用和模型之间共用。

MCP 服务器是什么?

一个通过 MCP 对外提供工具(动作)、资源(可读数据)和提示(模板)的程序。它可以在本地运行(由应用启动,通过 stdio 通信),也可以通过 HTTP 远程提供,比如 GitHub、数据库、文件系统、浏览器各自的服务器。

MCP 只能给 Claude 用吗?

不是。Anthropic 在 2024 年 11 月把 MCP 作为开放标准推出,如今已有大量客户端和模型厂商支持;2025 年 12 月起由 Linux 基金会旗下的 Agentic AI Foundation 治理。

MCP 服务器安全吗?

它们会运行代码,并以你的权限访问数据,所以要像对待任何安装的软件一样对待它:用可信来源、给最小权限、敏感操作要人工确认,并警惕工具投毒和提示注入。

本课相关软件

相关 AI 新闻

链接指向原始发布方。

出处与延伸阅读

  1. OpenAI API 文档,Function calling
  2. Anthropic 文档,Tool use with Claude
  3. Anthropic(2024),Introducing the Model Context Protocol
  4. Model Context Protocol 规范
  5. Model Context Protocol,架构概览
  6. Linux 基金会,成立 Agentic AI Foundation 的新闻稿
  7. A2A(Agent2Agent)协议文档
  8. Anthropic Engineering(2025),Writing effective tools for agents
  9. JSON-RPC 2.0 规范

所属学习路线

数据更新于:学 AI 课程 · 课程相关新闻(北京时间)