# 1. 什么是 MCP?

MCP,全称 Model Context Protocol(模型上下文协议),是一种标准化的协议,用于将 AI 模型与不同的数据源和工具进行连接。你可以把 MCP 理解为 AI 世界的“USB-C 接口”——就像 USB-C 让手机、U 盘、打印机等设备能方便地接入电脑并进行数据交互一样,MCP 也为 AI 模型与外部工具之间的协作提供了统一的“插口”。

图片加载中...

# 2. MCP VS Function Call

说到 AI 调用工具,很多人第一时间会想到 OpenAI 在 2023 年 7 月 20 日发布的“函数调用及其他 API 更新 (opens new window)”功能。OpenAI 通过在 API 请求中传入 functions 参数,让大模型能够调用外部工具。例如:

curl https://api.openai.com/v1/chat/completions -u :$OPENAI_API_KEY -H 'Content-Type: application/json' -d '{
  "model": "gpt-3.5-turbo-0613",
  "messages": [
    {"role": "user", "content": "What is the weather like in Boston?"}
  ],
  "functions": [
    {
      "name": "get_current_weather",
      "description": "Get the current weather in a given location",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "The city and state, e.g. San Francisco, CA"
          },
          "unit": {
            "type": "string",
            "enum": ["celsius", "fahrenheit"]
          }
        },
        "required": ["location"]
      }
    }
  ]
}'

当时 GeekAI 也第一时间集成了函数调用,实现了如微博热搜、Dalle 绘画等功能。

图片加载中...

事实上,有一些 MCP 客户端就是直接用的模型自带的 Function Call 功能去实现 MCP 协议的。我在使用 CherryStudio 的时候对软件发送给大模型的提示词进行了抓包,发现它最终发送的提示词是这样的:

{
  "model": "deepseek/deepseek-v3-base:free",
  "messages": [
    {
      "role": "user",
      "content": "给我安装一个 filesystem MCP server"
    },
    {
      "role": "user",
      "content": "hello"
    }
  ],
  "stream": true,
  "tools": [
    {
      "type": "function",
      "name": "mcp_auto_install_getAvailableServers",
      "function": {
        "name": "fDjZNXZmUB8O62shf4juZD",
        "description": "List all available MCP servers that can be installed. Returns a list of server names and their basic information. Use this to discover what MCP servers are available before installing or configuring them.",
        "parameters": {
          "type": "object",
          "properties": {
            "random_string": {
              "type": "string"
            }
          }
        }
      }
    },
    ......
  ]
}

我们可以看到,CheeryStudio 是把所有的 MCP 工具打包放在 tools 参数中传给大模型的。这需要大模型支持工具调用功能。在 CherryStudio 里,只有带有"工具"标识的大模型,MCP 工具服务才是可用状态。

图片加载中...

Function Call 功能极大地提升了大模型的能力,但也存在两个问题:

  1. 不是所有大模型都支持 Function Call;
  2. 各家大模型对 Function Call 的触发精准度差异较大——同样的问题,有时会调用工具,有时不会。GPT-4o 和 Claude 的触发最为精准,其次是 Qwen。

为了解决这些问题,Anthropic 提出了 MCP 协议,并于 2024 年 11 月 25 日正式发布。MCP 协议与函数调用的原理类似,都是向大模型提供工具定义信息,让模型自主决定是否调用工具以及调用哪个工具。不同之处在于,MCP 是将工具的 JSON Schema 直接写入提示词(Prompt)中,而不是作为 API 参数传递。 例如,Cline 的 MCP 请求会把所有 MCP 工具的定义和用法写进提示词:

