读 You Said No MCP

https://earendil.com/posts/you-said-no-mcp/

在过去的一年,Pi 是坚决的 MCP 抵制者(What if you don’t need MCP at all?),原因一是由于大量的冗余描述信息占用了珍贵的上下文,二是难以扩展,三是无法自由组合。所以 Pi 的作者出于极简的原则,选择直接让 agent 直接使用 cli 通过编写代码与 server 交互。而在近日发布的 v0.99.0 版本中,Pi 竟然新增了对 MCP 的支持。

这篇文章将快速一探究竟这个变化的前因后果。

时代在变化

首先作者提醒大家,时代一直在变化,今天的 MCP 早已不是一年前的 MCP。但仅仅凭这一点,还不足以将 MCP 集成到 Pi 中。众所周知,Pi 拥有非常优秀的插件生态,为什么不将 MCP 做成一个插件呢?过去确实是的,例如官方认可的 pi-mcp-adapter。但今天的 MCP 进入了 Pi core,是开发团队一起深思熟虑后的结果。

什么变了

将 MCP 引入 core 不仅仅是因为 MCP 变好了,而是引入 MCP 对应的重构优化本身就很通用,例如可以帮助 Pi 更好地使用 Jev(文末会有一个小例子)。换句话说,Pi 当前所缺失的能力与集成 MCP 所需的能力非常相似:一个以解释器形式存在的沙盒(Code Mode)。

虽然 MCP 一直在改进,但它最大的问题还是在与无法组合,即使在 Code Mode 中也没有彻底解决。但根结并不在于 MCP 协议本身,而是各家 harness 使用方式的问题。例如许多 harness 会把 tools 无脑全部塞入上下文,导致接入一个 MCP 后,模型每轮都会看到它全部 20+ 个 tools 的定义。更糟糕的是 server 为了迎合这种做法,节省 token,会直接返回了直接阅读的文本,而不是结构化数据。作者认为更好的做法是类似 OpenAPI + intelligent tool discovery(tools 工具返回结构化数据,并通过文档和描述按需使用)。

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论