MCP:把 M×N 变成 M+N

MCP用一套开放协议把AI与外部工具的集成从M×N降为M+N;给能力不给用法,须与Skills配合并守住信任边界

2026-07-21

🎯 核心主张(一句话)

MCP 是 AI 工具集成的 USB-C:用一套标准协议把「每对组合单独写适配器」的 M×N 难题压成 M+N,但它只解决「能连上」,不解决「用得好」——后者要靠 Skills,且工具越多不等于越强。


📖 正文

它解决什么:集成爆炸

MCP 出现前,AI 客户端和数据源之间的每条连接都要单独搭桥:GitHub 接 Claude 写一个适配器,接 ChatGPT 再写一个。5 个客户端 × 100 个数据源 = 500 个适配器,每新增一方,成本线性放大。

MCP(Model Context Protocol)的解法和 USB-C 一样:客户端实现一次 MCP 客户端协议,数据源实现一次 MCP 服务器协议,任意互通。500 次开发降到 105 次(5+100)。

这个标准赢的速度说明了痛点有多真:2024 年 11 月 Anthropic 开源,4 个月后 OpenAI 采纳,2025 年 12 月捐给 Linux 基金会旗下的 AAIF,成员包括 OpenAI、Google、Microsoft、AWS。13 个月,从一家公司的项目变成行业公共基础设施。

怎么运作:客户端-服务器 + JSON-RPC

架构直接借鉴了 VS Code 的 LSP(设计者 David Soria Parra 承认过这一点):Host(Claude Code 等宿主应用)内置 MCP 客户端,负责发现服务器能力、构造调用、处理响应;MCP 服务器是独立程序,连着数据库/API/文件系统,把能力暴露给客户端。通信走 JSON-RPC 2.0。

传输方式记一条准则就够:本地用 stdio,远程用 HTTP。stdio 由客户端以子进程方式启动服务器,走标准输入输出,不需要网络,延迟最低也最安全;HTTP 用于远端服务(公司内网 Jira、SaaS 接入点),支持 OAuth 2.0。SSE 已废弃,见到就迁移。

服务器暴露三类原语:

原语 是什么 例子
Tools 供 Claude 主动调用的函数,有副作用 建 Jira 工单、发 Slack 消息
Resources 只读数据,类似"文件" 读 README 内容
Prompts 可复用的提示词模板,标准化任务启动 code-review 模板

实践中 Tools 覆盖了绝大多数场景;Prompts 与 Skills 功能重叠,普及度最低。

怎么配:CLI、.mcp.json、作用域

claude mcp add 命令本质上是在操作 .mcp.json

claude mcp add filesystem npx -y @modelcontextprotocol/server-filesystem /workspace
claude mcp add --transport http company-jira https://jira.company.com/mcp
claude mcp add --scope user github -- npx -y @modelcontextprotocol/server-github

.mcp.json 里最重要的机制是环境变量替换——${JIRA_TOKEN} 运行时才取值,${VAR:-default} 提供默认值。密钥放环境变量,配置文件只放引用,这样 .mcp.json 可以放心提交 Git 与团队共享。

作用域三层:项目根目录的 .mcp.json 是项目级(随仓库共享);~/.claude/ 下是用户级(所有项目生效);不宜入库的个人凭证放 .claude/settings.local.json(已被 gitignore)。企业还可以用 managed-mcp.json 集中预配置、预授权,全员零配置接入。

MCP 与 Skills:厨房与菜谱

Anthropic 官方的类比说清了分工:MCP 是专业厨房——冰箱(数据库)、炉灶(API)、刀具(工具)都有了,但每个厨师进来都得自己摸索怎么用;Skills 是标准菜谱——步骤、火候、时长写死,新手也能稳定出品,但没厨房就是空谈。

组合方式:在 SKILL.md 里引用 MCP 工具,让 Claude 按固定工作流调用它们。MCP 给能力,Skills 给用法,缺一边都不稳定。

放到全书框架里对照:Hooks 划禁区,Skills 定策略,MCP 扩边界——三者各管一层。

工具不是越多越好

每个 MCP 工具的名称和描述都要占上下文预算,工具太多会稀释 Claude 的选择准确率,还会拖慢响应。Claude Code 对 MCP 输出也有硬限制:超 10,000 Token 警告,超 25,000 Token 截断(MAX_MCP_OUTPUT_TOKENS 可调)——一条没加 LIMIT 的 SQL 就能把上下文冲垮。

选型纪律:只装当前工作流确实需要的服务器,定期用 claude mcp list 盘点,用不到的删掉。 另外先想想是否真的需要 MCP——很多"查文档""跑脚本"类需求,一个带脚本的 Skill 更便宜。

安全:信任边界在哪

MCP 让 Claude 能直接操作外部系统,风险随能力一起放大。三层防御:首次连接强制交互审批(无法绕过)→ 有副作用的工具调用二次确认 → 远程服务器用 OAuth 2.0 而非长期静态密钥。

三类已知攻击面:

  • 提示注入:服务器返回的数据里可以夹带"忽略之前所有指令"这类恶意内容,污染 Claude 上下文。
  • 权限组合滥用:单个工具看着无害,"读文件 + 发邮件"组合起来就是数据外泄通道。
  • 冒名顶替:恶意工具伪装成合法工具的名称与描述诱导调用。

评估第三方 MCP 服务器和评估 npm 包是一回事:看来源(官方命名空间还是个人)、维护活跃度、下载量、口碑。数据库一律只读账号,密钥一律环境变量注入。


🧭 业界视角(书外补充)

  • Simon Willison:直言 "Claude Skills are awesome, maybe a bigger deal than MCP"。他的理由是 Skills 有两个 MCP 给不了的性质——发现(Claude 自己判断何时加载,不常驻上下文)和确定性(脚本产出一致结果)。很多人用 MCP 做的事,一个带脚本的 Skill 更便宜、更稳。这与书中"厨房与菜谱"的框架一致,但立场更激进:默认先试 Skill,确实需要实时外部数据/操作外部系统时才上 MCP。
  • Vercel 团队:删掉 80% 的 Agent 工具后,流程更精简、Token 更省、响应更快。这是"工具越多越好"直觉的直接反证——每个工具描述都在和别的工具争夺模型的注意力,工具列表是要主动做减法的资产,不是收藏夹。
  • Anthropic 官方上下文工程指南:上下文是稀缺资源,性能随填充度衰减。MCP 工具定义常驻上下文这一点,正是它相对 Skills(渐进披露)的结构性劣势,装服务器之前先算这笔账。

🔗 知识网络