【MCP:七千字图文详解】从灵感闪现到生态确立,全链路解读与实战
目录
一、MCP 起源:灵感闪现
1.1 诞生背景:AI 集成的 “MxN 困境” 与开发者的现实痛点
1.2 灵感落地:从 LSP 到 MCP 的核心逻辑迁移
1.3 从原型到生态:黑客松验证与核心定位确立
二、MCP 理论:为 AI 装上 “操作现实的双手”
2.1 案例演示:MCP 的接入方式
(1)平台方式使用案例 -Agent 整合高德地图 MCP
(2)MCP Host 方式使用案例 - 整合高德地图 MCP
(3)MCP Host 方式使用案例 - 读&写 Excel MCP
2.2 概念界定:MCP 的核心定义
2.3 架构类型:MCP 对应的 CS 架构模式
2.4 传输机制:MCP 支持的三种数据传输方式
2.5 接口协议:MCP 关联的三种模块接口规范
三、MCP 实战:开发讲解
3.1 研发岗视角:如何实现&接入 MCP
(1)实现:MCP Server
(2)实现:AI 应用程序
(3)联调:AI 应用程序请求 MCP Server
(4)测试:MCP 检查器 inspector
3.2 算法岗视角:现有推理脚本如何接入 MCP
3.3 平台/中台视角:MCP 的开发和接入流程
四、MCP 推荐:Server / Hub
4.1 MCP Server
4.2 MCP Hub
五、MCP 应用:思考应用场景
一、MCP 起源:灵感闪现
📌 前言:想要讲好技术起源,我认为需要参考一手资料,尤其是作者亲自讲出的,才是可靠的,因此我参考了今年作者参加一家国外技术播客的采访,以及作者的个人社交账号
- 4月份 latent space 对于发明者的采访:
- 原视频:https://www.youtube.com/watch?v=m2VqaNKstGc
- 文字版:https://www.techflowpost.com/article/detail_25192.html
- 作者 David Soria Parra 的 X:https://x.com/dsp_
1.1 诞生背景:AI 集成的 “MxN 困境” 与开发者的现实痛点
MCP 诞生于 Anthropic 公司中一位工程师的“灵光一闪”,Anthropic 是国外一家 AI 独角兽公司,目前约有 1300 名员工,市值约 1700 亿相当于国内的小米公司,这家公司的知名产品包括编程能力很强的 Claude 3.7 大模型、Claude Desktop。如此有规模的公司,会让我们误以为 MCP 是公司战略规划的产物,然而实际情况并不是这样,MCP 在此公司的诞生仅是一个巧合,但对于整个行业来说,MCP 这类协议的诞生又是个必然。
MCP(Model Context Protocol,模型上下文协议)的诞生并非宏大战略规划的产物,而是 Anthropic 团队成员在解决实际开发痛点时,从现有技术范式中获得灵感的 “灵光一闪”。
2024 年 7 月,Anthropic 工程师 David Soria Parra 刚加入团队不久,便陷入了一个典型的效率困境:他需要在 Claude Desktop 和 IDE 之间频繁切换,甚至手动复制内容以实现 “AI 应用 + 工具” 的组合使用。这种操作不仅繁琐,更暴露了当时 AI 生态的核心问题 ——“MxN 集成难题”。

这一困境并非首次出现。在开发者工具领域,早年多种 IDE(如 VS Code、JetBrains、Vim)与编程语言(如 Java、Python、C++)的适配,也曾面临同样的 “MxN 难题”—— 直到 LSP(Language Server Protocol,语言服务器协议) 的出现。LSP 通过定义一套通用通信标准,让 “编辑器 - 语言” 的交互从 “每个编辑器适配所有语言” 的 M×N 模式,简化为 “编辑器实现 LSP 客户端、语言工具实现 LSP 服务器” 的 M+N 模式,彻底重塑了代码编辑生态。
当时 Anthropic 内部正推进与 LSP 相关的开发工具项目,虽进展有限,但这一技术储备让 David 的想法有了落地基础。David 正是从这一成熟范式中获得了关键启发:为何不能设计一套类似的协议,解决 AI 应用与外部扩展的集成问题?
📌 附:采访文字版部分
1.2 灵感落地:从 LSP 到 MCP 的核心逻辑迁移
David 将这一想法分享给同事 Justin Spahr-Summers 后,两人迅速达成共识,并开始系统性地将 LSP 的核心设计逻辑迁移到 AI 场景
例如下面是 LSP 的一个 Java 实现版本 Eclipse JDT LS

