LLM大模型+AI之MCP协议

LLM+AI之MCP协议

1. 官网

1. 官网

MCP官网

2. 中文网

MCP中文网

2. MCP简介

1. MCP是什么

MCP (Model Context Protocol) 是一个开放协议,用于标准化应用程序如何向 LLM 提供上下文。可以将 MCP 想象成 AI 应用程序的 USB-C 接口。就像 USB-C 为设备连接各种外设和配件提供标准化方式一样,MCP 为 AI 模型连接不同的数据源和工具提供了标准化的方式。

2. 为什么选择 MCP?

MCP 帮助您在 LLM 之上构建代理和复杂工作流。LLM 经常需要与数据和工具集成,而 MCP 提供:

  • 预构建集成列表,您的 LLM 可以直接接入
  • 在不同 LLM 提供商和供应商之间切换的灵活性
  • 在您的基础设施中保护数据的最佳实践

3. 总体架构

从本质上讲,MCP 遵循客户端-服务器架构,其中主机应用程序可以连接到多个服务器:

在这里插入图片描述

  • MCP 主机: 像 Claude Desktop、IDE 或 AI 工具等想要通过 MCP 访问数据的程序
  • MCP 客户端: 与服务器保持 1:1 连接的协议客户端
  • MCP 服务器: 通过标准化的模型上下文协议暴露特定功能的轻量级程序
  • 本地数据源: MCP 服务器可以安全访问的计算机文件、数据库和服务
  • 远程服务: MCP 服务器可以连接的通过互联网提供的外部系统(例如通过 API)

3. 核心架构

模型上下文协议(MCP)建立在灵活、可扩展的架构之上,可以实现 LLM 应用程序和集成之间的无缝通信。本文档介绍核心架构组件和概念。

1.概述

MCP 遵循客户端-服务器架构,其中:

  • 宿主 是启动连接的 LLM 应用程序(如 Claude Desktop 或 IDE)
  • 客户端 在宿主应用程序内部与服务器保持 1:1 连接
  • 服务器 为客户端提供上下文、工具和提示

在这里插入图片描述

2. 核心组件

1.协议层

协议层处理消息帧、请求/响应链接和高级通信模式。

TypeScrip

    class Protocol<Request, Notification, Result> {
        // Handle incoming requests
        setRequestHandler<T>(schema: T, handler: (request: T, extra: RequestHandlerExtra) => Promise<Result>): void

        // Handle incoming notifications
        setNotificationHandler<T>(schema: T, handler: (notification: T) => Promise<void>): void

        // Send requests and await responses
        request<T>(request: Request, schema: T, options?: RequestOptions): Promise<T>

        // Send one-way notifications
        notification(notification: Notification): Promise<void>
    }

主要类包括:

  • Protocol
  • Client
  • Server

2. 传输层

传输层处理客户端和服务器之间的实际通信。MCP 支持多种传输机制:

  1. 标准输入输出传输
    • 使用标准输入/输出进行通信
    • 适用于本地进程
  2. 带 SSE 的 HTTP 传输
    • 使用服务器发送事件(SSE)进行服务器到客户端的消息传输
    • 使用 HTTP POST 进行客户端到服务器的消息传输

所有传输都使用 JSON-RPC 2.0 来交换消息。有关模型上下文协议消息格式的详细信息,请参阅规范

3. 消息类型

MCP 有以下主要消息类型:

  1. 请求 期望从另一方得到响应:

    interface Request {
      method: string;
      params?: { ... };
    }
    
  2. 通知 是不期望响应的单向消息:

    interface Notification {
      method: string;
      params?: { ... };
    }
    
  3. 结果 是对请求的成功响应:

    interface Result {
      [key: string]: unknown;
    }
    
  4. 错误 表示请求失败:

    interface Error {
      code: number;
      message: string;
      data?: unknown;
    }
    

3. 连接生命周期

在这里插入图片描述

1. 初始化

  1. 客户端发送带有协议版本和功能的 initialize 请求
  2. 服务器响应其协议版本和功能
  3. 客户端发送 initialized 通知作为确认
  4. 开始正常的消息交换

2. 消息交换

初始化后,支持以下模式:

  • 请求-响应: 客户端或服务器发送请求,另一方响应
  • 通知: 任何一方发送单向消息

3. 终止

任何一方都可以终止连接:

  • 通过 close() 进行干净关闭
  • 传输断开
  • 错误条件

4.错误处理

MCP 定义了这些标准错误代码:

enum ErrorCode {
  // 标准 JSON-RPC 错误代码
  ParseError = -32700,
  InvalidRequest = -32600,
  MethodNotFound = -32601,
  InvalidParams = -32602,
  InternalError = -32603
}

SDK 和应用程序可以定义自己的大于 -32000 的错误代码。

错误通过以下方式传播:

  • 对请求的错误响应
  • 传输上的错误事件
  • 协议级错误处理程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值