MCPSkill
MCP 与 SkillMCP 市场
对比

MCP 服务端与客户端的区别

同一条连接的两端,职责完全不同。把这两者搞混,是新手实现时最常见的错误来源。

先记住一句话

服务端拥有能力:它定义工具、校验输入、执行工作、返回结构化结果。客户端拥有对话:它发现有哪些能力可用、 把这些选项呈现给模型、并把选中的调用路由给正确的服务端。

一条实用的判断标准:服务端应该可以在完全不知道"对面是谁"的情况下运行。一旦它开始做面向用户的决策, 边界就已经被越过了。

各用一句话

服务端负责暴露,客户端负责编排。谁都不该去干对方的活。

并排看

维度服务端客户端
拥有什么能力及其契约会话与模型交互
定义什么工具名、schema、权限、错误连哪些服务端,以及怎么呈现它们
校验什么输入,在碰真实系统之前这次任务到底该不该发起调用
是否知道用户不知道,也不需要知道知道,因为是它在驱动对话
如何扩展暴露更多或更窄的能力连更多服务端,而不用改模型
典型错误把业务规则或用户偏好写进去把"该调哪个工具"写死

一次调用怎么走

1
客户端建立连接

它连上服务端,获知存在哪些能力,以及各自的名称、描述和 schema。

2
客户端把它们交给模型

能力被呈现为可调用的选项,由模型判断当前请求是否匹配其中任何一个。

3
服务端校验并执行

坏输入在碰任何真实系统之前就被拒绝。调用合法才真正执行能力。

4
结构化结果返回

客户端把结果交给模型,模型拿到的是可用字段,而不是一堆原始文本,从而继续对话。

常见混淆

让服务端了解用户服务端开始按人设或历史来调整行为。这属于客户端和 Skill 层。
在客户端写死工具选择如果客户端已经知道该调哪个工具,模型就没有在做选择,协议只剩开销。
只在客户端做校验客户端不是信任边界。无论谁发来的请求,服务端都必须拒绝坏输入。
让服务端决定呈现方式组织面向用户的答案属于任务关注点,该归 Skill,而不是连接层。