J'Blog

4 课 · 概念

语义检索

基于 Chroma 向量库,与 Workspace 知识库分离。用自然语言描述你想查的内容。 非管理员每人每天可检索 5 次(消耗站点 AI 配额)。

客户端与 Host

原文:客户端与 Host

一句话

MCP 客户端是由 Host 应用程序(如 Claude.ai 或 IDE)实例化的组件,用于与特定 MCP 服务器通信,同时提供征询、根目录和采样等核心功能。

什么时候翻这页

当你需要理解 MCP 架构中客户端与 Host 的区别,或者需要实现客户端功能(如征询用户信息、限制服务器文件访问范围、通过客户端请求 LLM 完成任务)时。

核心概念

Host 与客户端的区别

  • Host:用户直接交互的应用程序(如 Claude.ai 或 IDE),管理整体用户体验并协调多个客户端
  • 客户端:协议级别的组件,处理与一个服务器的直接通信,由 Host 实例化

三大核心客户端功能

  1. 征询 (Elicitation)

    • 服务器可在交互过程中向用户请求特定信息
    • 提供结构化方式按需收集信息
    • 服务器可暂停操作等待用户输入
  2. 根目录 (Roots)

    • 定义服务器操作的文件系统边界
    • 客户端指定服务器应关注的目录
    • 使用 file:// URI 方案标识目录
  3. 采样 (Sampling)

    • 服务器通过客户端请求 LLM 完成任务
    • 客户端控制用户权限和安全措施
    • 维持不同上下文间的清晰边界

怎么做

实现征询功能

  1. 服务器发起征询请求:
{
  "method": "elicitation/create",
  "params": {
    "message": "请确认您的巴塞罗那度假预订详情:",
    "schema": {
      "type": "object",
      "properties": {
        "confirmBooking": {
          "type": "boolean",
          "description": "确认预订(航班+酒店=3,000美元)"
        },
        "seatPreference": {
          "type": "string",
          "enum": ["靠窗", "过道", "无偏好"],
          "description": "航班座位偏好"
        }
      },
      "required": ["confirmBooking"]
    }
  }
}
  1. 客户端显示征询界面并收集用户响应
  2. 将响应返回给服务器继续处理

配置根目录

  1. 客户端向服务器提供文件系统根目录:
{
  "uri": "file:///Users/agent/travel-planning",
  "name": "旅行规划工作区"
}
  1. 服务器尊重这些边界,在指定目录内操作
  2. 当用户打开不同项目时,客户端通过 roots/list_changed 通知服务器

使用采样功能

  1. 服务器发起采样请求:
{
  "messages": [
    {
      "role": "user",
      "content": "分析这些航班选项并推荐最佳选择:\n[47个航班的价格、时间、航空公司和经停信息]\n用户偏好:早晨出发,最多1次经停"
    }
  ],
  "modelPreferences": {
    "hints": [{
      "name": "claude-sonnet-4-20250514"
    }],
    "intelligencePriority": 0.9
  },
  "systemPrompt": "您是帮助用户根据偏好找到最佳航班的旅行专家",
  "maxTokens": 1500
}
  1. 客户端向用户展示请求并获取批准
  2. 客户端与 LLM 交互并返回批准的响应

命令 / 配置速查

征询相关

  • elicitation/create - 服务器发起征询请求
  • 包含 message(提示消息)和 schema(数据结构)参数

根目录相关

  • roots/list_changed - 根目录变更通知
  • 根目录使用 file:// URI 方案
  • 客户端可动态更新根目录列表

采样相关

  • sampling/createMessage - 服务器发起采样请求
  • 包含 messages、modelPreferences、systemPrompt 和 maxTokens 参数

与 Claude Code / Hello-Agents 的联系

在 Claude Code 手册的 MCP 章节中,我们了解了 MCP 的基本架构。本章节深入探讨了客户端的具体功能,特别是采样功能与 Hello-Agents 第 10 章中代理行为模式相呼应,展示了如何通过客户端控制 AI 交互的安全性和权限。

初学者易错点

  1. 混淆 Host 与客户端:Host 是用户交互的应用,客户端是协议组件,不是同一层级
  2. 误解根目录的安全作用:根目录是协调机制而非安全边界,实际安全需通过操作系统权限实现
  3. 忽略用户控制:采样功能设计包含用户审查点,不应完全绕过用户控制
  4. 过度依赖征询:征询应作为补充而非替代,避免频繁打断用户工作流

相关词条

官方原文:https://modelcontextprotocol.io/docs/learn/client-concepts