{
  "model": "deepseek/deepseek-v3-base:free",
  "messages": [
    {
      "role": "system",
      "content": "You are Cline, a highly skilled software engineer with extensive knowledge in many programming languages, frameworks, design patterns, and best practices.\n\n\n====\n\nMCP SERVERS\n\nThe Model Context Protocol (MCP) enables communication between the system and locally running MCP servers that provide additional tools and resources to extend your capabilities.\n\n# Connected MCP Servers\n\nWhen a server is connected, you can use the server's tools via the `use_mcp_tool` tool, and access the server's resources via the `access_mcp_resource` tool.\n\n## baidu-maps (`undefined`)\n\n### Available Tools\n- map_geocode: \n    Name:\n        地理编码服务\n        \n    Description:\n        将地址解析为对应的位置坐标。地址结构越完整,地址内容越准确,解析的坐标精度越高。\n        \n    Args:\n        address: 待解析的地址。最多支持84个字节。可以输入两种样式的值,分别是:\n        1、标准的结构化地址信息,如北京市海淀区上地十街十号【推荐,地址结构越完整,解析精度越高】\n        2、支持\"*路与*路交叉口\"描述方式,如北一环路和阜阳路的交叉路口\n        第二种方式并不总是有返回结果,只有当地址库中存在该地址描述时才有返回。\n        \n    \n    Input Schema:\n    {\n      \"type\": \"object\",\n      \"properties\": {\n        \"address\": {\n          \"title\": \"Address\",\n          \"type\": \"string\"\n        },\n        \"ak\": {\n          \"title\": \"Ak\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"address\",\n        \"ak\"\n      ],\n      \"title\": \"map_geocodeArguments\"\n    }\n"
    },
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "<task>\n从东莞南城汽车站骑行到松山湖大概要多久?\n</task>"
        },
        {
          "type": "text",
          "text": "<environment_details>\n# VSCode Visible Files\n(No visible files)\n\n# VSCode Open Tabs\n(No open tabs)\n\n# Current Time\n2025/4/25 上午6:52:29 (Asia/Shanghai, UTC+8:00)\n\n# Current Working Directory (/Users/yangjian/Desktop) Files\n(Desktop files not shown automatically. Use list_files to explore if needed.)\n# Context Window Usage\n0 / 64K tokens used (0%)\n\n# Current Mode\nACT MODE\n</environment_details>"
        }
      ]
    }
  ],
  "temperature": 0,
  "stream": true,
  "stream_options": {
    "include_usage": true
  }
}

我这里为了方便大家阅读做了精简,实际完整的请求很长,我放文末的参考链接了。

图片加载中...

这里我们可以看到,cline 直接在提示词里面告诉 AI 有哪些 MCP 工具,每个工具的作用是什么,如何调用,让 AI 现学现用。AI 根据需要调用指定的 MCP tool,得到返回结果之后,再进行下一步操作,可能再调用另一个 MCP tool,直到完成当前任务为止。

下图是我用 Cline 调用 MCP 的整个过程,你看了也许会有更深的体会:

图片加载中...

总的来说,Function Call 是在模型训练的时候就内置了工具调用功能,而 MCP 本质上则是一个提示词工程,它通过在提示词中加入了工具调用的规则让大模型现学现用,MCP 是利用了 AI 的“小样本学习”能力, 而这个能力几乎所有的 AI 大模型都具备的,所以说它是一个通用的协议。由于这个协议是写在模型的上下文提示词中的,所以又被称之为”模型上下文协议“

值得一提的是,这种提示词工程的 MCP 实现非常费 Token,随便一个请求都是上万的 Token 输入,下图是我的 Cloudfare AI 网关的日志,基本上每次请求的输入 Token 都超过了 15000。

图片加载中...

# 3. 什么是 A2A 协议

A2A 协议即 AI 智能体之间的协议。首先我们要了解什么是智能体,AI 智能体由三个部分组成:

  • 感知模块
  • 决策模块
  • 执行模块

感知模块其实就是智能体的输入模块,可以是键盘输入,语音输入,也可以是其他各种传感器。

决策模块其实就大语言模型了。

执行模块其实由大量的 MCP 组成的一个工具池子,他们是智能体的”手脚“。

如果说,我们可以把大模型看做一个信息引擎的话,那么 AI Agent 本质上其实就是一个任务引擎,它能够自动编排,执行任务。

A2A 协议就是智能体之间的交互协议。智能体们通过这个协议实现”互帮互助“地完成任务。如果把智能体看做是一个小团队的话,A2A 协议就可以看做是一个“跨部门协作的准则”。 我们可以想象个场景:你们公司每个部门都有自己的软件系统。例如,销售部门用 CRM,财务部门用 ERP,客服部门用智能客服工单系统。过去,这些系统之间是各自独立的,数据也不会互通。你经常需要在不同系统之间来回复制粘贴,特别麻烦。

但现在公司推出了一套新方案,每个系统里都有一个强大的 AI 助手,而且它们之间建立了一套统一的通信协议。当销售部门的 AI 收到一个大订单时,它会直接通过这个协议通知财务 AI,让它记账和开票;然后财务 AI 再通知仓储系统的 AI,安排发货并跟踪物流,最后还会提醒客服部门的 AI 做好后续跟进。

所有这些沟通和协作,都是 AI 和 AI 之间的主动和私下沟通,最后我们人类只需要点头确认一下,整个流程就能顺利流转。这样不同部门的 AI 助手既各司其职,又能彼此配合。这就是 A2A 技术的核心——让不同平台、不同岗位的 AI 智能体,能够互相通信协作,突破信息孤岛,完成跨系统的复杂任务。

英伟达 CEO 黄仁勋在今年 CES 上曾说:

随着 AI 技术的发展,未来的 IT 部门将逐渐演变为 AI Agent 的人力资源部门,负责管理、培养和改进这些数字员工,让它们更好地为公司服务。

可以预见,A2A 协议将成为数字员工之间协作的标准。

# 4. 参考链接

上次更新: 2025/4/26 23:39:35