MCP原理

MCP的五个核心要素

MCP是C/S架构的,大致架构如下:

1
2
LLM <==========> MCP Client <==========> MCP Server <==========> Local Resources / Remote Resources

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工作流程

MCP工作流程

初始化阶段

  • 用户启动客户端
  • 客户端与服务器建立连接(服务器可以是本地的,也可以是远程的)
  • 客户端向服务器请求可用的工具列表(调用api tools/list)
  • 服务端返回工具列表和描述

我们在Smithery、mcp.so等网站上寻找mcp时候,会提供相应的Tools,也就是工具列表,每个工具可以看作server提供的函数

查询处理阶段

  • 用户输入查询
  • 客户端发送查询和可用工具信息给大语言模型(LLM)
  • 大模型分析后,返回给客户端响应(文本或工具调用)
    • 如果响应是工具调用,客户端会请求服务器执行工具调用(调用api tools/call),然后服务器返回工具执行结果,然后客户端再把这些信息给大模型,大模型再次进行分析,进行循环。实际上,当LLM向客户端响应工具调用后,客户端还会向用户询问是否执行工具,由用户确认执行后,客户端才会请求服务器执行工具调用
    • 如果响应是文本,则客户端显示给客户文本响应

MCP原理
https://jlqusername.github.io/2025/05/02/MCP原理/
作者
B907
发布于
2025年5月2日
许可协议