MCP 和 LSP
MCP 与 LSP
MCP(Model Context Protocol)与 LSP(Language Server Protocol)解决的是不同领域的问题,但两者背后的设计思想高度一致:
通过引入稳定的协议层,将多对多集成中的 M×N 耦合,解耦为 M+N 的标准化连接。
一、作用
在没有统一协议时,不同消费者与不同提供者之间往往需要分别适配。
以 LSP 为例:
每新增一种编辑器,都需要重新适配多种语言;每新增一种语言,也需要分别支持多个编辑器。
MCP 面临的是类似的问题:
当双方数量持续增长时,真正昂贵的已经不是某一次集成本身,而是不断扩张的连接关系。
LSP 和 MCP 的解决方式都是在两侧之间加入统一协议:
每个客户端只需要实现协议客户端,每个服务端只需要实现协议服务端。
于是,集成复杂度从 M×N 降低到 M+N。
二、引入原则
是否值得引入协议层,核心只看一个问题:
连接复杂度是否已经成为系统的主要成本。
通常可以从三个条件判断:
1. 存在明显的多对多集成关系
一侧有多个 consumer,另一侧有多个 provider,双方需要大量交叉适配。随着两侧数量增加,集成成本会从单点开发问题演变为 M×N 的连接复杂度。
这是引入统一协议最直接的信号。
2. 两侧需要独立演进
客户端和服务端由不同团队、组织甚至公司维护,发布周期彼此独立。
此时,稳定的协议可以作为双方共同依赖的契约,减少因为实现变化带来的协调成本。
3. 需要支持开放扩展
第三方只需要实现协议,而不必分别适配所有已有对端(客户/服务器)。
例如:
- 新的 AI 应用如果支持 MCP,就可以接入已有的 MCP Server;新的 MCP Server 也可以被多个支持 MCP 的 AI 应用使用。
- 新的编辑器实现 LSP 后,就能够接入已有的语言服务器;新的编程语言,只要提供 LSP,就可以被多个支持 LSP 的编辑器使用。
反过来,如果系统规模很小、连接关系固定,或者双方始终由同一团队同步演进,那么 Adapter、SDK 或内部 API 往往已经足够。协议本身也会带来规范设计、兼容性、版本管理和通信开销,不应为了“架构完整”而引入。
三、拓展
一旦从这个角度理解 MCP 和 LSP,会发现类似的设计广泛存在于软件与硬件系统中。
例如:
- LLVM IR:连接多种编程语言前端与多种硬件后端;
- ODBC / JDBC:连接不同应用与不同数据库;
- USB:标准化主机与不同类型设备之间的通信;
- LSP:连接不同编辑器与不同语言工具链;
- MCP:连接不同 AI 应用与不同外部工具、数据源和上下文系统。
它们所在的领域不同,但解决的问题具有相同结构:
当系统两侧都存在大量可替换实现时,用一个稳定的中间契约隔离双方变化,避免每一方都直接理解另一侧的全部实现。
总结
LSP 将编辑器与语言工具链解耦,MCP 则试图将 AI 应用与外部工具、数据和上下文能力解耦。
从这个角度看,MCP、LSP、LLVM IR、ODBC/JDBC、USB 等并不是彼此孤立的设计。
它们都是同一种架构模式在不同领域中的具体实现:用稳定的中间层约束连接,让协议两侧能够独立演进。
评论