LLM 如何使用 MCPs?
Source: Dev.to
概览
要了解大型语言模型(LLM)如何知道模型上下文协议(MCP)服务器中有什么,想象一下 LLM 不是一个“知道”事物的人,而是一个在烹饪前被递交菜单的厨师。LLM 实际上并不“知道”MCP的存在,直到你发送一条消息为止。
步骤说明
-
启动会话
在支持 MCP 的应用程序(例如 Claude Desktop 或 Cursor)中,MCP 客户端(即应用)使用标准请求tools/list与 MCP 服务器(即工具)进行通信。 -
服务器响应
服务器返回它提供的所有工具的列表。对于每个工具,它会提供:- 名称
- 描述
- JSON Schema(工具所需的参数)
-
将工具列表注入提示
MCP 客户端将此列表直接插入 LLM 的提示上下文,通常作为系统指令的一部分。 -
隐藏指令块
当 LLM 收到你的消息时,它还会看到类似以下的隐藏文本块:You have access to the following tools: get_weather: Get current weather. Parameters: location (string). query_postgres: Run SQL on the DB. Parameters: query (string). -
用户查询
例如,你会问:“东京的天气怎么样?” -
工具选择
LLM 识别出它不知道天气信息,但看到有一个匹配意图的工具(get_weather)。 -
结构化工具调用
根据它在“工具使用”或“函数调用”模式上的训练,LLM 停止生成普通文本,输出结构化片段:{ "call": "get_weather", "args": { "location": "Tokyo" } } -
客户端处理调用
- 客户端检测到 LLM 输出中的片段。
- 它暂停 LLM 并向 MCP 服务器发送指定请求。
- 服务器执行实际代码并将结果返回给客户端。
-
结果回馈给 LLM
客户端将结果再次注入 LLM 的上下文。 -
最终答案
LLM 读取结果后回复,例如:“东京的天气是 15 °C,晴朗。”