MCP这个词,最近几乎天天都能在技术群和社区里看到。尤其是身边的朋友开始用 Codex、Cline、VS Code Copilot 去连接 Figma、蓝湖、Playwright 这些工具之后,一个声音越来越响:MCP 到底是什么协议,为什么谁都在聊,它和之前那些 Agent 框架里的“技能”又有什么区别?作为这个系列的第六篇,我不想再去复述“什么是 MCP”这种概念,而是想把它从协议理解一路落到实际接入,把 Skill 与 MCP 的边界、常见专业软件的 MCP server、Java/Spring 生态接入方式,以及我自己踩过的坑,都掰开揉碎讲一遍。这篇文章适合已经在用或准备用 AI Agent 的人,也适合那些被“MCP server 注册不上”折磨的开发者。
1. 从“模型会调用工具”到“工具接入标准化”:MCP 到底解决了什么问题
1.1 一个老问题:每个 Agent 框架都在重复造轮子
在 MCP 出现之前,想让大模型调用外部工具,基本上每个框架都要自己写一套 function calling 的逻辑。OpenAI 有 function calling,LangChain 有自己的一套 tools 抽象,AutoGen 又有它的 tool executor。直接后果就是:同一个工具,如果要在不同的 Agent 框架里用,就要写好几套适配代码。
我当时做项目的时候最头疼的就是这个。模型要查数据库,我先给 OpenAI 写一个 query_database 函数描述;后来切到 LangChain,又要包装成 @tool;再后来团队里有人想用 Cline,又得重新配置一遍。每次切换都是体力活,而且不同框架的参数处理方式还不一样,有些模型对参数类型很敏感,传错一个嵌套对象就崩。
MCP(Model Context Protocol)本质上就是把“模型调用工具”这件事标准化了。它定义了一个通用的客户端-服务器协议,让各种 AI 应用(宿主)可以通过同一种方式连接外部工具和数据源。你可以把 MCP 理解成 USB-C:以前每个设备都有自己的充电口,现在设备端只要做一个标准口,任何支持这个协议的充电器都能用。
具体到架构上,MCP 体系里有几个概念:
- Host:最终用户面对的 AI 应用,比如 Codex、Cline、Claude Desktop、VS Code Copilot。
- Client:运行在 Host 内部的 MCP 客户端组件,负责和 Server 通信。
- Server:暴露工具给模型使用的独立程序,可以是一个本地进程,也可以是一个远程服务。
- Tool / Resource / Prompt:Server 暴露给模型的三类能力原语。
Tools 是让模型执行一个动作(比如“打开浏览器”“执行一段 SQL”“调用设计稿接口”),Resources 是让模型读取一个数据源(比如读取某个文件、某个数据库表),Prompts 是预设的提示模板。现在大家讨论得最多的还是 Tools,因为它是让 Agent “动手做事”的关键。
1.2 协议层干了什么:请求、响应和工具描述
MCP 并不规定模型应该怎么推理,它只负责把工具清单发给 Host,然后把模型选中的调用转给 Server,再把结果传回来。这个过程看起来简单,但难点在于“标准”。
协议里有一个很关键的点,就是工具描述格式。MCP 用 JSON Schema 描述每个工具的入参,格式大概是这样的:
json复制{
"name": "query_order",
"description": "根据订单号查询订单信息",
"inputSchema": {
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "订单号"
}
},
"required": ["order_id"]
}
}
Host 启动后会把所有工具描述和系统提示一起塞给模型,模型在生成回答时判断“要不要调用某个工具”,然后输出一个工具调用指令。Host 收到指令后,通过 MCP 协议去执行对应的 Server 方法,再把返回值作为新的上下文喂回模型。
这个流程决定了 MCP 的很多特性:工具描述必须足够清晰,入参必须稳定,Server 响应必须快。如果 Server 很慢,模型等结果等到超时,整个对话体验就崩了。而且工具的命名和描述也要遵循“模型友好”的原则,不能用太模糊的语言,否则模型很容易选错工具。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Skill 和 MCP 的区别:AI Agent 社区最常问的边界问题
2.1 Skill 是“剧本”,MCP 是“接口”
后台和群里总有人问:Agent Skill 和 MCP 有什么区别?开个新项目到底应该用哪个?我刚接触时也纠结过,后来发现它们根本不是同一个层级的东西。
Skill(或 Agent Skill)一般指的是一组有结构的提示词、流程步骤和示例,目的是让模型在特定场景下“做得更好”。比如我写过一个“代码审查 Skill”,里面包含了审查的步骤、关注点、输出格式,以及“先读 diff 再读相关文件”这样的规则。Skill 改变的是模型的行为方式,它不直接连接外部系统。
M