两套协议的灵感迁移

1.3 从原型到生态:黑客松验证与核心定位确立
MCP 的早期开发节奏极快,从 2024 年 7 月想法诞生,到 9 月完成首个原型(包含 Claude Desktop 客户端、本地文件系统服务器、Python SDK),仅用了一个半月。为验证协议的实用性,两人在 Anthropic 内部发起了一场黑客松,结果远超预期 —— 同事们基于 MCP 快速搭建出各种创新原型:控制 3D 打印机的工具服务器、实现跨对话记忆的资源服务器、支持代码生成的提示模板服务器。这些原型不仅证明了 MCP 的灵活性,更让团队明确了其核心定位:“AI 上下文的通用接口”。此时的 MCP 已具备三大关键特征,为后续成为行业标准埋下伏笔:
- 极简入门门槛:开发者只需 100-200 行代码,即可基于 Python/TS SDK 搭建一个 MCP 服务器(如文件查询服务器),且支持通过 AI 辅助编码(将 SDK 片段传入 Claude,即可生成基础代码);
- 完整工具链支撑:初期便配套了 MCP Inspector(用于调试通信流量)、Claude Desktop DevTools(用于管理服务器连接),甚至支持通过 CLI 命令快速添加扩展(如 “claude mcp add brave-search” 一键接入搜索能力);
- 开放生态基因:尽管由 Anthropic 发起,但 MCP 从设计之初就规避了 “厂商锁定”—— 协议规范完全公开,SDK 支持多语言(Python、TS、Rust),且允许第三方修改扩展。
2024 年 11 月,MCP 正式对外发布,初期虽仅获得 Cursor、Cognition 等少数 AI 应用支持,但随着 2025 年 2 月 AI Engineer Summit 上 “官方注册中心发布”“协议深度解析” 等内容的曝光,以及近 300 万次的研讨会视频观看量,MCP 迅速引爆生态 —— 从普通开发者用它远程控制汽车买面包,到 OpenAI、微软、阿里云等大厂纷纷接入,最终成为 AI Agent 领域的事实标准。


附:
- 可用在这个网站查看 GitHub 项目的 Star 趋势图:https://www.star-history.com/#modelcontextprotocol/modelcontextprotocol&type=date&legend=top-left
- MCP 中文论坛:https://mcpcn.com/
下一版本 MCP 将于不久后的 2025 年 11 月 25 日发布,推出的改进——包括异步操作、更强的可扩展性、服务器发现和标准化扩展——将有助于 MCP 成为生产 AI 集成更强大的支柱。详情见:https://blog.modelcontextprotocol.io/posts/2025-09-26-mcp-next-version-update/
作者已开始“MCP 带货” https://x.com/dsp_

二、MCP 理论:为 AI 装上 “操作现实的双手”
2.1 案例演示:MCP 的接入方式
(1)平台方式使用案例 -Agent 整合高德地图 MCP
User Prompt :现在从北京西二旗,到北京南站,有什么交通方案,分别大概多久,到南站后附近有什么好吃的,另外晚上找个住的地方

(2)MCP Host 方式使用案例 - 整合高德地图 MCP
https://lbs.amap.com/api/mcp-server/gettingstarted
{"mcpServers": {"amap-maps-streamableHTTP": {"url": "https://mcp.amap.com/mcp?key=在高德官网上申请的key"}}
}




(3)MCP Host 方式使用案例 - 读&写 Excel MCP

