MCP 与 Plugins
MCP 和 Plugins 都是扩展机制,但层级不同。
MCP
MCP 是外部工具总线。
它解决的问题是:Agent 不可能内置所有工具,但可以通过协议连接外部 server。
一个 MCP server 可以提供:
- tools。
- resources。
- prompts。
- skills。
Claude Code 对 MCP 连接状态有明确建模,例如 connected、failed、needs-auth、pending、disabled。
源码里的关键锚点:
getMcpToolsCommandsAndResources():汇总 MCP tools、commands、resources。fetchToolsForClient():从单个 MCP client 拉取工具。callMCPToolWithUrlElicitationRetry():MCP 工具调用和 URL elicitation 重试。
这说明 MCP 不是简单“多几个工具”,而是动态工具池、资源池和鉴权状态的组合。
自研 Agent 第一版不需要支持所有 transport。建议先支持:
text
stdio
http1
2
2
状态也先做:
text
pending
connected
failed
disabled1
2
3
4
2
3
4
Plugins
Plugin 是打包形态。
一个 plugin 可以包含:
- commands。
- skills。
- agents。
- hooks。
- MCP servers。
- output styles。
MCP 更像“接外设的协议”,Plugin 更像“安装扩展能力的包”。
自研 Agent 的扩展路线
建议顺序:
- 本地 commands。
- 本地 skills。
- 本地 MCP config。
- 本地 plugin 目录。
- plugin manifest schema。
- enable/disable。
- marketplace 和自动更新。
不要一开始做 marketplace。先让本地插件可用,稳定后再考虑分发。
小结
MCP 让 Agent 能连接外部能力,Plugins 让能力可以被打包和管理。二者都应该建立在稳定的 Tool 系统之上。