MCP(Model Context Protocol,模型上下文协议)被称作「AI 应用的 USB-C 接口」,正在让大模型与数据库、工具、第三方 API 之间的对话像插拔数据线一样简单。本文按认知顺序拆解 MCP 的演进、原理、落地与调试细节,帮助你快速评估「何时该用、该怎么用」。阅读约需 6–7 分钟,可收藏后按需跳读。
MCP 是什么?
一句话概括:
MCP=「统一接口 + 协议规范」,让任何 AI 客户端能以最小成本动态读取本地或云端数据源、调用外部工具,而不需要重复对接每家平台的 SDK。
关键角色一目了然:
- MCP Host —— 使用大模型的应用( Claude 桌面、Cursor、自定义 Bot)。
- MCP Client —— 与单个 MCP Server 建立 1 对 1 长连接。
- MCP Server —— 按协议封装具体能力,例如「查询 MySQL」「检索 Notion」。
- Local Data Source / Remote Service —— 真正提供数据或算力的服务。
👉 想直接体验 MCP 的「即插即用」快感?点这里解锁示例仓库中的实战脚本
从 LLM → RAG → Agent → MCP 的四步进化
了解过去,才能判断未来。过去 30 个月,AI 系统经历了四次关键升级:
- 传统大语言模型
GPT-3.5 时代只拥有静态语料,无法回答“今天天气”。 - RAG 检索增强生成
引入外部知识库,先在向量库内检索,再让 LLM 生成答案,幻觉明显降低。 - AI Agent 系统
出现「代理调度器」:一个主 Agent 把任务拆分给「研究 Agent」「执行 Agent」等子节点,完成多步复杂流程。 - MCP 模型上下文协议
把「代理 → 工具 → 数据源」的对接方法标准化,多个 MCP Server 可同时注册到同一个 Host,实现真正的生态复用。
LLM、Prompt、RAG、Agent 到底差在哪?
| 名词 | 一句话记忆口诀 | 与 MCP 的衔接点 |
|---|---|---|
| LLM | 「超大文字接龙机」 | MCP Server 内部仍用 LLM 做理解与生成 |
| Prompt | 「给模型的任务说明书」 | MCP Host 把用户自然语言转译成标准 JSON Prompt |
| RAG | 「边查边答」 | MCP 定义统一的 /search 接口,一次实现多处复用 |
| Agent | 「会拆任务的机器人班长」 | MCP Client 直接调用 Agent 暴露出的 Tool,无需了解内部编排逻辑 |
MCP 的 3 种通信模式对比
| 模式 | 关键词 | 场景 | 优 / 劣 |
|---|---|---|---|
| stdio | 本地管道 | 桌面脚本、命令行工具 | 简单极速,但跨机器即失效 |
| SSE | 单向推送 | Web 仪表盘、实时日志 | 连续流式推送,节省轮询 |
| Streamable HTTP | 可断点续传 | Chatbot 逐句打字效果 | 兼容 CDN,兼容 REST,上手成本最低 |
开发者可根据「是否部署在浏览器」「是否需要双向交互」做技术选型。标准库默认支持三种协议的配置切换。
Spring AI 实战:三步把 MySQL 变成 MCP Server
- 环境与依赖
JDK 17+,spring-ai-starter-mcp-server-webflux最新版即可。 声明 Tools
用注解@ToolBean标识类,@Tool标注方法,框架自动把方法描述转成 JSON Schema,被 MCP Host 动态感知。@Tool(name = "runSql", description = "查询数据库") public List<Map<String,Object>> runSql(@ToolParam(description="SQL查询语句") String sql){ // 业务校验、防止写操作 return jdbcTemplate.queryForList(sql); }- 启动并观察
本地双击 jar,日志出现MCP Server listening on port 8080;用 MCP Inspector 可视化调试即可。
👉 跟着项目模板跑一遍,只需 10 分钟即可暴露自己的数据库工具
主流 MCP 客户端配置速查
| 客户端 | 推荐人群 | 配置路径示例 |
|---|---|---|
| Claude Desktop | 想「零代码」体验者 | ~/claude_desktop_config.json |
| Cursor | VS Code 深度用户 | .cursor/mcp.json |
| Trae | 国内团队,需中文界面 | .trae/mcp.json |
| Cline | JetBrains 系 IDE | ~/.cline/mcp.json |
通用格式只需指定四行 JSON:
{
"mcpServers": {
"my-mysql": {
"command": "java",
"args": ["-jar", "/absolute/path/spring-ai-mcp-mysql.jar"]
}
}
}断电重启 IDE 即生效,无需二次认证。
FAQ:关于 MCP 的高频疑问一次说清
Q1:MCP 与 Function Calling 的关系?
A:Function Calling 更像「一次性」工具调用;MCP 则把工具描述成服务长期暴露,便于任何 Host 发现与复用。
Q2:同一个 Server 能被多个 Host 同时使用吗?
A:可以。MCP Server 维持无状态架构,横向扩容即可。
Q3:需要担心端口暴露风险吗?
A:生产环境建议用反向代理加鉴权中间件,或使用 stdio 模式只开放本地。
Q4:我想同时对接 10 多个工具,会不会算力爆炸?
A:MCP Host 启动时是按需调用,工具未命中则零消耗;此外可给 Server 设置单个端点的 CPU 限制。
Q5:已有企业 API 如何迁移?
A:把 API 封装成 MCP Server,仅多一条 describe endpoint 的 Schema 配置;老接口无感兼容。
实践效果:一句话掉数据库的时代已来
配置完成后,用户直接在 Claude 桌面里问:
“帮我查一下最近 7 天注册量总和”。
Claude 会解析自然语言 → 调用 MCP Server 的runSql→ 回传结果 → 最终写成中英双语的报告,中途无须写一句 SQL。
写在最后
MCP 把 LLM、RAG、Agent、Prompt Engineering 的精华打包成了共享协议,就像当年 USB-C 统一了个人电子设备的接口。无论你是独立开发者还是企业架构师,现在正是最友好的入局窗口:代码量少、社区活跃、生态资源集中。保持好奇,动手体验,下一条让 AI 直接帮你写财报的指令,也许就藏在你自己的 MCP Server 里。