2.MCP clients
此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org
==================================================
MCP 客户端充当您的服务器与 MCP 服务器之间的通信桥梁。可以将其视为访问 MCP 服务器提供的所有工具的接入点。当您需要使用外部工具或服务时,客户端会为您处理所有消息传递和协议细节。
传输协议无关通信
MCP 的一个关键优势是传输协议无关性——这是一种优雅的表达方式,意思是客户端和服务器可以使用不同的通信方法相互交流。最常见的设置是在同一台机器上运行 MCP 客户端和服务器,它们通过标准输入/输出进行通信。

但您不仅限于这种方法。MCP 客户端和服务器还可以通过以下方式连接:
- HTTP
- WebSockets
- 各种其他网络协议

Message Types
连接后,客户端和服务器会交换 MCP 规范中定义的特定消息类型。您将使用的主要消息类型包括:

ListToolsRequest/ListToolsResult:客户端询问服务器"您提供哪些工具?"并获得可用工具列表的回复。

CallToolRequest/CallToolResult:客户端要求服务器使用特定参数运行某个工具,然后接收结果。

完整流程示例
以下是所有组件在实际场景中如何协同工作的示例。假设用户询问"我有哪些仓库?"——以下是完整的通信流程:

当用户向您的服务器提交查询时,流程就开始了。您的服务器意识到在发出请求之前,需要为Claude提供可用工具的列表。

您的服务器向MCP客户端请求工具,MCP客户端向MCP服务器发送ListToolsRequest请求,并接收返回的ListToolsResult结果。

现在您的服务器拥有了向Claude发出初始请求所需的一切——用户的问题和可用的工具。

Claude检查这些工具并决定需要调用其中一个来回答问题。它返回一个工具使用请求。

您的服务器要求MCP客户端执行Claude请求的工具。MCP客户端向MCP服务器发送CallToolRequest请求,然后MCP服务器向GitHub发出实际请求。

GitHub返回仓库数据,数据通过MCP服务器以CallToolResult的形式流回,然后传递给MCP客户端,最终到达您的服务器。

您的服务器在后续消息中将工具结果发送回Claude。Claude现在拥有了制定完整响应所需的所有信息。

最后,Claude返回格式化的答案,您的服务器将其传递回用户。
是的,这个流程涉及很多步骤,但每个组件都有明确的职责。MCP客户端抽象了服务器通信的复杂性,让您可以专注于构建应用程序逻辑。当我们实现自己的MCP客户端和服务器时,您将看到每个部分在实践中是如何协同工作的。
==================================================
此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org