MCP 虽好,但我还是有一些槽不吐不快
# 背景
在 MCP 出现之前,我也会用外部工具增强 AI 的能力。比如我开发了一个助手 bot ,开发和使用流程如下:
1. 在 python 里定义一些工具函数(比如生成图片或下载文件等)。
2. 当用户向 bot 发送文本时,bot 把工具的描述和用户文案给到 AI ,让 AI 判断需要调用哪个工具。
3. 当工具执行完后,再将执行结果发给 AI ,让 AI 决定是继续调用工具、还是向用户输出结果。
这套流程只能说在我的场景勉强够用,问题主要有两个:
1. 工具函数不够通用,只能在这个 bot 里使用
2. 对话都在一个 bot 聊天框里完成,上下文管理让人头疼
# MCP 的愿景
虽然 MCP 出来有一段时间了,但昨天才真正开始上手使用,用的公司内部工具。首次使用时 MCP 给我的愿景还挺好的:我只需要维护工具函数的代码,就可以在各种客户端( cluade desktop/cusor 等)中复用,甚至共享给其他人,看起来很好解决了我上面的两个问题。
今晚和昨天我重点关注 MCP 服务器的开发、MCP 客户端的体验,也在过程中碰到了不少槽点,在此记录一下。
# 1. 协议交互
1. OpenWebUI 没有选择标准 MCP 协议,而是特立独行**自创了一套 OpenAPI 的协议**。虽然可以用 mcpo 命令很容易地转换,但这也增加了部署和理解成本。转换后每个工具函数还被加上了_post 后缀,强迫症震怒。
2. sse 协议下,MCP 服务器重启后 MCP 客户端也要跟着重启,否则下次调用工具函数时就会报错
# 2. 工具函数 to AI
MCP 协议主要定义了 client 和 server 的交互。client 在获取到工具函数后如何传递给 AI ,这各软件各显神通了。
1. trae 海外版隐藏了提示词,但有意思的是,使用官方模型能很顺利调用 MCP 的工具函数;但如果是填写 key 、调用**第三方的模型**(甚至是火山引擎),**AI 就基本无法感知用户的输入和工具函数,开始胡言乱语**。可能是提示词设计的问题。
4. cline/roo code 等插件,将 MCP 的工具函数塞到自己本来就已经很长的提示词( 10k+ tokens!)里了,可能会导致**AI 优先使用内置的工具**。当然这点可以通过提示词强调优先使用 MCP 、或切换 roo code 的模式来缓解。
5. OpenWebUI 又特立独行,每次对话时会先根据少量上下文和用户输入让 AI 决定是否调用工具函数。如果没有调用工具、或工具调用结束,AI 是感知不到工具函数的。**也就是说,如果你问 AI 当前有哪些工具、或者某个工具的参数是什么,AI 是回答不出来的**。
另外,cline/roo code 和 AI 交互用的是 xml 格式 prompt ,OpenWebUI 用的是 json 格式 prompt ,反正都不是大模型标准的 tools 格式哈哈。
# 3. 上下文管理
这一部分槽点也较少。不过点名批评 OpenWebUI ,由于工具的调用判断是单独的链路,所以就会出现很多奇特现象:
- 你无法向 AI 询问当前有哪些工具,或者工具的参数定义
- **工具调用完成后,AI 就感知不到工具了**。导致无法实现“用户提问 -> AI 调用工具 1 -> AI 基于工具 1 的结果调用工具 2 -> AI 给用户结果“的链式调用。
- 工具调用完成后,AI 调用**工具的参数、工具的返回值都不会记录在对话上下文里**。虽然用户可以看到这些内容,但 AI 是永远不会知道了……
相比之下,cline/root code 都是将全量信息记录在上下文里,使用起来顺畅很多。
# 4. 用户界面和其它
1. trae 海外版,前端明显有 bug ,看不到工具函数的返回值,只能按复制按钮把返回值粘贴到其它地方看。
2. cline ,工具函数的返回值没法折叠。roo code 也不支持折叠,甚至还不支持在对话框里展示图片内容。
3. OpenWebUI 在处理 json 数据(工具函数定义/展示参数、响应)时,会用 unicode 格式(/uffff )处理,可读性基本没有。
4. ChatGPTNextWeb 宣称 v2.16 支持了 MCP ,但我启动 v2.16 的 docker 镜像后,前端显示依然是 v2.15 版本,也不支持 MCP……你赢了
5. 网页版本 Claude 我能正常使用,但 Claude Desktop 提示我 APP 不可用。
# 总结
MCP (或者说用通用协议来增强 AI 对真实世界的感知和操作能力)确实是一个非常有潜力的技术。但它太新了、协议覆盖的范围也太小了,业界还没有一个如何用好 MCP 的最佳实践。当然也有可能是我太穷了,说不定直接用 cursor 就没啥问题了(
希望不久的将来,有完善的 MCP 客户端和成熟的 MCP 生态,能让每个人都能用上便捷好用的 AI 和工具。
# 背景
在 MCP 出现之前,我也会用外部工具增强 AI 的能力。比如我开发了一个助手 bot ,开发和使用流程如下:
1. 在 python 里定义一些工具函数(比如生成图片或下载文件等)。
2. 当用户向 bot 发送文本时,bot 把工具的描述和用户文案给到 AI ,让 AI 判断需要调用哪个工具。
3. 当工具执行完后,再将执行结果发给 AI ,让 AI 决定是继续调用工具、还是向用户输出结果。
这套流程只能说在我的场景勉强够用,问题主要有两个:
1. 工具函数不够通用,只能在这个 bot 里使用
2. 对话都在一个 bot 聊天框里完成,上下文管理让人头疼
# MCP 的愿景
虽然 MCP 出来有一段时间了,但昨天才真正开始上手使用,用的公司内部工具。首次使用时 MCP 给我的愿景还挺好的:我只需要维护工具函数的代码,就可以在各种客户端( cluade desktop/cusor 等)中复用,甚至共享给其他人,看起来很好解决了我上面的两个问题。
今晚和昨天我重点关注 MCP 服务器的开发、MCP 客户端的体验,也在过程中碰到了不少槽点,在此记录一下。
# 1. 协议交互
1. OpenWebUI 没有选择标准 MCP 协议,而是特立独行**自创了一套 OpenAPI 的协议**。虽然可以用 mcpo 命令很容易地转换,但这也增加了部署和理解成本。转换后每个工具函数还被加上了_post 后缀,强迫症震怒。
2. sse 协议下,MCP 服务器重启后 MCP 客户端也要跟着重启,否则下次调用工具函数时就会报错
# 2. 工具函数 to AI
MCP 协议主要定义了 client 和 server 的交互。client 在获取到工具函数后如何传递给 AI ,这各软件各显神通了。
1. trae 海外版隐藏了提示词,但有意思的是,使用官方模型能很顺利调用 MCP 的工具函数;但如果是填写 key 、调用**第三方的模型**(甚至是火山引擎),**AI 就基本无法感知用户的输入和工具函数,开始胡言乱语**。可能是提示词设计的问题。
4. cline/roo code 等插件,将 MCP 的工具函数塞到自己本来就已经很长的提示词( 10k+ tokens!)里了,可能会导致**AI 优先使用内置的工具**。当然这点可以通过提示词强调优先使用 MCP 、或切换 roo code 的模式来缓解。
5. OpenWebUI 又特立独行,每次对话时会先根据少量上下文和用户输入让 AI 决定是否调用工具函数。如果没有调用工具、或工具调用结束,AI 是感知不到工具函数的。**也就是说,如果你问 AI 当前有哪些工具、或者某个工具的参数是什么,AI 是回答不出来的**。
另外,cline/roo code 和 AI 交互用的是 xml 格式 prompt ,OpenWebUI 用的是 json 格式 prompt ,反正都不是大模型标准的 tools 格式哈哈。
# 3. 上下文管理
这一部分槽点也较少。不过点名批评 OpenWebUI ,由于工具的调用判断是单独的链路,所以就会出现很多奇特现象:
- 你无法向 AI 询问当前有哪些工具,或者工具的参数定义
- **工具调用完成后,AI 就感知不到工具了**。导致无法实现“用户提问 -> AI 调用工具 1 -> AI 基于工具 1 的结果调用工具 2 -> AI 给用户结果“的链式调用。
- 工具调用完成后,AI 调用**工具的参数、工具的返回值都不会记录在对话上下文里**。虽然用户可以看到这些内容,但 AI 是永远不会知道了……
相比之下,cline/root code 都是将全量信息记录在上下文里,使用起来顺畅很多。
# 4. 用户界面和其它
1. trae 海外版,前端明显有 bug ,看不到工具函数的返回值,只能按复制按钮把返回值粘贴到其它地方看。
2. cline ,工具函数的返回值没法折叠。roo code 也不支持折叠,甚至还不支持在对话框里展示图片内容。
3. OpenWebUI 在处理 json 数据(工具函数定义/展示参数、响应)时,会用 unicode 格式(/uffff )处理,可读性基本没有。
4. ChatGPTNextWeb 宣称 v2.16 支持了 MCP ,但我启动 v2.16 的 docker 镜像后,前端显示依然是 v2.15 版本,也不支持 MCP……你赢了
5. 网页版本 Claude 我能正常使用,但 Claude Desktop 提示我 APP 不可用。
# 总结
MCP (或者说用通用协议来增强 AI 对真实世界的感知和操作能力)确实是一个非常有潜力的技术。但它太新了、协议覆盖的范围也太小了,业界还没有一个如何用好 MCP 的最佳实践。当然也有可能是我太穷了,说不定直接用 cursor 就没啥问题了(
希望不久的将来,有完善的 MCP 客户端和成熟的 MCP 生态,能让每个人都能用上便捷好用的 AI 和工具。
长桥证券开户福利, 去香港的兄弟别错过了
这几天,长桥证券有个开户羊毛,建议有条件的朋友别错过:入金 1 万港币,就能港美股交易终身免佣,也有新客入金 2 万港币,拿 800 港币的现金卡。想着也不麻烦,今天中午让老婆也新开了个户,达成半天白嫖 1600 港币成就。😄
说下流程,供参考:
1. 中午用中银快汇,中银购汇,转了 2W 港币到中银香港,几个小时就到账了,还挺快的。手续费、电讯费全免,无损。
2.老婆自己在手机上下载长桥 App (注册时输入邀请码 S7LS58 ),也可以使用我的邀请链接 https://app.lbmkt.ing/ac/oa?account_channel=lb&channel=HB100035&invite-code=S7LS58
3.开户的时候挂着境外 IP:可以避开要求中国境内用户提供存量用户证明那个限制(这好像是个流程漏洞?🥹),开户很快,验证下身份证、内地银联卡,人脸,半个小时就搞定了。
4.长桥入金支持 eDDA (绑定中银,可在 App 里直接发起入金)。
5.直接 eDDA 入金达标,等 3 个工作日,奖励到账即可。
这几天,长桥证券有个开户羊毛,建议有条件的朋友别错过:入金 1 万港币,就能港美股交易终身免佣,也有新客入金 2 万港币,拿 800 港币的现金卡。想着也不麻烦,今天中午让老婆也新开了个户,达成半天白嫖 1600 港币成就。😄
说下流程,供参考:
1. 中午用中银快汇,中银购汇,转了 2W 港币到中银香港,几个小时就到账了,还挺快的。手续费、电讯费全免,无损。
2.老婆自己在手机上下载长桥 App (注册时输入邀请码 S7LS58 ),也可以使用我的邀请链接 https://app.lbmkt.ing/ac/oa?account_channel=lb&channel=HB100035&invite-code=S7LS58
3.开户的时候挂着境外 IP:可以避开要求中国境内用户提供存量用户证明那个限制(这好像是个流程漏洞?🥹),开户很快,验证下身份证、内地银联卡,人脸,半个小时就搞定了。
4.长桥入金支持 eDDA (绑定中银,可在 App 里直接发起入金)。
5.直接 eDDA 入金达标,等 3 个工作日,奖励到账即可。
惠购商城是不是传销平台
0. 说是下载软件,购买积分,几个月回本。
1. 百度搜索不到这个平台。
2. 我老婆的妹妹买了,他们村里有些人都买了,搞定我老婆也想买。
v 友有了解的吗?
我感觉就是经典的庞氏骗局啊
我又搜索不到更多的资料,大家一起看看,帮忙搜索一下资料呢
软件的下载链接: https://h5.runruntongxin.com/down
0. 说是下载软件,购买积分,几个月回本。
1. 百度搜索不到这个平台。
2. 我老婆的妹妹买了,他们村里有些人都买了,搞定我老婆也想买。
v 友有了解的吗?
我感觉就是经典的庞氏骗局啊
我又搜索不到更多的资料,大家一起看看,帮忙搜索一下资料呢
软件的下载链接: https://h5.runruntongxin.com/down
虚拟机时间跳变问题
运行在青云私有云上的 Ubuntu 22.04 虚拟机,通过 systemd-timesyncd 采用 ntp.ubuntu.com 服务器进行 NTP 同步。在 /var/log/syslog 中每隔大约半小时就会产生两条来自 systemd-resolved 的日志提示系统时间更改。
一台虚拟机 xxx 时间突然向过去跳变,再恢复正常:
May 31 17:18:44 xxx systemd-resolved[724]: Clock change detected. Flushing caches.
May 31 17:18:51 xxx systemd-resolved[724]: Clock change detected. Flushing caches.
May 31 17:48:48 xxx systemd-resolved[724]: Clock change detected. Flushing caches.
May 31 17:48:54 xxx systemd-resolved[724]: Clock change detected. Flushing caches.
另一台虚拟机时间 yyy 突然向将来跳变,再恢复正常:
May 31 17:53:58 yyy systemd-resolved[690]: Clock change detected. Flushing caches.
May 31 17:52:22 yyy systemd-resolved[690]: Clock change detected. Flushing caches.
May 31 18:24:03 yyy systemd-resolved[690]: Clock change detected. Flushing caches.
May 31 18:22:27 yyy systemd-resolved[690]: Clock change detected. Flushing caches.
在服务器上通过 top (间隔设为 0.1 秒)现场观测观察到的时间跳变现象与日志中的记录相符。
虚拟机上 /sys/devices/syste/clocksource/clocksource0/current_clocksource 为 kvm-clock 。
以上现象是什么原因造成的?是否说明虚拟机所在主机的时间不准,或者主机上的时间同步与虚拟机存在冲突?有没有什么办法可以缓解或解决时间上的跳变?
如果禁用虚拟机 xxx 上的 systemd-timesyncd 服务,日志中发生时间变化的间隔变长( 1.5 小时或 2 小时),且每次只有一行,不再出现跳变。但是这会导致系统时间始终比北京时间慢 6~7 秒(可能刚好与启用时间同步时跳变的时间差相等?)。
运行在青云私有云上的 Ubuntu 22.04 虚拟机,通过 systemd-timesyncd 采用 ntp.ubuntu.com 服务器进行 NTP 同步。在 /var/log/syslog 中每隔大约半小时就会产生两条来自 systemd-resolved 的日志提示系统时间更改。
一台虚拟机 xxx 时间突然向过去跳变,再恢复正常:
May 31 17:18:44 xxx systemd-resolved[724]: Clock change detected. Flushing caches.
May 31 17:18:51 xxx systemd-resolved[724]: Clock change detected. Flushing caches.
May 31 17:48:48 xxx systemd-resolved[724]: Clock change detected. Flushing caches.
May 31 17:48:54 xxx systemd-resolved[724]: Clock change detected. Flushing caches.
另一台虚拟机时间 yyy 突然向将来跳变,再恢复正常:
May 31 17:53:58 yyy systemd-resolved[690]: Clock change detected. Flushing caches.
May 31 17:52:22 yyy systemd-resolved[690]: Clock change detected. Flushing caches.
May 31 18:24:03 yyy systemd-resolved[690]: Clock change detected. Flushing caches.
May 31 18:22:27 yyy systemd-resolved[690]: Clock change detected. Flushing caches.
在服务器上通过 top (间隔设为 0.1 秒)现场观测观察到的时间跳变现象与日志中的记录相符。
虚拟机上 /sys/devices/syste/clocksource/clocksource0/current_clocksource 为 kvm-clock 。
以上现象是什么原因造成的?是否说明虚拟机所在主机的时间不准,或者主机上的时间同步与虚拟机存在冲突?有没有什么办法可以缓解或解决时间上的跳变?
如果禁用虚拟机 xxx 上的 systemd-timesyncd 服务,日志中发生时间变化的间隔变长( 1.5 小时或 2 小时),且每次只有一行,不再出现跳变。但是这会导致系统时间始终比北京时间慢 6~7 秒(可能刚好与启用时间同步时跳变的时间差相等?)。
网速卡顿原因
请教各位大佬一个问题,老家宽带是 300m 的,之前用的是磊科的路由器,Wi-Fi 信号还算比较正常的,没有偶尔卡顿的情况,前几天换了个 TP-Link 路由器( 139 元),有时候 Wi-Fi 信号很卡,网页打不开,视频加载不出来,过一分钟左右就会回复,这种 Wi-Fi 信号偶尔卡顿是什么原因呢,(已经尝试过切换无线信道 无线模式 频段带宽。也可排除是其他网络设备下占用宽带的原因) 是路由器原因吗,如果是怎么修复呢,
租房这里也是用的 TP-Link 型号 TL-XDR3050 易展版,有时候也会卡顿,是什么原因呢,大佬们
请教各位大佬一个问题,老家宽带是 300m 的,之前用的是磊科的路由器,Wi-Fi 信号还算比较正常的,没有偶尔卡顿的情况,前几天换了个 TP-Link 路由器( 139 元),有时候 Wi-Fi 信号很卡,网页打不开,视频加载不出来,过一分钟左右就会回复,这种 Wi-Fi 信号偶尔卡顿是什么原因呢,(已经尝试过切换无线信道 无线模式 频段带宽。也可排除是其他网络设备下占用宽带的原因) 是路由器原因吗,如果是怎么修复呢,
租房这里也是用的 TP-Link 型号 TL-XDR3050 易展版,有时候也会卡顿,是什么原因呢,大佬们
一键安装免部署的开源服务器监控系统 支持 GPU 监控 可自部署
https://github.com/MyDailyCloud/ServerStatus
新项目 花了一天时间写完
欢迎 Star
https://serverstatus.ltd/
已部署好的公共版本
https://github.com/MyDailyCloud/ServerStatus
新项目 花了一天时间写完
欢迎 Star
https://serverstatus.ltd/
已部署好的公共版本