核心概念:
MCP 是一种设计模式或协议规范,旨在解决大型语言模型在复杂交互场景中管理和传递上下文信息的挑战。它并不是一个单一、官方的标准协议,而是描述了一种结构化、可扩展的方式来组织和处理模型交互所需的所有相关信息。
核心目标:
为什么需要 MCP?
[{"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]
MCP 的关键组成部分:
一个典型的 MCP 上下文结构可能包含以下部分(具体实现可能有所不同):
messages
state
current_step
collected_data
pending_actions
context_variables
tools
name
description
parameters
tool_calls
tool_results
arguments
tool_call_id
tool_call
content
result
MCP 交互流程(流程图与详解):
流程详解:
assistant
MCP 的优势:
MCP 的应用场景:
总结:
MCP (模型上下文协议) 是一种应对现代 LLM 应用复杂性的关键设计模式。它通过定义结构化、包含丰富状态和工具信息的上下文对象,为 LLM 提供了处理多轮对话、执行复杂任务、无缝集成外部工具所需的环境和记忆。其核心在于将传统的扁平对话历史扩展为一个包含 messages, state, tools, tool_calls, tool_results 等关键元素的动态数据结构,并通过清晰的流程(如流程图所示)来管理和更新这个上下文,最终实现更强大、更可靠、更智能的 AI 应用。虽然具体实现细节可能因框架而异,但其核心思想和组件已成为构建下一代 LLM 应用(尤其是 Agent)的基础。
大佬,受用啊
好文必须收藏拜读
膜拜大佬
已三连
👍 流程图好评
Featured Collection
Popular Ranking
Popular Events
核心概念:
MCP 是一种设计模式或协议规范,旨在解决大型语言模型在复杂交互场景中管理和传递上下文信息的挑战。它并不是一个单一、官方的标准协议,而是描述了一种结构化、可扩展的方式来组织和处理模型交互所需的所有相关信息。
核心目标:
为什么需要 MCP?
[{"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]
)在处理复杂任务、工具调用、多步骤推理时显得力不从心,信息混杂,难以精确追踪状态和工具结果。MCP 的关键组成部分:
一个典型的 MCP 上下文结构可能包含以下部分(具体实现可能有所不同):
messages
(消息列表): 传统的对话历史记录,包含用户输入、模型回复、系统提示等。这是基础部分。state
(状态对象): 一个字典或 JSON 对象,用于存储和追踪当前任务或会话的状态。例如:current_step
: 当前执行到任务流程的哪一步。collected_data
: 用户已提供的信息(如姓名、订单号、问题细节)。pending_actions
: 需要执行的下一个动作列表。context_variables
: 自定义的变量(如用户ID、会话ID、当前时间)。tools
(工具定义列表 - 可选): 描述模型可以调用的外部工具(函数/API)的列表。每个工具定义通常包含:name
: 工具唯一标识符。description
: 工具功能描述。parameters
: 工具所需的参数及其类型、描述。tool_calls
/tool_results
(工具调用与结果 - 动态):tool_calls
(模型输出): 当模型决定调用工具时,它会在其响应中包含一个tool_calls
字段,列出它想要调用的工具(name
)及其参数(arguments
)。tool_results
(输入到下一轮上下文): 执行工具后,外部系统需要将结果格式化并作为tool_results
添加到下一轮请求的上下文中。每个结果通常包含:tool_call_id
: 关联对应的tool_call
。name
: 工具名(应与tool_call
匹配)。content
/result
: 工具执行返回的结果(可以是字符串、JSON 等)。MCP 交互流程(流程图与详解):
1. 添加 tool_calls 到 messages
2. 添加 tool_results 到 context
3. 更新 state (如 current_step, collected_data) else 有文本回复 Orchestrator->>Orchestrator: 更新 MCP Context:
1. 添加模型回复到 messages
2. 更新 state end Note over Orchestrator: 检查任务状态 (state)
是否需要继续调用模型?
是否需要用户输入? end alt 任务完成或需要用户输入 Orchestrator->>Client: 返回最终回复或请求更多信息 (包含更新后的 MCP Context) end deactivate Orchestrator
流程详解:
messages
,state
,tools
(如果需要),以及之前任何轮次的tool_results
。messages
列表中(通常是assistant
角色的消息)。tool_calls
对象。此时 LLM 不生成面向用户的文本回复。tool_calls
:tool_calls
,找到对应的工具定义。result
)。tool_calls
)作为一个新的assistant
消息添加到messages
中。tool_calls
:tool_results
(包含tool_call_id
,name
, 和工具返回的content
/result
)添加到 Context 中(通常是作为一个独立的字段或附加到state
里)。state
(例如,记录查询到的数据到collected_data
,设置current_step
为下一步)。state
:MCP 的优势:
state
和tool_results
,使得处理多步骤、有状态的任务(如订票、复杂查询、工作流自动化)成为可能。state
和自定义字段提供了极大的扩展空间来适应不同应用场景。MCP 的应用场景:
总结:
MCP (模型上下文协议) 是一种应对现代 LLM 应用复杂性的关键设计模式。它通过定义结构化、包含丰富状态和工具信息的上下文对象,为 LLM 提供了处理多轮对话、执行复杂任务、无缝集成外部工具所需的环境和记忆。其核心在于将传统的扁平对话历史扩展为一个包含
messages
,state
,tools
,tool_calls
,tool_results
等关键元素的动态数据结构,并通过清晰的流程(如流程图所示)来管理和更新这个上下文,最终实现更强大、更可靠、更智能的 AI 应用。虽然具体实现细节可能因框架而异,但其核心思想和组件已成为构建下一代 LLM 应用(尤其是 Agent)的基础。