Sunday 的面试指南

MCP 连接方式:stdio、Streamable HTTP 与远程调用

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

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

上一节,咱们实现了一个最小 Host。

Host 先创建 MCP Client,再通过下面这段代码连接售后 MCP Server:

const transport = new StdioClientTransport({
	command: process.execPath,
	args: [serverPath]
})

await client.connect(transport)

运行代码以后,StdioClientTransport 会在当前电脑上执行:

node after-sales-mcp-server.js

也就是说:

Host 和 MCP Server 虽然运行在两个不同的进程中

**但是:**它们都位于当前这一台电脑上。

MCP Client 则由 Host 创建,负责通过 stdio 与这个本地 MCP Server 通信。

这在本地开发的时候是没有问题的。

但是!

如果把这种方式放到真实的企业项目里面,就不太行了。

跟大家举个例子:

假设企业有 1000 位员工都要使用售后 Agent,上面这种方式就意味着每位员工都得安装并运行 node after-sales-mcp-server.js

如果知识库、代码仓库、订单系统分别对应不同的 MCP Server,那么每位员工的电脑上可能还要安装和维护多套 MCP Server

这会带来一系列问题,比如:

  • MCP Server 代码更新以后,每个人都得同步代码
  • 本地程序需要配置企业接口地址、身份凭证和访问权限
  • 某些 MCP Server 还可能依赖数据库、向量数据库或内部运行环境

毕竟,不是每个人都是程序员的,对不对。

所以说在真实企业项目里面,更常见的调用情况应该是这样的 通过网络连接企业 MCP Server:

MCP 连接方式:stdio、Streamable HTTP 与远程调用 配图 1

所以,在这种企业共享场景中,MCP Server 还需要提供 远程连接方式。

那么想要做到这一点,首先要解决的问题就是 Client 和 Server 到底应该怎样通信。

Client 和 Server 到底应该怎样通信

无论 MCP Server 运行在本地还是远程,Client 和 Server 之间都需要传递 MCP 消息。

但是,这些消息总得通过某种方式,从 Client 发送到 Server,再把执行结果传回来,对不对。

这个负责传输 MCP 消息的部分,就叫做 Transport,也就是 传输层。

MCP 连接方式:stdio、Streamable HTTP 与远程调用 配图 2

目前,M

本节试读已结束

继续学习,解锁完整课程

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

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

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

解锁完整课程 ¥499

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

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

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

保存微信二维码