分两种完全独立场景,讲清「自动识别 AI 调用」和「手动 callTool 主动调用」
2026/7/21 10:57:46 网站建设 项目流程

分两种完全独立场景,讲清「自动识别 AI 调用」和「手动 callTool 主动调用」

一、场景 1:VSCode Copilot / Claude Desktop 这类 AI 客户端(日常开发用)

1. 自动识别 + AI 自动调用(无需你写callTool

  1. MCP Server 启动握手时,会把所有server.tool()名称、描述、inputSchema上报给客户端;
  2. 客户端把全部工具元数据注入 LLM 上下文;
  3. 当你对话提问时,大模型会自动判断是否需要调用工具
    • 例如你问:帮我生成一条随机用户写入json
    • LLM 识别匹配create-random-user工具,客户端自动底层发送tools/call请求;
    • 全程不用开发者手动写callTool,完全是 AI 自动驱动。

执行链路

你聊天提问 → LLM 识别需要工具 → 客户端自动执行底层callTool→ 服务端执行逻辑 → 结果返回对话。

二、场景 2:自建脚本 / CLI 客户端(你写 Node 代码控制 MCP)

只能手动callTool()主动调用,不存在自动识别

如果你自己用@modelcontextprotocol/sdk/client写独立脚本、终端工具:

typescript

运行

// 必须手动写这一行主动发起调用,不会有任何AI自动帮你调用 const res = await mcp.callTool({ name: "create-random-user", arguments: {} });
  • 这里没有大模型参与判断;
  • 程序、你自己的代码决定什么时候、调用哪个工具;
  • 不存在 “自动识别”,完全由代码主动触发。

三、核心区分对比表

表格

模式触发方式是否需要手写callTool谁决定调用工具代表客户端
AI 自动调用自动识别工具,模型自主发起不需要,底层插件内部封装LLM 大模型VS Copilot、Claude Desktop、Cursor
代码手动调用代码主动发起必须手写mcp.callTool()开发者代码逻辑自建 Node CLI、自动化脚本、第三方程序

四、关键补充知识点

  1. 工具列表是统一自动同步的无论哪种模式,客户端启动时都会自动拉取全部工具元数据(tools/list),这个同步动作是自动的; 区别只在于:谁来决定要不要执行 call

    • AI 客户端:LLM 判断执行 call
    • 自建脚本:你的代码判断执行 call
  2. 底层通信报文完全一致 不管是 AI 自动调用,还是你手动写callTool,发给 MCP Server 的 JSON-RPC 报文一模一样:

    json

    {"method":"tools/call","params":{"name":"xxx","arguments":{}}}
  3. 结合你create-random-user的完整例子

例子 A:VS Copilot 自动调用(不用写 callTool)

你输入:生成随机用户

  1. Copilot LLM 自动识别对应工具;
  2. 插件底层静默执行 callTool;
  3. 服务端内部走 sampling 反向调用模型生成用户;
  4. 结果直接输出聊天框。

例子 B:自建 CLI 手动调用(必须写 callTool)

typescript

运行

// 代码主动触发,没有AI自动识别逻辑 const res = await mcp.callTool({ name: "create-random-user", arguments: {} }); console.log(res.content[0].text);

五、一句话总结

  1. 带 AI 的可视化客户端(Copilot/Claude):工具会被自动识别,大模型可自动发起工具调用,你不用手写callTool
  2. 纯代码自建 MCP 客户端脚本:没有 AI 自动判断,只能你手动调用callTool()主动执行工具;
  3. 两种场景底层通信标准完全相同,只是上层触发主体不同。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询