MCP 协议现在是一坨💩

15 天前
 heimoshuiyu

MCP 没有解决大模型如何调用工具的问题,MCP 解决的是 大模型客户端 如何调用工具的问题。

最近手搓一个带 MCP 功能的 Chatbox ,发现 MCP 协议和生态完全是一坨,踩了不少坑,于是拿出来吐嘈一下。欢迎指教。

3 种通信协议:stdio, HTTP+SSE, Streamable HTTPhttps://modelcontextprotocol.io/specification/2025-06-18/basic/transports

stdio 下,来一个请求启动一个 process ,直接对接 stdio stdout 二进制流。先不说性能和安全问题,管道中的一段数据被缓冲区截断怎么办?客户端什么时候知道数据读取完了?流式输出的工具怎么调用? stderr 管道的数据怎么标记并传输? stdio 方案就是个玩具。

接着是 HTTP+SSE ,客户端与服务器建立一个长连接 SSE 来 获取数据。发送数据需要客户端另外建立 HTTP POST 链接。多个链接之间使用 MCP Session ID 识别。不知道是喝了多少想出来的。。。硬生生把所有 server 变成 stateful 。最坑的是,这种协议已经被弃用,官方文档也只有一句弃用的说明。而阿里百炼 MCP 广场和许多在线 MCP 只支持这种协议。如果我手搓的客户端不兼容这种协议,将会失去许多可用的在线 MCP 。

最后一种 Streamable HTTP 就比较正常了。好不容易调通了,发现了 CROS 的问题。几乎所有在线 MCP 都没有考虑 CROS 。fastmcp 这个框架也没有很直观的开启 CORS 的选项。怎么的? mcp server 都不打算公开在线用的是吗?

另外是需要登录的 MCP 。例如 Google Gmail 的 MCP 需要登录 Google 帐号,流程太复杂了我都不想去实现了。气死我了气死我了

3167 次点击
所在节点    程序员
17 条回复
shellus
15 天前
你的 Chatbox 应该集成一个“处理这些烂事的 MCP 代理”,而不是在 Chatbox 里面处理这些和对话无关的细节。
你只需要支持 Streamable HTTP 格式即可。目前 lobechat 就是这样做的。
yulon
15 天前
MCP 刚出的时候,我自己的框架已经有比较完整的工具流了,光各个平台的 OpenAI API 都有一堆漏屎的烂摊子,写了一堆擦屁股的代码,根本不想碰 MCP 。
yukino
15 天前
从命名开始就是想碰瓷 LSP 营销的产品。仿佛是无脑巨婴用大模型设计的“协议”,完全没有将 MxN 的适配问题转化成 M+N ,反而是让问题变得更复杂了。😡
Chuckle
14 天前
最近还想拿 node 看看咋写 mcp 的,忙着也一直没开动,所以 mcp 是个啥,看着就是一个 schemaJSON ,告诉 ai 有啥函数可以调,该传啥参数,然后按函数 key 匹配?和平时做业务,让后端返回一些菜单表差不多啊。只要能造出这个 json 给大模型客户端用就行了吧,关键就看客户端怎么调了。
musi
14 天前
mcp 真不好用,有很多 mcp 一下带了几十上百个工具,现有的模型没有能力承载这么多工具的,占用大量上下文不说还降低模型的能力,我看过最离谱的一个一次上下文带了快三百个工具
kneo
14 天前
不觉得你说的是啥问题。

像那个 google 验证,要支持验证你嫌麻烦,如果不支持验证你又会吐槽:这么多 mcp 服务公开在线用的都不支持验证,谁设计的都不考虑安全性吗?这协议就是个玩具。
PaulSamuelson
14 天前
这帮搞 ai 的,在 curd 和协议制定上,确实差了点意思。
就说一个,如果我 AI 接入了 100 个,1k ,1w 个 mcp ,请问该怎么工作?
如果不能解决这个问题,那么这个 MCP 还只能是有限 MCP 。
DefoliationM
14 天前
@PaulSamuelson llm 层面就不可能解决,上下太长就是没法用,目前再怎么设计也只能依靠增大上下文大小。
PaulSamuelson
14 天前
@DefoliationM 是的呢,如果接入的 MCPs 说明书加起来有一本字典厚,还是全部丢给 LLM 么?那 MCP 的能力就受上下文大小限制了。
这个时候,就应该参考 RAG 、向量技术。但目前我没看到谁把这个“痛”点解决了。
kaneg
13 天前
只能说湿先入为主了,它是赶上了 AI agent 的风头,解决了 AI 和其他系统桥接的痛点。现在业界都认它,感觉没有 MCP 的功能,就要落伍了一样。
coolmenu
13 天前
放心,马上有 MCP 的 MCP 协议,进行层次控制
fredweili
13 天前
毛病可以用工程的时间解决,MCP 解决的问题你有更好的方案么?
大模型原始的方式调用外部工具,有多麻烦你知道么?不知道就再去手搓一个哪怕是最简单的
AlexHsu
13 天前
ai 那边草台班子的路子根 crud 的路子完全不一样 ai 是先能拼起来能用 至于什么安全性 性能 稳定性 可维维护性是啥 没人关心
维护个屁啊 开发出来的东西半年不报废就算财富自由了 到时候自由 958 的牛马给你重构😄
crud 也是草台班子 等你吧协议 规范 安全性都考虑完了 都他娘的 agi 了 crud 思想还是老老实实接 to g 外包吧
unco020511
13 天前
@PaulSamuelson #7 现在有一种方案是 RAG-MCP,将这些众多的 mcp 信息向量化再检索
runlongyao2
13 天前
@musi multi-agent 可以解决这个问题。
heimoshuiyu
6 天前
@unco020511 那是不是可以把 RAG-MCP 包装成一个 MCP ,这样你就有了 MCP-RAG-MCP
antipro
1 天前
网上哪些教程才真都是一坨,几乎每一篇都是:1 、什么是 MCP 2 、为什么要用 MCP 3 、开始不知所云....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1151230

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX