Sunday 的面试指南

MCP Host 实战:工具发现、Schema 映射与调用循环

《Agent 大模型 0 到 1 系统课》 · 程序员 Sunday

你正在阅读本节的免费试读。完整课程 ¥499,可在文末添加作者微信购买。

上一节,咱们已经把售后 MCP Server 做出来了。

这个 Server 里面包含两个 Tools、一个 Resource 和一个 Prompt。

最后还通过验证 Client 和 MCP Inspector

但是,大家仔细看上一节的 verify-client.js,会发现这个工具调用是咱们手动指定的:

const refundResult = await client.callTool({
	name: 'check_refund_eligibility',
	arguments: {
		orderId: 'A1024'
	}
})

也就是说,程序在运行以前就已经知道要调用 check_refund_eligibility。

整个过程根本没有大模型参与。

所以,上一节的代码只能说明:Client 可以发现并调用 MCP Server 的能力。

但是,很明显,这还不是咱们真正想要的 Agent。

真正的 Agent 应该接收一句自然语言:

订单 A1024 是否满足退款条件?如果可以退款,是否需要人工审核?

然后由模型判断需要哪个工具、生成调用参数。Host 再把这次调用交给 MCP Client,最后把执行结果重新送回模型。

这一节,咱们就把这块功能完成。

从验证 Client 到真正的 Host

先回忆一下第三节讲过的角色关系。

MCP Client 负责和 MCP Server 通信。

它可以建立连接、查询能力列表、调用 Tool、读取 Resource,也可以获取 Prompt。

但是 Client 不负责调用大模型,也不会根据用户问题决定该使用哪个工具。

这些事情是 Host 负责的。

整个流程就长成下面这样:

MCP Host 实战:工具发现、Schema 映射与调用循环 配图 1

这里最容易混淆的是:模型接口和 MCP Server 之间并不会直接通信。

模型本身并不认识 client.callTool(),MCP Server 也不知道什么是模型的 tool_calls。

是 Host 站在中间,把两边的数据结构转换并串联起来。

实现一个可以调用 MCP Tool 的最小 Host

课程源码:https://github.com/lgd8981289/Agent--Code

本小节完整代码位于:Code/Node/第三章/05-mcp-client-host

这个项目继续使用上一节的售后 MCP Server。

目录结构如下:

MCP Host 实战:工具发现、Schema 映射与调用循环 配图 2

after-sales-mcp-server.js、order-system.js 和 refund-policy.js 都已经在上一节讲过了,代码直接复制过来就可以了。

这一节真正新增的是两个文件:

  • deepseek-client.js:负责调用 DeepSeek
  • host.js:负责连接模型和 MCP Server,运行完整调用链

项目继续使用 MCP 官方 SDK 的 V1 版本:

npm install @modelcontextprotocol/sdk@1.29.0 zod

然后是 .env 文件:

DEEPSEEK_API_KEY=你的 DeepSeek API Key
DEEPSEEK_MODEL=deepseek-v4-flash

创建 MCP Client 并连接 Server

先来看 host.js ,这里面代码有点多,大家最好是下载下来源码之后,然后跟着课程的代码一点点看

这里给大家录了一个视频,大家可以看下:

「插入视频 ---- 05-连接 mcpserver 和 client」

第一

本节试读已结束

继续学习,解锁完整课程

购买《Agent 大模型 0 到 1 系统课》,
继续阅读本节剩余内容与后续课程。

扫码添加作者微信,备注「Agent 课程」

添加作者微信 · 购买完整课程

解锁完整课程 ¥499

《Agent 大模型 0 到 1 系统课》
扫码添加微信,备注「Agent 课程」,购买后由 Sunday 提供完整内容的学习方式。

扫码添加作者微信 LGD_Sunday,购买 499 元 Agent 课程

微信昵称:LGD_Sunday
手机上可长按保存二维码,再用微信扫一扫识别。

保存微信二维码