Skip to main content

MCP_SKILLS — MCP 技能发现

Feature Flag: FEATURE_MCP_SKILLS=1 实现状态:功能性实现(config 门控筛选器完整,核心 fetcher 为 stub) 引用数:9

一、功能概述

MCP_SKILLS 将 MCP 服务器暴露的资源(skill:// URI 方案)发现并转换为可调用的技能命令。MCP 服务器可以同时提供 tools、prompts 和 resources;启用此 feature 后,带有 skill:// URI 的资源被识别为技能。

核心特性

  • 自动发现:MCP 服务器连接时自动获取 skill:// 资源
  • 命令转换:将 MCP 资源转换为 prompt 类型的 Command 对象
  • 实时刷新:prompts/resources 列表变化时重新获取技能
  • 缓存一致性:连接关闭时清除技能缓存

二、实现架构

2.1 数据流

2.2 技能筛选

文件:src/commands.ts:604-616 getMcpSkillCommands(mcpCommands) 过滤条件:

2.3 条件加载

文件:src/services/mcp/client.ts:129-133 fetchMcpSkillsForClient 通过 require() 条件加载,feature flag 关闭时不加载任何模块:

2.4 缓存管理

技能获取函数维护 .cache(Map),在以下时机清除:

2.5 集成点

三、关键设计决策

  1. Feature gate 隔离feature('MCP_SKILLS') 守护条件 require() 和所有调用点。关闭时无模块加载、无获取操作
  2. 资源到技能映射:技能从 MCP 服务器的 skill:// URI 资源中发现。fetchMcpSkillsForClient 负责转换(当前为 stub)
  3. 循环依赖避免mcpSkillBuilders.ts 作为依赖图叶节点,避免 client.ts ↔ mcpSkills.ts ↔ loadSkillsDir.ts 循环
  4. 服务器能力检查:技能获取还需要 MCP 服务器支持 resources (!!client.capabilities?.resources)

四、使用方式

五、需要补全的内容

六、文件索引