链载Ai

标题: AI开发者必看:深度解析MCP,打造高效LLM应用的秘密武器! [打印本页]

作者: 链载Ai    时间: 昨天 21:52
标题: AI开发者必看:深度解析MCP,打造高效LLM应用的秘密武器!

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.1em;color: rgb(63, 63, 63);visibility: visible;">

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.1em;color: rgb(63, 63, 63);visibility: visible;">

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">如果你活跃于技术影响者聚集的社交媒体平台,那么现在想必已经听说过模型上下文协议(MCP)了。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">诚然,它可能曾受到过度炒作,但了解它仍是十分必要的,因为MCP注定会成为未来AI流水线中的重要组成部分。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">MCP本身,抑或是基于其演进的各项改进,都将成为未来AI流水线中不可或缺的一环。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">在本文中,我们将探讨MCP的工作原理,并通过构建一个使用它的智能代理系统来加深理解。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(1, 155, 252);">让我们开始吧!

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;padding-left: 12px;color: rgb(63, 63, 63);border-radius: 6px;background: color-mix(in srgb, rgb(1, 155, 252) 8%, transparent);">为什么最初要构建MCP这样的东西?

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">假设现在是2024年初,你正在构建一个用于股票市场分析的LLM应用。

你可能需要:

等等!

这无疑会带来诸多不便!

任何一个部分的微小改动都会迫使你重写代码,导致系统难以扩展。

正因如此,Anthropic开源了MCP,使得自2024年11月之后,基于LLM的应用开发变得更加便捷。

让我们来了解一下是如何实现的。

什么是MCP?

根据官方文档所述:

模型上下文协议(MCP)是一个开放协议,它规范了应用程序如何向LLM提供上下文。

以往,我们通过分散且不稳定的集成方式连接LLM与数据源,而MCP则以统一协议取代了这种局面,从而使连接更可靠,也大大简化了我们的工作。

以下是Anthropic对它的评价:

开发人员现在可以基于一个标准协议进行构建,而不必为每个数据源维护独立的连接器。
可以将MCP想象成AI应用的USB-C接口。
正如USB-C提供了一种标准化方式,将设备连接到各种外部设备和附件一样,MCP也提供了一种标准化的方式,将AI模型连接到不同的数据源和工具。
—— Anthropic 关于 MCP 的说明 (https://www.anthropic.com/news/model-context-protocol)

一言以蔽之:

模型上下文协议是一个“协议”,它允许“模型”获取相关的“上下文”。

使用MCP前后LLM与数据源连接的简化示意图

现在我们理解了MCP解决的问题,接下来学习它的组成部分。

MCP的运作机制

MCP主要由三个核心组件构成:

  1. 1. 主机(Hosts)
  2. 2. 服务器(Servers)
  3. 3. 客户端(Clients)

我们来逐一讲解。

MCP主机

这些是用户直接交互的应用程序。

例如,Claude桌面版、集成开发环境(如Cursor和VS Code),或其他由AI驱动的工具。

这是LLM运行的核心所在。

MCP服务器

这些是小巧、专用的程序,根据其用例公开特定的功能。

这些服务器可以通过可由MCP主机内的LLM调用的 工具(Tools)(https://modelcontextprotocol.io/specification/2025-06-18/server/tools) 安全地连接到 资源(Resources)(https://modelcontextprotocol.io/specification/2025-06-18/server/resources)。

这些资源可以是:

服务器还公开 提示(Prompt)(https://modelcontextprotocol.io/specification/2025-06-18/server/prompts) 模板,客户端可以使用这些模板从MCP服务器获取结构化响应。

MCP客户端

这是主机的一个组件,充当通信层。

每个客户端与一个MCP服务器保持专用连接,负责处理协议的请求-响应模式、错误处理以及 连接生命周期(https://modelcontextprotocol.io/specification/2025-06-18/basic/lifecycle) 管理。

你可以把它们看作是能够理解主机语言和MCP协议的“翻译官”。

客户端如何与服务器通信?

传输机制(Transport)(https://modelcontextprotocol.io/docs/concepts/transports) 是一种通信通道,负责处理客户端与服务器间信息(消息)交换的底层原理。

MCP中交换的消息共有三种类型,它们均采用 JSON-RPC 2.0(https://www.jsonrpc.org/specification) 格式。

这些消息类型是:

  1. 1.请求(Requests):请求某项内容的消息,期望得到响应。

在下面的示例中,客户端请求服务器为查询“旧金山”调用“天气”工具,并期望得到响应。

{
"jsonrpc":"2.0",
"id":1,
"method":"tools/call",
"params":{
"name":"weather",
"arguments":{
"location":"San Francisco"
}
}
}

2. 响应(Responses):回复先前请求的消息。

在下面的示例中,服务器回复了ID为1的请求,提供了查询“旧金山”的具体天气数据:温度(temperature)和状况(condition)。

{
"jsonrpc":"2.0",
"id":1,
"result":{
"temperature":"72°F",
"condition":"sunny"
}
}

3. 通知(Notifications):告知某事的消息,不期望得到响应。

在下面的示例中,服务器发送了一个进度更新消息,但不期望任何回复(请注意没有id字段)。

{
"jsonrpc":"2.0",
"method":"$/progress",
"params":{
"message":"Processing data...",
"progress":0.8
}
}

MCP使用以下两种常见的通信机制来交换这些消息:

  1. 1.标准输入/输出(stdio)
    这种机制允许通过计算机上的标准输入和输出流进行通信。它是一种更简单的机制,最适用于:






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5