V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
marquina
V2EX  ›  分享发现

MCP 虽好,但我还是有一些槽不吐不快

  •  1
     
  •   marquina · 108 天前 · 2055 次点击
    这是一个创建于 108 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    在 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 就基本无法感知用户的输入和工具函数,开始胡言乱语。可能是提示词设计的问题。
    2. cline/roo code 等插件,将 MCP 的工具函数塞到自己本来就已经很长的提示词( 10k+ tokens!)里了,可能会导致AI 优先使用内置的工具。当然这点可以通过提示词强调优先使用 MCP 、或切换 roo code 的模式来缓解。
    3. 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 和工具。

    3 条回复    2025-05-31 22:03:17 +08:00
    akira
        1
    akira  
       108 天前
    这个是工具的问题了啦, 还需要时间的
    YsHaNg
        2
    YsHaNg  
       108 天前 via iPhone
    open webui 是不是支持 langgraph 来着
    kaiveyoung
        3
    kaiveyoung  
       108 天前 via Android
    将字典放到 resources 里,Cherry studio 压根就不请求
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4318 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:02 · PVG 18:02 · LAX 03:02 · JFK 06:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.