MCP 协议 MCP 协议有一种开放协议被称作MCP其全称为Model , 也就是模型上下文协议, 它的目的在于达成大型语言模型LLM应用跟外部数据源、工具以及服务之间的毫无缝隙的融合, 这种情况类似于网络当中的HTTP协议或者邮件里的SMTP协议。MCP 协议经由对标准化模型跟外部资源交互办法的规定, 达成对 LLM 应用在功能性灵活性以及可扩展性方面的提升。MCP 对人工智能应用生态系统里的通信规则予以标准化, 给开发者供给了一个开发环境, 这个环境统一、高效且能够互操作。MCP 的核心概念MCP 的核心所在, 是模型上下文, 亦即 LLM 在运行进程里的, 所有外部信息以及工具。mcp借助定义标准化的接口以及协议, 致使llm能够进行动态访问, 并且能够集成以下这些内容:如数据库、API、文档库之类的外部数据源, 给 LLM 提供实时或者历史数据。诸如计算工具、搜索引擎、第三方服务这等的工具和服务, 对 LLM 的功能予以扩展。动态维护 LLM 的对话上下文, 保证连贯性以及一致性的上下文管理。MCP 的架构。MCP 的架构由四个关键部分组成主机, 也就是被称之为Host的存在, 其属于那种期望从服务器那儿获取数据的人工智能应用, 像比如说一个集成开发环境, 又或者是聊天机器人这一类的。它承担着初始化以及管理客户端的职责, 同时呢还负责处理用户授权方面的事宜, 另外还得管理上下文聚合等相关工作。将其改写为: 客户端担当着这样的角色, 它处于的位置是为主机和服务器构建起沟通的桥梁, 它和服务器之间维持着一对一的连接状态, 它所负责的事务包含消息路由等, 它要确保主机以及服务器之间的通信达成清晰的效果, 还要保障通信具备安全的特性, 同时也要让通信有着高效的表现。服务器是啥, 它是那种能提供外部数据以及工具的组件。它借助工具、资源还有提示模板, 给大型语言模型送去额外的上下文以及功能。比如说, 有一个服务器能够给出跟Gmail里、Slack等外部服务的API调用。基础协议, 也就是所谓的 Base , 它明确规定了主机、客户端以及服务器之间进行通信的方式, 其中涵盖了消息格式、生命周期管理以及传输机制等诸多方面。MCP和USB-C类似, 不同设备能借助相同接口连接起来, 是这样的情况。MCP 的工作原理先对MCP来说, 它借助定义标准化数据格式, 再通过设置通信协议, 达成对LLM与外部资源交互的实现 , 这一过程得以完成。MCP 把 JSON - RPC 2.0 用作消息格式, 借助标准的请求消息来通信, 借助标准的响应消息来通信, 借助标准的通知消息来通信。MCP 给予多种传输机制支持, 当中涵盖本地的标准输入/输出, 也就是 Stdio, 还包括基于 HTTP 的服务器发送事件, 即 SSE。MCP的生命周期涵盖初始化阶段, 运行阶段, 关闭阶段, 要保证连接的建立符合协议规范, 通信符合协议规范, 终止符合协议规范。以下是其工作流程1. 上下文请求运行大语言模型应用的时候, 会向外部的资源, 发送依据对应的上下文而生成的请求, 这里面要包含所需的数据, 或者是服务的类型。2. 上下文集成LLM应用把从外部资源那里返回来的上下文数据, 整合到模型里头, 以此来生成响应, 或者去执行任务。3. 上下文管理MCP 具备支持对 LLM 的对话上下文进行动态管理的能力, 从而能够保证多轮对话拥有连贯性。协议的关键部分 - 消息MCP 的核心, 在于采用 JSON-RPC 2.0 充当消息格式, 给客户端与服务器之间的通信, 提供了一种标准化的途径。基础协议界定了三种基本消息式样, 各自是请求, 还有响应以及通知)。以下是这三种消息类型的详细说明1. 请求用于从客户端向服务器展开推进动作的请求消息, 是一种情况, 或者是用于从服务器向客户端展开推进动作的请求消息, 这为另一情况。请求消息的结构如下{ jsonrpc: 2.0, id: string | number, method: string, params: { [key: string]: unknown } }2. 响应有着对请求进行答复作用的为响应消息, 它是从服务器那儿发送至客户端的, 或者是从客户端发送到服务器那儿去的。响应消息的结构如下{ jsonrpc: 2.0, id: string | number, result: { [key: string]: unknown }, error: { code: number, message: string, data: unknown } }3. 通知通知消息是一种单向消息不需要接收方回复。通知消息的结构如下{ jsonrpc: 2.0, method: string, params: { [key: string]: unknown } }明确 MCP 的关键特性, 标准化接口, 即去定义统一的接口以及协议, 以此来确保 LLM 与外部资源具备兼容性。动态集成, 也就是要支持 LLM 动态地去访问以及集成外部数据源和工具。上下文感知, 意味着支持动态管理对话上下文, 进而提升多轮对话的连贯性。开放性和可扩展性, 是指支持第三方开发者为 LLM 应用扩展功能以及资源。MCP 的应用场景。MCP 广泛应用于以下场景通过集成外部数据源, 来提供实时、准确答案的增强型问答系统, 借助集成工具和服务, 执行如预订、计算、搜索等, 这类复杂任务的智能助手, 利用集成文档库和数据库, 提供专业领域知识支持的知识管理, 凭借上下文管理, 实现连贯多轮对话的多轮对话, 经由集成外部资源, 显著扩展LLM应用功能的功能扩展, 支持动态访问和集成多种数据源及工具的灵活性, 有标准化协议支持第三方开发和集成的开放性, 它们是MCP的优缺点中的优点。MCP的替代方案, 缺点有, 复杂性在于, 需要去设计以及维护和外部资源的交互逻辑。 性能开销方面, 访问外部资源有可能引入额外的延迟。在某些场景下可以使用以下替代方案开发针对 LLM 应用的、可自行定义的 API 接口, 运用插件机制去扩展 LLM 应用的功能, 借助知识图谱集成外部知识。