MCP原理
MCP的五个核心要素
MCP是C/S架构的,大致架构如下:
1 |
|
MCP Host
作为运行MCP的著应用程序,例如Claude Desktop、Cursor、Cline或其他AI工具,作为用户提供与LLM交互的接口,同时集成了MCP Client已连接MCP Server。
- 可以让用户与LLM交互
- 集成Client连接Server
MCP Client
充当LLM和MCP Server之间的桥梁,嵌入在主机程序中,主要负责:
- 接收来自LLM的请求
- 将请求转发到相应的MCP Server
- 将MCP Server的结果返回给LLM
可以在MCP官网查询支持MCP的Clients,分为两类:
- AI编程IDE:如Cursor等
- 聊天客户端:如Cherry Studio、Claude等
MCP Server
每个MCP Server都提供了一组特定的工具。负责从Local Data或者Remote Service中检索信息,是MCP架构中的关键组件。与传统的远程API服务器不同,MCP服务器既可以作为本地应用程序(stdio的方式通信)在用户设备上运行,也可以部署至远程服务器(sse的方式通信,建立http连接)。作用是让LLM不仅能“说”,还能够“做”。
MCP的本质是运行在电脑上的一个Node.js程序或者Python程序,可以理解为客户端使用命令调用了电脑上的Node.js程序或者Python程序。
- 使用TS编写的MCP Server可以通过npx命令运行
- 使用Python编写的MCP Server可以通过uvx命令运行
在Cursor中,如果MCP Server的指示灯为绿色,则说明MCP客户端和MCP服务器已连接。
Local Resources
本地资源,可以由MCP Server操作
Remote Resources
远程资源,可以由MCP Server操作
MCP工作流程
初始化阶段
- 用户启动客户端
- 客户端与服务器建立连接(服务器可以是本地的,也可以是远程的)
- 客户端向服务器请求可用的工具列表(调用api tools/list)
- 服务端返回工具列表和描述
我们在Smithery、mcp.so等网站上寻找mcp时候,会提供相应的Tools,也就是工具列表,每个工具可以看作server提供的函数
查询处理阶段
- 用户输入查询
- 客户端发送查询和可用工具信息给大语言模型(LLM)
- 大模型分析后,返回给客户端响应(文本或工具调用)
- 如果响应是工具调用,客户端会请求服务器执行工具调用(调用api tools/call),然后服务器返回工具执行结果,然后客户端再把这些信息给大模型,大模型再次进行分析,进行循环。实际上,当LLM向客户端响应工具调用后,客户端还会向用户询问是否执行工具,由用户确认执行后,客户端才会请求服务器执行工具调用
- 如果响应是文本,则客户端显示给客户文本响应
MCP原理
https://jlqusername.github.io/2025/05/02/MCP原理/