Skip to main content
在本教程中,你将学习如何构建一个由 LLM 驱动的聊天机器人客户端,用于连接 MCP 服务器。 Before you begin, it helps to have gone through our Build an MCP Server tutorial so you can understand how clients and servers communicate.
你可以在这里找到本教程的完整代码。

系统要求

开始之前,请确保你的系统满足以下要求:
  • Mac 或 Windows 电脑
  • 已安装最新版本的 Python
  • 已安装最新版本的 uv

配置你的环境

首先,使用 uv 创建一个新的 Python 项目:

配置你的 API 密钥

你需要从 Anthropic 控制台 获取一个 Anthropic API 密钥。创建一个 .env 文件来保存它:
.env 添加到你的 .gitignore
请确保妥善保管你的 ANTHROPIC_API_KEY

创建客户端

基本客户端结构

首先,来设置我们的导入并创建基本的客户端类:

服务器连接管理

接下来,我们实现连接到 MCP 服务器的方法:

查询处理逻辑

现在我们为处理查询并处理工具调用添加核心功能:

交互式聊天界面

现在我们添加聊天循环和清理功能:

主入口

最后,我们添加主执行逻辑:
你可以在这里找到完整的 client.py 文件:这里

关键组件解释

1. 客户端初始化

  • MCPClient 类使用会话管理和 API 客户端进行初始化
  • 使用 AsyncExitStack 以正确管理资源
  • 配置 Anthropic 客户端以与 Claude 进行交互

2. 服务器连接

  • 支持 Python 和 Node.js 服务器
  • 验证服务器脚本类型
  • 设置正确的通信通道
  • 初始化会话并列出可用工具

3. 查询处理

  • 保持对话上下文
  • 处理 Claude 的响应和工具调用
  • 管理 Claude 与工具之间的消息流
  • 将结果组合成连贯的响应

4. 交互界面

  • 提供简单的命令行界面
  • 处理用户输入并展示响应
  • 包含基本的错误处理
  • 支持正常退出

5. 资源管理

  • 正确清理资源
  • 错误处理连接问题
  • 优雅的关停流程

常见的自定义点

  1. 工具处理
    • 修改 process_query() 以处理特定工具类型
    • 添加针对工具调用的自定义错误处理
    • 实现工具特定的响应格式化
  2. 响应处理
    • 自定义工具结果的格式
    • 添加响应过滤或转换
    • 实现自定义日志记录
  3. 用户界面
    • 添加 GUI 或 Web 界面
    • 实现更丰富的控制台输出
    • 添加命令历史或自动补全

运行客户端

要使用任意 MCP 服务器运行你的客户端:
如果你正在从 服务器 quickstart 的天气教程继续,那么你的命令可能类似这样:python client.py .../quickstart-resources/weather-server-python/weather.py
客户端将会:
  1. 连接到指定服务器
  2. 列出可用工具
  3. 启动一个交互式聊天会话,你可以:
    • 输入查询
    • 查看工具执行过程
    • 从 Claude 获取响应
下面是一个连接到服务器 quickstart 中天气服务器时的示例效果:

工作原理

当你提交一个查询时:
  1. 客户端从服务器获取可用工具列表
  2. 你的查询会与工具描述一起发送给 Claude
  3. Claude 决定是否(以及使用哪些)工具
  4. 客户端通过服务器执行任何被请求的工具调用
  5. 将结果发送回 Claude
  6. Claude 生成自然语言响应
  7. 响应会显示给你

最佳实践

  1. 错误处理
    • 始终将工具调用放入 try-catch 块中
    • 提供有意义的错误信息
    • 优雅地处理连接问题
  2. 资源管理
    • 使用 AsyncExitStack 进行正确清理
    • 在完成后关闭连接
    • 处理服务器断开连接
  3. 安全
    • 将 API 密钥安全地存储在 .env
    • 验证服务器响应
    • 谨慎对待工具权限
  4. Tool Names
    • Tool names can be validated according to the format specified here
    • If a tool name conforms to the specified format, it should not fail validation by an MCP client

故障排查

服务器路径问题

  • 再次确认你的服务器脚本路径是否正确
  • 如果相对路径不起作用,请使用绝对路径
  • 对于 Windows 用户,请确保在路径中使用正斜杠(/)或转义的反斜杠(\)
  • 验证服务器文件的扩展名是否正确(Python 为 .py,Node.js 为 .js)
示例:正确的路径用法:

响应时间

  • 首次响应可能需要最多 30 秒才能返回
  • 这很正常,发生在以下过程中:
    • 服务器正在初始化
    • Claude 正在处理查询
    • 工具正在执行
  • 后续响应通常更快
  • 在这段初始等待期间不要打断流程

常见错误信息

如果你看到:
  • FileNotFoundError:检查你的服务器路径
  • Connection refused:确保服务器正在运行,并且路径正确
  • Tool execution failed:验证工具所需的环境变量是否已设置
  • Timeout error:考虑在客户端配置中增加超时时间

下一步

示例服务器

查看我们的官方 MCP 服务器和实现库