189、MCP(Model Context Protocol)详解与实战 189、MCP(Model Context Protocol)详解与实战上周调一个内部AI工具链,日志里反复出现“context window exhausted”,我第一反应是prompt写太长,把token上限顶爆了。查了半天才发现,罪魁祸首不是用户输入,而是我那套工具链里挂了五个不同的数据源插件——每个插件都自作主张往上下文里塞了整整一屏的JSON schema。更离谱的是,这些插件之间互相不知道对方存在,同一个文件被三个插件分别读了一遍。那一刻我意识到,MCP这玩意儿不是锦上添花,是刚需。MCP的全称是Model Context Protocol,简单说就是给大模型和外部工具、数据源之间定的一套“USB-C接口”协议。你不需要为每个工具写一套自定义的适配代码,只要工具实现了MCP server,模型端用MCP client就能统一对话。核心概念就三个:server、client、以及它们之间跑的protocol。Server负责暴露资源(resources)、工具(tools)、提示词(prompts),Client负责跟server握手、发现能力、然后代表模型去调用。底层传输默认走JSON-RPC over stdio,也可以改成SSE或WebSocket,后面细说。先讲一个最容易踩坑的点:很多人以为MCP是“模型直接调工具”,其实不是。模型本身不直接发MCP请求,是你的应用代码——也就是MCP client——替模型去调server。整个流程是:模型输出一个意图(比如“查一下杭州今天气温”),你的client把这个意图解析成工具调用请求,发给MCP server,server执行完把结果返回,client再把结果塞