MCP的host和client到底是什么?

MCP大多都在教如何使用mcp、创建mcp server。
像cursor和cherry-studio这种是host和client一体的原理是什么?
或者说如果我想在终端和ollama对话时调用mcp该从何下手?

找到了下面这个仓库,可以学习下

4 Likes

host 是工具主体,client 是 server 对端啊。host 要和 server 沟通就要起个 client 与 server 连接通信啊。一般 cursor 和 cherry-studio 都是host 集成了 client 。写一个终端工具(host)集成 client 啊。然后在终端里调用 host 。类似 aider

1 Like

我也有这个疑问

1 Like

概念是理解的,就是不知道怎么实现。具体问题表现为:在终端和本地ollama对话时怎么使用mcp

1 Like

大佬,你说的还是没有能看明白,client不能和server直接通讯吗?干嘛还有个host?

1 Like

所以说mcp设计得不好,太复杂了,很多情况下就是多套了一层,完全没必要

1 Like

可以啊。但是只是通信没有应用场景啊。继承了 ai host 就可以与 ai 互动了。

1 Like

我理解是对现有api调用的封装(权限控制也是一部分),GitHub上甚至有将mcp再次封装为http:tieba_072:

2 Likes

没应用场景?我能不能理解就是没有执行装置?client是脊柱,server是大脑,host是躯干?

1 Like


画个简单的 demo 图说明一下。

1 Like

你这个图一出来,更迷糊了,cherry-studio 本质上来说算是host还是client?

1 Like

host + MCP client ,本来就是 AI host ,在内部代码集成了 MCP 的逻辑,就可以通过读取 MCP 配置文件创建 MCP 客户端与 MCP 服务端通信。
打个比方,浏览器是 host ,而浏览器发展了后集成了扩展系统,而这个扩展系统可以创建扩展实例 client,而扩展实例与服务交互 server。当然扩展系统使用沙箱来独立允许扩展进程。

好像有点懂了,那如果我要把host和client拆开,比如cherry-studio有一天不支持两个同时了,需要自己搭配组合,那cherry 只能算是client了?还是算host ?

最开始没有 MCP 的时候 cherry 只是一个 host,即集成了 AI client (不是 MCP client)的应用或者叫 AI agent。

1 Like

哦哦,原来这个就是host,我一直以为是ai client

有了 MCP 后,MCP 为了不让 MCP 的 client 和 AI client 混淆,把 AI client 或者能够使用 MCP client 的环境或者工具 叫做了MCP host

经过我昨天一天研究总结的,不一定对,有错的望大佬们指正
server自己不能独立工作,需要client连接
client+server组合之后可以做一些简单单一的事情,比如读文件然后交给llm,但是需要个入口和出口用来交互
host就是用来交互的,再有就是把一些client组合,形成一个工具链,client1的结果交给client2,再给client3,打个比方:如果client1 client2 client3每个的作用都是和大模型对话的话,这三个组合起来就是多轮(三轮)连续对话

说的我都看不懂···
MCP是一种协议。
MCP应用以MCP Server形式存在,部署在本地或者远程主机。
Cherrystudio/Cursor是客户端应用,访问MCP Server,作为AI可用的工具接入。

mcp host 和client 谁负责具体执行?比如下面说的读取文件,需要用到i/o, 是host告诉client执行,还是client告诉host执行?

一般来说 host 与模型交互,拿到模型回复(一般是结构化数据),然后解析后判断要交给 mcp client,mcp client 收到host 的内容,处理成 mcp server 能处理的格式发个 mcp server。

1 Like