{"mcpServers": {"amap-maps-streamableHTTP": {"url": "https://mcp.amap.com/mcp?key=xx"},# 此处"excel": {"command": "npx","args": ["--yes", "@negokaz/excel-mcp-server"],"env": {"EXCEL_MCP_PAGING_CELLS_LIMIT": "4000"}}}
}


User Prompt: 这个excel里面是什么内容:/Users/zlc/Desktop/work/file/code/algo/.idea/excel/工作簿1.xlsx


User Prompt: 计算这个 excel 中每个人的平均分、最高分、最低分、之后的提分建议,并且追加在后续的列:/Users/zlc/Desktop/work/file/code/algo/.idea/excel/工作簿1.xlsx



2.2 概念界定:MCP 的核心定义
📌 MCP 在大模型对话中的哪个环节? GPT 对话
MCP(模型上下文协议)是一种用于将 AI 应用程序 连接到外部系统的开源标准。借助MCP,像Claude或ChatGPT这类 AI 应用程序 能够连接到数据源(例如本地文件、数据库)、工具(例如搜索引擎、计算器)和工作流(例如专门的提示词),从而使它们能够获取关键信息并执行任务。可以把MCP想象成 AI 应用程序 的USB-C接口。就像USB-C提供了一种标准化的电子设备连接方式一样,MCP也为人工智能应用程序与外部系统的连接提供了标准化方式。


2.3 架构类型:MCP 对应的 CS 架构模式
MCP 采用 客户端-服务器(CS)架构,分三个角色:
- MCP Host:是协调和管理一个或多个 MCP 客户端的 AI 应用程序,例如 Claude Desktop、VScode-Cline 插件、Cursor、Trae
- MCP Server:为MCP客户端提供上下文的程序,可以部署在本地或远程
- MCP Client:与其对应的 MCP 服务器保持一对一的专用连接,可以理解为它是这俩方法的直接调用方 tool/list、tool/call
2.4 传输机制:MCP 支持的三种数据传输方式
MCP 协议使用 JSON-RPC 来编码消息,MCP 协议目前定义了三种传输机制用于客户端-服务器通信:
- Stdio:通过标准输入和标准输出进行通信
- SSE:通过 HTTP 进行通信,支持流式传输(协议版本 2024-11-05 开始支持,即将废弃)
- Streamble HTTP:通过 HTTP 进行通信,支持流式传输(协议版本 2025-03-26 开始支持,用于替代 SSE)
2.5 接口协议:MCP 关联的三种模块接口规范
- 工具:AI 应用程序可以调用以执行操作的可执行函数(例如文件操作、API 调用、数据库查询)
-
- 资源:向 AI 应用程序提供上下文信息的数据源(例如文件内容、数据库记录、API 响应)
-
- 提示:可重复使用的模板,有助于构建与语言模型的交互(例如,系统提示、少量示例)
-
三、MCP 实战:开发讲解
3.1 研发岗视角:如何实现&接入 MCP
以 Spring AI 框架为例,逻辑如下
(1)实现:MCP Server



(2)实现:AI 应用程序


(3)联调:AI 应用程序请求 MCP Server

(4)测试:MCP 检查器 inspector
是用于测试和调试 MCP Server 的开发人员的工具,目前 Postman 也支持了 MCP Server 的调试

3.2 算法岗视角:现有推理脚本如何接入 MCP
假设现有脚本如下:
class ChatBot:def __init__(self):# 初始化大模型(如LLM)self.llm = init_llm() # 你的大模型初始化逻辑def chat(self, user_input):# 1. 模型理解用户输入prompt = "系统提示词..." + f"问:{user_input},请回答。"# 2. 模型生成回应response = self.llm.generate(prompt)return response# 使用示例
bot = ChatBot()
print(bot.chat("今天北京有什么新闻?"))
接入 MCP 可使用 FastMCP
import json
from typing import Optional, Dict, Any
from fastmcp import Client # 导入 FastMCP 客户端# 初始化大模型
llm = LLM(...)# 初始化 MCP 客户端(连接到实际的 MCP 服务器)
client = Client("https://api.example.com/mcp/server/...")# 主对话流程
def chat():# 用户输入user_input = "今天北京有什么新闻?"# 步骤1:获取 MCP 服务器可用工具(用于构建提示词)tools = await client.list_tools()tools_desc = "\n".join([f"- {tool.name}:{tool.description},参数:{tool.inputSchema}"for tool in tools.tools])# 步骤2:构造提示词并调用大模型system_prompt = f"""你可以调用以下工具解决用户问题:{tools_desc}若需要调用工具,返回JSON格式:{{"tool": "工具名", "params": {"参数键值对"}}}若无需工具,直接返回自然语言回答。"""prompt = f"{system_prompt}\n用户问题:{user_input}"llm_result = await llm.generate(prompt)# 步骤3:解析大模型结果,判断是否需要调用工具tool_call = parse_llm_response(llm_result)if tool_call:# 步骤4:调用 MCP 工具tool_name = tool_call["tool"]params = tool_call["params"]tool_result = await client.call_tool(tool_name, params)# 步骤5:结合工具结果生成最终回答final_prompt = f"""用户问题:{user_input}工具返回结果:{tool_result}请结合结果用自然语言回答。"""final_answer = await llm.generate(final_prompt)print(f"最终回答:{final_answer}")else:# 无需调用工具,直接使用模型回答print(f"最终回答:{llm_result}")# 解析大模型结果的工具函数
def parse_llm_response(response: str) -> Optional[Dict[str, Any]]:"""解析大模型输出,判断是否需要调用工具返回格式:{"tool": "工具名", "params": {...}} 或 None(无需工具)"""# 尝试解析为工具调用指令tool_call = json.loads(response.strip())if isinstance(tool_call, dict) and "tool" in tool_call and "params" in tool_call:return tool_callreturn None
3.3 平台/中台视角:MCP 的开发和接入流程
平台侧可以加一层适配层,让现有的 RPC 或 HTTP 可以无缝部署为 MCP Server

四、MCP 推荐:Server / Hub
4.1 MCP Server
下面是些有代表性的 MCP Server
- 文件系统 filesystem:在为大型语言模型(LLM)和 AI 助手提供对本地文件系统的安全、受控访问
- 数据库 mysqldb-mcp-server:支持与 MySQL 数据库进行安全交互
- 高德地图 amap-maps:支持多种位置服务,包括地理编码、天气和距离测量、交通方式、位置附近兴趣点
- 网页数据采集 Firecrawl:企业级网页数据采集服务器,能够为大型语言模型(LLM)提供强大的网页抓取能力
- Github:提供与 GitHub API 无缝集成的服务器,从 而实现面向开发人员的高级自动化工具和交互功能
- 记忆图谱 memory:使用本地知识图谱的持久内存的基本实现
- 控制台 desktop-commander:在计算机上无缝执行终端命令和管理流程
4.2 MCP Hub
| Hub | 收录的 MCP 服务器数量 |
| MCP SO | 16946 台 |
| MCP Market | 17106 台 |
| Smithery AI | 2446 台 |
| Model Scope | 5621 台 |
| Mcp World | 35233 台 |
| awesome-mcp-servers | / |
| ... | ... |
五、MCP 应用:思考应用场景
首先聊 MCP 应用场景前,先说说大模型的应用场景,我认为分下面几类:
-
客服
-
智能客服
-
社交陪聊
-
知识管理
-
-
内容理解
-
审核风控
-
视频分析
-
直播分析
-
商品分析
-
-
洞察预测
-
销售洞察
-
数据分析
-
投放管理
-
舆情分析
-
...
对于 MCP 来说,需要看自己公司的实际情况,能否在上面做功
- 在靠近用户端的团队,MCP 有很多可以做功的场景,如接入高德 MCP,可以配合大模型集成许多“周边兴趣”、“吃喝玩乐” 等特色 AI 业务
- 各种大模型应用的场景,接入 MCP 扩展大模型能力边界,如由人的搜索变为模型接入搜索引擎 MCP,降低人力成本
- 对于中后台团队,MCP 的应用,我有两种相反看法
- 👼 看:开发一些解大模型判断失误 case 的小模型-->提供 mcp/插件 接口-->绑定到 Agent-->大模型自己的分析+小模型阈值参考-->补短版
- 👹 看:中后台业务,前置链路成熟且丰富,适合前置先采集完上下文,再把信息给到大模型,而不是把“重担”压在 Agent,提供各种工具,让 Agent 来收集
- 也欢迎大家提些想法~
📌 附加一个有意思的问题:如果一个 MCP 既是服务端,本身又作为一个客户端调用其他 MCP,最后流转到自身,形成有向循环图♻️该怎么办?








