菜单

客户端用法

相关源文件

本文档介绍了如何使用 MCP(模型上下文协议)客户端实现来连接和交互 MCP 服务器。客户端为所有 MCP 协议操作提供了一个高级接口,包括工具执行、资源访问和提示管理。

有关处理服务器发起的通知的信息,请参阅处理通知。有关传输机制的详细信息,请参阅传输机制

客户端生命周期

MCP 客户端遵循结构化的生命周期,包含设置、初始化、使用和清理等不同阶段。

来源:client/client.go44-54 client/client.go56-75 client/client.go124-172 examples/simple_client/main.go87-149

客户端创建与配置

使用NewClient函数,并提供传输层和可选的配置来创建客户端。

Client结构维护连接状态、功能和通知处理程序。

字段目的类型
transport底层传输层transport.Interface
initialized初始化状态bool
notifications通知处理程序[]func(mcp.JSONRPCNotification)
clientCapabilities客户端声明的功能mcp.ClientCapabilities
serverCapabilities服务器报告的功能mcp.ServerCapabilities

来源:client/client.go15-25 client/client.go29-34 client/client.go36-54

连接与初始化

创建客户端后,必须启动传输连接并完成 MCP 初始化握手。

初始化过程处理功能协商,并发送必需的notifications/initialized消息以完成握手。

来源:client/client.go56-75 client/client.go124-172 examples/simple_client/main.go97-116

传输配置

客户端通过transport.Interface支持多种传输机制。每种传输类型都有特定的配置要求。

来源:client/client.go11 client/client.go17 examples/simple_client/main.go52-84

Stdio 传输示例

适用于命令行服务器进程

HTTP 传输示例

适用于基于 HTTP 的服务器

来源:examples/simple_client/main.go52-53 examples/simple_client/main.go78-84

核心操作

客户端提供所有主要 MCP 协议操作的方法,按功能领域进行组织。

来源:client/client.go92-122 client/client.go174-416

工具操作

工具代表服务器提供的可执行函数。

客户端为列表操作提供了分页(ListToolsByPage)和自动分页(ListTools)两种版本。

来源:client/client.go328-374 examples/simple_client/main.go119-131

资源操作

资源代表可被客户端读取的数据源。

来源:client/client.go179-278 examples/simple_client/main.go134-146

提示操作

提示代表带有参数的可重用消息模板。

来源:client/client.go280-326

分页处理

客户端提供两种处理分页响应的方法。

手动分页

使用*ByPage方法进行受控分页。

自动分页

使用非分页方法,它们会自动获取所有页面。

自动分页实现会内部处理游标管理和上下文取消。

来源: client/client.go191-214 client/client.go339-362 client/client.go401-416

通知处理

客户端支持注册多个通知处理程序,当服务器发送通知时会调用这些处理程序。

通知处理程序按注册顺序同步执行。传输层会自动将收到的通知路由给所有已注册的处理程序。

来源: client/client.go82-90 client/client.go67-73 examples/simple_client/main.go92-95

错误处理与实用程序

客户端提供了几个用于错误处理和调试的实用程序方法。

连接测试

能力检查

传输访问

正确的清理

来源: client/client.go174-177 client/client.go420-434 client/client.go76-80

请求流程与状态管理

客户端维护请求状态并自动处理JSON-RPC协议。

来源: client/client.go92-122 client/client.go104-111

客户端自动处理:

  • 使用原子计数器生成请求ID
  • 初始化状态验证
  • JSON-RPC错误解包
  • 类型化结果的响应反序列化

这提供了一个干净、类型安全的接口,覆盖了底层的JSON-RPC协议,同时保持了完整的MCP兼容性。