MCP的官方注册库已在2026年9月突破3万个server,SDK月下载量接近5亿次,ChatGPT、Gemini、Copilot全线支持。但另一面:97.1%的工具描述存在质量缺陷,连4个常见server就能吃掉10%的上下文窗口,2025年7月一次全网扫描发现1862个裸奔在公网的MCP服务。这篇拆清楚MCP的能力模型、各客户端配置、四个致命安全坑、选型纪律和一份上线检查清单,与前两篇AGENTS.md、SKILL.md拼成完整的三层架构。
关键词:MCP、Model Context Protocol、AI Agent、工具集成、tool poisoning、上下文工程、Claude Code、Cursor
一、三层架构的最后一块
前两篇讲过两件事:AGENTS.md告诉Agent”你是谁、这个仓库怎么运作”,SKILL.md教它”这类事该怎么做”。还差一层——让它能”动手”。
没有工具层的Agent,本质上是个只会说话的顾问。它能给你写出完美的重启命令,但真正按下回车的还是你。MCP补的就是这一块:一个开放协议,定义了模型怎么发现工具、怎么调用工具、怎么拿到结果。2024年11月Anthropic发布1.0版本时,社区给它的定位是”AI世界的USB-C”——当时听着像营销话术,现在看数据已经坐实了:
| 指标 | 数据 | 时间点 |
|---|---|---|
| 官方注册库server数 | 30375个(5月约9650,三个月翻3倍) | 2026年9月10日快照(devtoolhub) |
| SDK累计下载 | TypeScript和Python双破10亿,月下载近5亿 | 2026年7月 |
| GitHub上mcp-server主题仓库 | 超过15900个 | 2026年5月 |
| 主流客户端原生支持 | ChatGPT、Claude、Cursor、Gemini、Copilot、VS Code、Windsurf等 | 持续扩展 |
2026年7月的最新规范(2026-07-28)干了一件大事:把MCP从有状态双向协议改成无状态请求/响应模型。这不是技术洁癖——有状态会话在负载均衡后面是灾难(后面细讲),AWS、Cloudflare、微软全在这版发布里表态支持。Honeycomb甚至披露他们20%的月度交互查询已经是Agent发起的。
但采用速度跑在成熟度前面。arXiv在2026年2月发表了一份覆盖856个工具、103个server的实证研究(工具描述质量退化分析),给出泼冷水的数字:97.1%的工具描述至少存在一种”坏味道”,56%连用途都说不清楚。工具是接上了,Agent看得懂吗、敢不敢用、会不会被骗,一概没有保障。
这篇就按”接什么→怎么接→接多少→怎么防”的顺序拆,先看清协议背后的能力模型。
二、能力模型:不只是”工具”
很多人把MCP等同于”给AI装函数库”,这只是三成事实。协议里server可以暴露三类能力:
| 能力 | 是什么 | 典型场景 |
|---|---|---|
| Tools | 模型能执行的函数,会改变状态 | 建工单、发消息、执行迁移 |
| Resources | 可读取的上下文数据 | 文件、API响应、数据库记录 |
| Prompts | 预置的提示词模板/工作流 | 标准化runbook、评审流程 |
另外client侧还有三个反向能力:sampling(server反过来请求模型推理)、roots(限定文件访问边界)、elicitation(server在执行中向用户要结构化确认——2026-07-28里配无状态协议后终于好用了,Supabase第一时间用它做”删库前再确认一次”)。
选型时用得上这个区分。你要的是”让Agent能做事”,大多数时候Tools就够;要”让它读到私有文档”,Resources更合适,还能避免误调用;Prompts最容易被忽略,但把团队的固定流程做成MCP prompts,等于在不支持SKILL.md的客户端里也享受技能机制。
三、接入:各客户端的实际操作
3.1 Claude Code / Claude Desktop
本地server走stdio,配置在项目根目录.mcp.json(提交到Git全组共享):
远程server走流式HTTP,一行声明即可:
注意一个细节:token这种敏感值不要明文提交。.mcp.json里放env扩展引用,真实凭据走环境变量。
3.2 Cursor
配置入口是~/.cursor/mcp.json,格式与Claude兼容,一份配置基本可以两边抄:
一个前提要记住:Cursor 1.3起强制要求MCP配置变更必须重新审批(背景见第四节的rug-pull事故CVE-2025-54136),别试图用脚本静默改同事的配置文件——改了也过不了审批,还容易被当成攻击行为。
3.3 多客户端共用:配置放谁手里
团队里Claude Code和Cursor混用时,仓库里放一份.mcp.json,Cursor侧手动对齐,或者用symlink保持一份事实源。国内Codex CLI和Gemini CLI走AGENTS.md体系,MCP工具列表配置在各自的settings里,同一个server三处引用即可,别维护三份不同定义。
registry数据里55%的server是纯远程HTTP,这是2026年最推荐的形态:不用装包、不怕本地依赖腐坏、升级在server端完成。本地stdio模式继续占39%,适合数据不出内网的场景。
| 部署形态 | 占比 | 适用 |
|---|---|---|
| 远程(streamable-http) | 54.8% | SaaS服务、官方server、跨团队复用 |
| 本地(stdio) | 38.9% | 内网数据源、个人开发机 |
| 两者都提供 | 4.9% | 大型服务 |
四、四个致命坑(每一个都有CVE或真实事故)
坑一:工具投毒(Tool Poisoning)
MCP的机制是把所有工具的description直接注入模型上下文,模型按字面理解并执行。Invariant Labs在2025年4月演示了完整攻击链:一个恶意trivia游戏server,在自己的工具描述里藏指令,操纵Agent从同会话里的WhatsApp server外泄全部消息历史——不需要用户确认,不触发告警,传输层加密完全无效,因为外泄走的就是Agent的合法权限。
更贴近生产的是Supabase那次:客服Agent处理用户提交的工单,工单内容里被埋进了注入指令,Agent被诱导把内部integration token写进了工单回复。
防御要点,四条一线:
- server维护允许清单,拒绝动态注册新工具
- 工具description做hash校验,变更即告警——rug-pull和投毒同源,这一招同时管两个
- 工具输出过secret格式过滤器,
sk-、ghp-这类前缀直接拦 - 跨server调用走显式策略层,不依赖模型”自觉”
第2、3条最容易被忽略:工具返回的大段文本里如果混进了sk-xxx、ghp_xxx这类凭据格式,Agent会原样放进下一个上下文——下一段对话里它就可能把这串字符发给任何工具。
坑二:Rug Pull(工具定义偷偷被换)
MCP规范本身没有”工具定义变更需要重新审批”的机制。恶意server第一天提供良性工具骗你授权,之后悄悄换掉工具行为,每个后续会话都照常执行。
这不是理论风险:CVE-2025-54136,Cursor的MCPoison漏洞——攻击者向共享仓库提交一个无害的MCP配置,骗过你的审批,之后在后续提交里换成恶意载荷,且后续会话不再弹任何确认。Cursor 1.3版本的修复就是加回了”任何配置变更(哪怕空格)都必须重新批准”。
实操结论: 装第三方server前看两样东西——有没有开源仓库(registry里37%的remote-only server连代码都不给,这种不要碰)、最近一次更新时间(36%的server三个月没更新,而协议本身在2026年7月发生了重大变更,旧server很可能与新客户端协议不兼容)。
坑三:裸奔在公网的server + STDIO注入
2025年7月全网扫描:1862个MCP server直接暴露公网且无需认证就能列出全部工具。其中有个CVSS 9.4的真实漏洞(CVE-2025-49596)——一个没加认证的MCP Inspector实例,任何人都能触发任意命令执行。
更阴的是2026年4月OX Security披露的系统性缺陷:官方SDK的STDIO传输层在处理配置参数时,来自用户/包注册表/网络配置的数据不做充分校验就直接拼进进程启动参数。这是设计默认值,被官方确认为”intentional”,Anthropic明确表示不改协议,修复责任落在每个下游开发者的头上。受影响的SDK贯穿超1.5亿次包下载。
防御要点: MCP server进程放进独立容器,切掉host凭据访问;所有来自不可信来源的STDIO配置参数走允许列表校验;remote server一律上OAuth 2.1,别用全局API key糊弄。
坑四:上下文预算爆炸
Quandri Engineering实测:接入Linear、Notion、Slack、Postgres这4个server,所有工具定义合计吃掉模型上下文窗口的10.5%。200K窗口的模型,光工具元数据就占21000 token。另一组数据(MCP Directory对520个server的2026年9月14日统计):总共暴露6882个工具,中位数10个——跑5个普通server就逼近Cursor约40个工具的预算线。
再叠加一个研究发现:研究显示工具描述超过15个后,function calling的解析延迟显著上升。也就是说,装多了不只是贵,还慢。
防御手段按性价比排序:
- 工具数量超过10个时启用按需检索(Tool Search / Deferred Loading)——Claude Code 2025年末推出后实测工具定义的上下文消耗降85%以上,这是单项收益最大的优化
- 同功能的server只留一个,Git/Memory/Filesystem这类参考server别和第三方重复装
- 不常用的重型server改成”手动开启”——session级别启用更好
- server侧加返回条数limit,别让一条SQL查询把100万行结果塞进上下文
五、哪些工具真的值得装
registry里30375个server有水分:62%只发布过一个版本,41%还停在0.x/1.0首发版,最大的个人发布者一人贡献了1505个”Acre换公顷”级别的玩具工具。真金还是要用star和真实部署来筛。
| server | 用途 | 备注 |
|---|---|---|
| GitHub官方 | issues/PR/action全流程操作 | 质量标杆,注意配token控制限流 |
| Chrome DevTools MCP | 浏览器自动化+页面调试 | 前端Agent必备 |
| Filesystem | 受限文件访问 | 配roots限定工作目录 |
| Memory (Knowledge Graph) | 跨会话知识留存 | 配合AGENTS.md形成记忆闭环 |
| Postgres/Supabase | 数据库只读查询 | 高风险,务必只读账号 |
| Context7 | 库文档即时检索 | 缓解LLM训练截止导致的旧API幻觉 |
原则和前两篇一脉相承:按”AI不知道就会出错”的标准装。能一次装好就要装的,是那些每次会话都需要、但手动配置繁琐的数据源——比如内部数据库schema、关键服务的git状态。锦上添花的,能不装就不装。
六、生产上线检查清单
如果MCP已经从”玩玩”变成”接进业务”,这份清单按优先级排:
| 类别 | 检查项 | 优先级 |
|---|---|---|
| 认证 | 所有remote server走OAuth 2.1或Bearer token,无全局宽权限key | 🔴 必须 |
| 授权 | 每个工具声明独立权限scope,高危操作单独scope | 🔴 必须 |
| 沙箱 | server进程运行在独立容器,无host凭据访问 | 🔴 必须 |
| 会话 | 有状态工具的状态外置(Redis),会话TTL≤30分钟 | 🔴 必须 |
| 工具管控 | 允许清单,禁止动态注册;description变更告警 | 🔴 必须 |
| 输出过滤 | 秘密格式字符串过滤,工具输出不直接透传 | 🟡 推荐 |
| 观测 | 工具调用结构化日志(tool_name/耗时/session_id),error率>5%告警 | 🟡 推荐 |
| 成本 | 工具定义token消耗已测量,>10个工具时启用deferred loading | 🟡 推荐 |
七、结语
把系列三篇连起来看:AGENTS.md把项目事实写进静态文件,Skills把流程封装成可渐进加载的目录,MCP则把活络的外部工具接进来。三层都齐了,Agent才从”聊得来”变成”干得动”。
但MCP这一层有个前两篇没有的性质:它引入的是你仓库之外的第三方工具链。AGENTS.md写错顶多误导Agent,MCP接错一个server,可能直接把token和数据送出去。所以这一层的纪律必须是安全优先——能远程的不本地装,能开deny-by-default的不设宽权限,37%连代码都不公开的server一分钱信任都不该给。
一个建议想清楚的问题:MCP server在你的架构里到底算什么?如果答案是”另一个内部服务”,那认证、审计、限流、可观测性的标准就该一视同仁。淡化”AI工具”的特殊身份,按普通基础设施加权治理,是2026年所有生产化团队已经得到的共识。
MCP官方注册库2026年9月突破3万个server,本文给出能力模型、各客户端接入配置、四个真实安全事故与防御、选型纪律和生产上线检查清单。
