加载中...
返回AI 编程实战
AI 编程知识库 · AI 编程实战 · MCP 系统性进阶

高级原语与 2026 新特性:Roots、Sampling、Tasks 与 MCP Apps

高级原语与 MCP Apps


五大原语的设计理念

在上一篇文章中,我们了解了 MCP 的三大核心原语:Tools、Resources、Prompts。

但 MCP 协议实际上定义了 五大原语(如果算上 2026 年新增的 Tasks),它们共同构成了 MCP 的能力体系:

原语 控制方 核心价值 新增版本
Prompts 用户 复用交互模式
Resources 应用 只读数据访问
Tools 模型 执行动作
Roots 客户端 资源边界管理 2025-06
Sampling 客户端 采样控制权 2025-06
Tasks 客户端 异步任务编排 2025-11

设计原则:

  • 明确控制权:每个原语都有明确的控制方
  • 职责分离:不同的能力由不同的方控制
  • 渐进增强:基础功能只用三大原语,高级功能可选

Roots:资源根目录管理

什么是 Roots?

Roots 允许 Client 向 Server 暴露文件系统的「根目录」,Server 只能访问这些根目录下的资源。

核心价值:

  • 访问控制:限制 Server 可以访问哪些目录
  • 多租户隔离:不同 Server 使用不同的根目录
  • 变更通知:根目录列表变更时自动通知 Server

Roots 工作流程

1. Server 请求 roots/list
   ↓
2. Client 返回可访问的根目录列表
   {
     "roots": [
       {
         "name": "home",
         "uri": "file:///Users/用户名"
       },
       {
         "name": "project",
         "uri": "file:///Projects/MyProject"
       }
     ]
   }
   ↓
3. Server 在这些边界内操作
   ↓
4. Root 列表变更时 Client 推送通知
   notifications/roots/list_changed

Roots 使用场景

场景 1:文件访问控制

// Client 配置只暴露特定目录
{
  "mcpServers": {
    "my-server": {
      "allowedRoots": [
        "file:///Users/用户名/Documents",
        "file:///Users/用户名/Projects"
      ]
    }
  }
}

场景 2:多租户隔离

租户 A 的 Server → 只能访问 /tenant-a/
租户 B 的 Server → 只能访问 /tenant-b/

场景 3:动态权限管理

用户在 Client 中修改访问权限
      ↓
Client 推送 roots/list_changed 通知
      ↓
Server 自动更新可访问的根目录列表

Roots 最佳实践

1. 最小权限原则

只暴露 Server 需要的目录,不要暴露整个文件系统。

2. 明确命名

AI 编程知识库会员专享内容
开通后解锁「高级原语与 2026 新特性:Roots、Sampling、Tasks 与 MCP Apps」全文,AI 编程知识库全年访问

扫码添加企业微信,找大熊掌门开通会员

企业微信二维码

添加后说明想开通的会员类型即可

加载中...