简介MCP(一)

前言

最近刷视频、文章,频繁见到MCP这个词,发现对这个东西只是知道它叫做模型上下文协议,但是对于它定义了个什么东西,具体啥使用也不是很清楚,秉着来都来了总要带点什么回去的思想,在刷完视频、读完文章之后应该也要输出一篇文档来记录一下

一、什么是MCP

MCP (Model Context Protocol,模型上下文协议)定义了应用程序AI 模型 之间交换上下文信息的方式,用一种相同的方式让各种数据源、工具和功能连接到AI模型工具上。其实也就是定义了一种标准,协议双方遵循该标准,同时模型侧对应的工具(像cline、cursor)只需要提供对该标准的支持,通过MCP就能够让模型工具外挂其他程序或者使用对应别的平台的功能

MCP通用架构

MCP 核心采用客户端-服务器架构,主机应用可以连接多个服务器:

  • MCP Hosts: 如 Claude Desktop、IDE 或 AI 工具,希望通过 MCP 访问数据的程序
  • MCP Clients: 维护与服务器一对一连接的协议客户端
  • MCP Servers: 轻量级程序,通过标准的 Model Context Protocol 提供特定能力
  • 本地数据源: MCP 服务器可安全访问的计算机文件、数据库和服务
  • 远程服务: MCP 服务器可连接的互联网上的外部系统(如通过 APIs)

核心组件

协议层

  • 处理消息的格式化、请求/响应的关联以及高级通信模式

传输层

  • 传输层处理 clients 和 servers 之间的实际通信,MCP支持多种传输机制:
  1. Stdio 传输 (适合本地传输)
    客户端将服务端作为子进程启动,服务端通过stdin、stdout进行消息接收和输出响应
  1. 通过http的SSE传输
    与stdio相比,SSE传输中,服务端是作为一个独立进程运行,可以处理多个客户端连接。服务端必须提供SSE端点和http post 端点。当客户端连接时,服务端必须发送一个包含 URI 的 endpoint 事件,客户端使用该 URI 发送消息,所有后续客户端消息必须通过 HTTP POST 请求发送到此端点。服务端消息以 SSE 消息事件的形式发送,消息内容以 JSON 编码在事件数据中。
  1. 自定义传输
    在客户端和服务端之间的通信,符合MCP定义的JSON-RPC消息格式以及生命周期要求即可

生命周期

  1. 初始化
  2. 消息交换
  • 初始化后,支持以下模式:
    • 请求-响应:客户端或服务器发送请求,另一方响应
    • 通知:任一方发送单向消息
  1. 终止
  • 任一方可以终止连接:
    • 通过 close() 进行干净关闭
    • 传输断开
    • 错误条件

二、MCP有什么用

  • 模型在没有依赖联网搜索以及使用其他的工具的情况下,能够做到的能力其实就取决于当时训练的数据集,像实时获取某些数据、对某个平台进行实时操作,这个是没法做到的。而有了MCP,我们就可以通过对应的平台提供的server、以及编码工具拥有的client做集成,让对应的编码工具能够进行对应的操作了,其主要的目的就是让AI模型能够快速使用其他工具,像获取当天的天气、拉取对应配置的git仓库代码、等等大模型原先不具备的功能。

其实说到增强模型能力,在没有MCP之前 大多使用的是Function Calling,它和MCP一样其实都是为了提高模型和外部的交互能力。但Funtion Calling平台依赖性比较强,不同的LLM平台对应的function call api实现存在差异,在切换不同模型时需要重写代码,相比之下MCP 就不限制特定的AI模型了,对此就会有很多现成的插件可以直接使用。

三、初步实践MCP

基于高德提供的mcp server + cursor 获取某地区的天气情况

  1. 先从高德开发者平台进行注册登录,并且创建对应的应用拿到对应应用的key
  2. 在cursor中进行添加。进入cursor之后,点击右上方齿轮,点击MCP,进入mcp设置。
json 复制代码
{
    "mcpServers": {
      "amap-maps": {
        "command": "npx",
        "args": ["-y", "@amap/amap-maps-mcp-server"],
        "env": {
          "AMAP_MAPS_API_KEY": "对应的key"
        }
      }
    }
}
  1. 保存之后,看到如图所示,就可以开始使用了
  2. 可以看到当询问涉及到对应mcp功能的时候,cursor会帮我们进行对应的mcp调用

四、拓展

  • SSE:基于 HTTP 的单向实时通信协议,服务器可主动向客户端推送数据(如日志、状态更新)。
  • json-rpc 2.0
    • 一种轻量级的远程过程调用(RPC)协议,基于 JSON 格式传输数据
    • 核心作用
      1. 标准化通信:定义请求/响应的统一格式,确保模块间交互一致性。
      2. 支持多种操作:允许同步调用(等待结果)或异步通知(无返回)。
      3. 跨语言兼容:基于 JSON,易于不同语言模块集成(如 Python、C++、JavaScript)
相关推荐
我算是程序猿6 小时前
【2025最新】AI绘画终极提示词库|Midjourney&Stable Diffusion通用公式大全
人工智能·ai作画·stable diffusion·aigc·midjourney
今日上上签07078 小时前
《OmniMeetProTrack 全维会议链智能追录系统 软件设计文档》
人工智能·设计模式·aigc·软件工程·团队开发·需求分析·规格说明书
Blossom.1181 天前
脑机接口技术:开启人类与机器的全新交互时代
人工智能·驱动开发·深度学习·计算机视觉·aigc·硬件架构·交互
企业知识库布道者1 天前
RAGFlow 接入企业微信应用实现原理剖析与最佳实践
aigc·知识图谱·智能助手·企业知识库·ragflow
Mu先生Ai世界1 天前
探寻适用工具:AI+3D 平台与工具的关键能力及选型考量 (AI+3D 产品经理笔记 S2E03)
人工智能·游戏·3d·ai·aigc·产品经理·vr
程序边界3 天前
AIGC时代——语义化AI驱动器:提示词的未来图景与技术深潜
人工智能·aigc
乌旭3 天前
AIGC算力消耗白皮书:Stable Diffusion vs Midjourney的架构成本差异
人工智能·深度学习·stable diffusion·架构·aigc·midjourney·gpu算力
s1ckrain3 天前
【论文阅读】PEEKABOO: Interactive Video Generation via Masked-Diffusion
论文阅读·计算机视觉·aigc
liaowenxiong3 天前
修改或禁用Cursor的全局搜索默认快捷键
cursor
Lilith的AI学习日记3 天前
n8n 中文系列教程_17. 为什么我的n8n数据库越来越大?解决方案全解析
网络·docker·容器·aigc·n8n