Hello, 大家好,我是程序员海军, 全栈开发
|AI爱好者
| 独立开发
。
随着AI Agent 爆火,最近火出圈的MCP
到底是啥了,频繁出现在各大科技论坛和社交媒体上MCP
,本来带你来了解一下什么是MCP
,以及目前MCP 的应用案例,目前笔者,感受到了MCP 带来了魅力,简直效率爆表!
什么是MCP?
模型上下文协议 (Model Context Protocol, MCP)是一种专为 机器学习模型服务 设计的通信协议,旨在高效管理模型推理过程中的上下文信息(如会话状态、环境变量、动态配置等),解决传统协议在复杂AI场景下的局限性。
MCP本身并不处理复杂的逻辑;它只是协调AI模型与工具之间的数据和指令流动,MCP简化了AI模型与你的数据、工具和服务的交互方式。
MCP 具体可以干啥用
上下文感知推理
支持动态传递和持久化会话相关的上下文数据(例如用户历史行为、对话状态),使模型能够基于连续交互生成连贯结果。例如,在聊天机器人场景中,MCP会传递对话历史以确保回答的上下文相关性。
大白话: 比如客服机器人知道你之前退过货,不用每次都问你订单号
给每次对话分配一个"会话ID",存下聊天记录、用户偏好等
多模态数据兼容
统一处理文本、图像、传感器数据等多模态输入,通过 类型化数据通道 (Typed Data Channel)自动适配不同模型输入格式(如Tensor、JSON、Protobuf)。
比如你突然说:"用简单点的话解释",MCP会立刻告诉AI:"用户是小白,别用专业术语"
处理复杂任务 [辅助]
辅助自动化开发项目,自动化建模,自动化购物,自动化买票等等场景。
比如让AI帮你订机票,需要记住出发地、时间、航空公司偏好,一步步完成。
为什么需要MCP
随着 LLM的发展日益普及 ,一个规范的 模型上下文协议变的越来越重要 。 不同的开发者和组织可能会开发出不同的上下文管理方法, MCP 旨在提供一套通用的规则和格式,以确保不同系统之间的互操作性。
1️⃣ 目前模型训练数据的局限性:
- LLMs 虽然在大量数据上进行了训练,但它们无法预知所有特定场景的需求。
- MCP 的目标是让 LLMs 能够动态地访问所需的上下文信息,从而执行更广泛的任务。
在处理特定行业或领域的任务时,模型需要访问该领域的专业知识和数据。MCP 能够提供一种标准化的方式,将这些信息传递给模型。
2️⃣ 提高模型的准确性和相关性
- 上下文信息可以帮助模型更好地理解用户的意图,并生成更准确、更相关的回复。 \
- 在对话系统中,MCP 可以管理对话历史,确保模型能够记住之前的交互,并生成连贯的回复。
- 在处理文档时,MCP 可以将相关的文档内容作为上下文提供给模型,以便模型能够进行准确的问答或摘要。
3️⃣ 处理更复杂的应用场景
随着 LLM 的应用越来越广泛,它们需要处理更复杂的任务 :
- 需要访问多个数据源的任务 (例如访问多个知识库)
- 需要执行特定操作的任务
- 需要与外部系统交互的任务 (例如最近的 Blender MCP 结合 Claude 对话生成3D模型)
MCP 可以提供一种标准化的方式,让模型能够处理这些复杂的任务。
MCP 的核心在于
- 增强 LLM 的功能和应用范围
- 提高 LLM 的性能和准确性。
- 促进 LLM 的标准化和互操作性。
MCP协议讲解
MCP核心概念 :
主要目标:
能够让 LLM 能够更方便、更安全地与外部世界连接,获取它们需要的各种信息和能力。
核心功能:
- 上下文管理: MCP 协议旨在标准化和优化模型上下文的管理和传递,从而提高模型的性能和应用范围。
- 外部数据集成: 使 LLMs 能够安全地访问和操作本地及远程数据,为 LLMs 应用提供连接万物的接口。
- 工具调用: MCP 协议能够为 LLMs 提供执行具体操作的能力,例如调用 API、访问数据库等。
架构:
** MCP 遵循客户端-服务器架构,包含以下核心组件:**
- MCP 主机(MCP Hosts): 发起请求的 LLM 应用程序,例如聊天机器人、AI 工具等。
- MCP 客户端(MCP Clients):* * 在主机程序内部,与 MCP 服务器保持连接。**
- MCP 服务器(MCP Servers): 提供数据、工具和服务的外部系统。
20个关键词了解
关键词 | 价值 | 场景 | 应用 |
---|---|---|---|
MCP | 标准化LLM与数据源的整合,减少定制整合需求 | 需要访问外部数据的AI应用,如聊天机器人 | AI助手、聊天机器人、AI驱动的IDE |
LLM | 提供自然语言处理能力,生成和理解文本 | 文本补全、问答、内容生成场景 | 文本补全工具、客户服务聊天机器人 |
主机(Host) | 管理多个客户端实例,协调客户端与服务器交互 | AI应用的集中管理,如桌面应用 | Claude Desktop等AI桌面应用的协调中心 |
客户端(Client) | 与服务器1:1连接,处理协议协商和消息路由 | 主机与特定服务器的通信桥梁 | MCP架构中的通信组件,如Claude客户端 |
服务器(Server) | 暴露资源、工具、提示等特定能力 | 为LLM提供数据或功能,如文件访问 | Filesystem Server、GitHub Server等 |
资源(Resources) | 可供LLM访问的只读数据,如文件、文档 | 访问本地文件、数据库或云存储内容 | LLM查询文档、检索数据库信息 |
工具(Tools) | LLM可调用的动作或函数,如运行SQL查询 | 需要执行特定任务,如API调用、数据处理 | 自动化任务,如财务数据分析、网页抓取 |
提示(Prompts) | 指导LLM行为或提供上下文的预定义文本 | 定制LLM响应或提供特定指令 | 针对不同用例调整AI输出,如客户支持提示 |
采样(Sampling) | 主机协调LLM与多个服务器的交互,聚合上下文 | 为复杂查询从多源数据收集信息 | 综合多源数据为LLM提供全面上下文 |
JSON-RPC | 用于客户端与服务器消息交换的通信协议 | 分布式系统中的标准化消息传递 | MCP中的消息交互,如请求和响应 |
能力(Capabilities) | 客户端和服务器支持的声明功能,用于功能协商 | 确保会话中双方支持特定功能 | MCP会话中的功能协商,如工具支持 |
会话(Sessions) | 保持状态的客户端与服务器连接,允许持续交互 | 需要记忆先前交互的长期任务 | 对话式AI、连续多步骤任务 |
通知(Notifications) | 用于事件或更新的单向消息,如资源变化 | 保持客户端了解服务器端实时更新 | AI应用中的实时状态更新,如文件修改 |
安全(Security) | 确保数据访问和操作的控制与安全机制 | 保护敏感数据,防止未经授权访问 | MCP实现中的访问控制、数据加密 |
授权(Authorization) | 验证并授予资源或操作的访问权限 | 确保只有授权用户或进程可执行操作 | MCP服务器中的用户认证、角色访问控制 |
上下文(Context) | 提供给LLM以告知其响应的数据 | LLM需要额外信息以提供准确输出的交互 | 个性化响应、领域特定知识应用 |
有状态(Stateful) | 在会话中保持状态以保留上下文 | 需要记住先前交换或数据的交互 | 对话式AI、多步骤过程,如任务跟踪 |
协议协商(Protocol Negotiation) | 客户端和服务器初始商定功能和能力 | 建立具有已知能力的会话 | 确保交互开始时的兼容性和功能 |
消息类型(Message Types) | 协议中的请求、响应、通知三种消息类型 | 区分协议中不同种类的通信 | MCP实现中的消息管理和路由 |
设计原则(Design Principles) | 指导MCP设计的原则,如易建服务器、高组合性 | 理解MCP架构和功能的理由 | 开发者和架构师设计或扩展MCP系统时使用 |
MCP 主要5个方面
下面 ,我们来从消息格式、生命周期、传输协议、版本和额外的工具类这几个方面来深入探讨 Model Context Protocol (MCP) 协议
消息格式
MCP 协议通常采用结构化的数据格式进行消息传递,例如 JSON。JSON 格式具有良好的可读性和易于解析的特点,非常适合在不同系统之间进行数据交换。
JSON-RPC 2.0
是MCP协议普遍会使用的一种消息格式。它定义了统一的请求和响应格式,可以使不同系统之间的通信更加的标准化。
生命周期
MCP 协议的生命周期涉及到客户端和服务器之间的连接建立、数据交换和连接关闭等过程。
** 生命周期包括以下几个阶段 :**
传输协议
MCP 协议可以使用多种传输协议,常见的包括:
- WebSocket:提供双向、实时的通信能力,适合需要实时数据交换的场景。
- HTTP/HTTPS:适用于简单的请求-响应模式,但实时性相对较差。
版本
MCP 协议的版本管理非常重要,它可以确保不同版本的客户端和服务器之间能够兼容。
版本管理通常包括以下几个方面:
- 版本号:为每个版本的协议分配唯一的版本号。
- 兼容性:明确定义不同版本之间的兼容性规则,例如向前兼容、向后兼容等。
- 版本协商:在连接建立时,客户端和服务器之间进行版本协商,以确定使用的协议版本。
额外的工具类
为了简化 MCP 协议的开发和使用,通常会提供一些额外的工具类 。
如何使用MCP
不同 <font style="color:rgb(31, 31, 31);">Client</font>
对 MCP 能力的支持是不一样,选择适合的自己的场景 <font style="color:rgb(31, 31, 31);">Client</font>
即可
下面是 <font style="color:rgb(31, 31, 31);">MCP</font>
官网Client 集合各个表现:
为什么使用MCP而不是传统API ?
特性 | 传统 API | MCP (Model Context Protocol) |
---|---|---|
设计目标 | 提供功能性数据访问 | 为 LLM 提供上下文和外部数据集成 |
应用场景 | 通用软件应用,Web 服务集成,移动应用开发等 | 大型语言模型 (LLM) 应用,对话系统,知识图谱应用等 |
交互方式 | 请求-响应 | 上下文感知、动态交互 |
核心功能 | 预定义功能,数据获取,功能调用等 | 上下文管理,外部数据集成,工具调用 |
主要使用者 | 软件开发者 | AI 模型 (LLM) |
上下文感知 | 通常不具备上下文感知能力 | 具备上下文感知能力,能够理解对话历史、用户意图等 |
动态性 | 功能和数据结构预先定义,静态 | 允许 LLM 动态访问外部数据和工具,动态 |
智能化 | 功能性,独立性强 | 智能化,能够更智能地与外部世界交互 |
实时性 | 实时性一般,取决于API的设计 | 可以支持实时双向通信,例如使用WebSockets |
整合难度 | 每个API单独整合 | 一次标准化整合,能够连接多个服务 |
安全性与控制 | 每个API单独定义 | 所有工具统一标准,可以统一进行安全和权限控制 |
扩展性 | 需要额外开发 | 即插即用,随着AI生态系统的发展,可以轻松添加新功能 |
目前市场MCP应用
Blender MCP - 3D 建模
实现方式:使用开源项目 blender-mcp(GitHub 地址:github.com/ahujasid/bl...),包含服务器端与 Blender 插件.
Supabase MCP - 数据与数据库集成
通过MCP将Supabase数据库连接到Cursor,自动化创建管理数据库。
Figma MCP - Figma 设计稿转换为代码
最后
MCP 提供了将 AI 代理与模型同外部数据及工具相集成的统一且标准化之方式。其绝非仅仅是一个全新的 API ,实乃一个强大的连接框架,能够达成智能、动态且富有上下文的 AI 应用。
🔗资源:
MCP 官方网站: modelcontextprotocol.io/introductio...
MCP 内容规范: spec.modelcontextprotocol.io/specificati...
MCP Servers合集: github.com/modelcontex...
MCP Client 应用集合: modelcontextprotocol.io/clients