随着 Agent 成为 LLM 应用的核心形态,MCP(模型上下文协议)作为 “连接外部资源的统一桥梁”,其重要性日益凸显。本文将围绕 MCP 的核心架构、组件功能、实战开发三大模块展开,从 “为什么需要 MCP” 到 “如何动手搭建”,层层递进,帮你快速掌握这一提升 Agent 开发效率的关键技术。
1、MCP 架构设计全剖析
第一、为什么会出现 MCP?
如果你开发了一个 AI 应用,无论是 ChatBot 还是复杂的 Agent,都不会仅限于简单的 LLM 对话。很多时候,你需要与外部世界连接,以访问数据源或使用工具。例如:
操控浏览器实现自动化;
访问本地文件;
访问数据库结构,以便更好地让 AI 参与编程
调用 CRM 的 API 以驱动智能客服流程。
在这种情况下,你需要连接不同的对象,使用不同的接口协议。你可能需要熟悉 SQL、HTTP 调用、Playwright 等接口,甚至还需要使用搜索引擎、访问云存储、调用第三方开放API等。这些都涉及大量的“粘合“工作。

MCP(模型上下文协议)正是为了解决这一问题。它允许 LLM 应用通过统一的协议连接外部资源,而无需逐个适配。MCP通过增加一个中间层来实现这一点:LLM 应用通过统一的 MCP 协议连接到中间层(称为 MCPServer),而中间层则负责处理与外部资源的对接。

那么,为什么在 Agent 应用火热之后,大家才开始关注 MCP 呢?原因很简单:Agent 是最需要对接外部资源和工具的 LLM 应用类型。
第二、MCP 有哪些好处?
这种设计范式在软件系统中其实很常见,比如:一些大模型 API网关会将不同厂家的大模型协议转化为统一的 OpenAI 兼容协议,方便应用接入它的具体意义主要体现在以下几点
简化 LLM 应用:无需适配各种私有协议,只需学会连接 MCPServer 即可。
快速扩展 LLM 应用:随时可以“插拔“新的 MCP Server,需要更多功能时,简单添加即可,
快速适应变化:如果外部资源的接口发生变化,只需在对应的 MCP Server 上进行修改,所有连接的 LLM 应用都能无缝适应。
构建新的 AI 能力共享生态:通过共享 MCP Server,新的LLM 应用能够快速获得各种工具,形成一种新的合作体系从而提升整体的效用。

例如,MCP 的提出者 Anthropic 旗下的 Claude Desktop,就可以通过这种方式轻松扩充自身的能力。
第三、基于 MCP 的 Agent 架构设计
以下是基于 MCP 将 LLM 应用(Agent)与外部资源集成的架构设计图:

与 LLM 应用直接连接外部资源的方式相比,这里主要增加了一个中间层 (MCP Server)以及用于连接该中间层的(MCP辈 敫煳睃猪lient)。理解了这两个组件,你就基本掌握了 MCP 的核心。
1、MCp Server
这里的“Server”并非传统意义上的集中式服务器,更像是一个服务插件。
-
MCP Server 部署位置
MCP Server可以部署在 LLM 应用所在的本机上,也可以远程部署(Remote)。不过目前远程部署方式尚未完善,暂时不考虑。以下内容仅针对本地部署模式。
-
MCP Server 提供的“服务”
-
Tools:为 LLM 应用,尤其是 Agent 提供各种工具。
-
Resources:为 LLM 应用提供额外的结构化数据。
-
Prompts:为 LLM 应用提供 Prompt模板。例如,如果你的应用是一个Chatbot,可以从 MCP Server 中获取这些模板供用户选择使用。
-
获取 MCP Server 的方式
-
自己使用MCP SDK创建后,供个人或者内部共享使用。
-
从他人创建的 MCP Servers 中“挑选”,然后下载使用。例如,可以从以下链接获取

MCP Server 的启动方式
在本地模式下,通过在 LLM 应用中配置启动命令后,MCP Server 会自动启动。
需要注意的是,不同的 MCP Server 可能有不同的启动命令,具体请査看 MCP Server 的说明书。
部分 MCP Server 可能需要先安装依赖项;而对于通过 npx 或 uvx 运行的 MCP Server,则会自动下载缓存并临时运行。
启动后,MCP Server 在物理形式上是一个独立的进程。
MCP Server 与 client 应用的通信方式
在本地模式下,MCP Server 与客户端应用之间通过 stdio/stdout(标准输入输出)进行进程间通信,交换消息。这种通信方式你可能已经很熟悉了,例如:
cat file.txt |grep "error"|sort > result.txt
-
创建 MCP Server 的编程语言
目前支持使用 TS(TypeScript)、Python、Java SDK 来编写 MCP Server。
2、Mcp client
MCP Client 是由客户端 LLM 应用使用 Client SDK 创建并维护的一个 Server 会话,就像你在程序中维护一个数据库的 Connection 一样。一般长这样:
async with stdio client(server params)as(read, write):async with clientsession(read, write,sampling_callback=None)as session:、......
借助 Client SDK 你可以与 MCP Server 通信。比如查看 Server 的 Tools:
tools = await session.list tools()
本地模式下,Client 与 Server 是一对一的关系。如果需要连接多个MCP Server,需要自行维护多个 Session。
2、动手做一个 MCP
让我们通过一个简单的 Client + Server 的完整案例来加深对 MCP 的理解。首先,使用以下命令安装 SDK:
pip install mcp
安装完成后,按照以下步骤进行操作:
第一、创建 MCP Server
这个 MCP Server 仅具备一个功能:提供一个计算器工具。具体实现如下:
#server demo.pyfrom mcp.server.fastmcp import FastMCP#创建一个MCP服务器mcp = FastMCP("演示”)#添加一个工具@mcp.tool()def calculate(expression:str)->float:"""计算四则运算表达式参数:expression:数学表达式字符串,如“1 +2*3"返回:计算结果"""...省略计算器代码...if__name__=="__main__ ":mcp.run(transport='stdio')
注意这里必须要有启动代码,但现在你不能启动它。
第二、创建 MCP Client
接下来,创建一个客户端应用,用于连接上述 MCP Server 并调用其中的计算器功能:
#client_demo.pyfrom mcp.client.stdio import stdio_clientfrom mcp import clientSession, stdioserverParameters, typesimport asyncio#Client会使用这里的配置来启动本地 MCP Serverserver_params =stdioServerParameters(command="python",args-["./server demo.py"],env=None)async def main():async with stdio_client(server_params)as(read, write):async with clientSession(read,write, sampling_callback=None)as session:await session.initialize()print('\n正在调用工具...")result = await session.call tool("calculate",{ "expression":"188*23-34"})print(result.content)asyncio.run(main())
现在直接运行这个 Client,就可以看到如下输出:

第三、如何调试 MCP Server
如果只是单纯开发 MCP Server,如何快速进行测试呢?对于用 Python 编写的 Server,可以通过 MCP Inspector来进行调试。运行以下命令:
mcp dev server demo.py
随后,访问 http://localhost:5173,即可进入可视化调试界面,在这里可以直观地测试刚才的计算器工具。

- End -
从0到1!大模型(LLM)最全学习路线图,建议收藏!
想入门大模型(LLM)却不知道从哪开始? 我根据最新的技术栈和我自己的经历&理解,帮大家整理了一份LLM学习路线图,涵盖从理论基础到落地应用的全流程!拒绝焦虑,按图索骥~~
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取