|
| 1 | +# MCP 文档查询优先级规则 |
| 2 | + |
| 3 | +当用户或模型需要了解开源工具或库的详细用法时,在使用模型记忆前,务必优先尝试使用 MCP 相关工具查询在线文档。 |
| 4 | + |
| 5 | +## 触发条件 |
| 6 | + |
| 7 | +以下情况需要触发文档查询流程: |
| 8 | + |
| 9 | +1. **用户询问开源库/工具的用法** |
| 10 | + - "如何使用 XXX 库" |
| 11 | + - "XXX 框架的最佳实践" |
| 12 | + - "XXX 工具怎么配置" |
| 13 | + |
| 14 | +2. **需要查看最新文档** |
| 15 | + - 用户要求查看官方文档 |
| 16 | + - 库/工具有版本更新 |
| 17 | + - 需要最新的 API 信息或配置示例 |
| 18 | + |
| 19 | +3. **模型不确定具体用法** |
| 20 | + - 库的 API 文档可能已过时 |
| 21 | + - 需要验证最新的配置方式 |
| 22 | + - 需要查看官方示例代码 |
| 23 | + |
| 24 | +## 可用的 MCP 工具 |
| 25 | + |
| 26 | +### 1. resolve-library-id |
| 27 | + |
| 28 | +用于解析和查找开源库的标识符。 |
| 29 | + |
| 30 | +**用途**:获取库的规范 Context7 兼容标识符(格式:`/org/project` 或 `/org/project/version`),用于后续查询文档。 |
| 31 | + |
| 32 | +**必需参数**: |
| 33 | +- `query`:用户需要帮助的问题或任务描述 |
| 34 | +- `libraryName`:要搜索的库名称 |
| 35 | + |
| 36 | +**返回信息**: |
| 37 | +- Library ID:Context7 兼容标识符 |
| 38 | +- Name:库名称 |
| 39 | +- Description:库描述 |
| 40 | +- Code Snippets:可用代码示例数量 |
| 41 | +- Source Reputation:权威性指示(High, Medium, Low, Unknown) |
| 42 | +- Benchmark Score:质量指示(100 为最高分) |
| 43 | +- Versions:可用版本列表 |
| 44 | + |
| 45 | +**使用示例**: |
| 46 | +``` |
| 47 | +resolve-library-id(query: "如何使用 React hooks", libraryName: "React") |
| 48 | +resolve-library-id(query: "Vue 3 响应式 API", libraryName: "Vue") |
| 49 | +resolve-library-id(query: "Express.js 中间件", libraryName: "Express.js") |
| 50 | +``` |
| 51 | + |
| 52 | +### 2. query-docs |
| 53 | + |
| 54 | +用于查询库或工具的在线文档和代码示例。 |
| 55 | + |
| 56 | +**用途**:获取库的官方文档、API 参考、使用示例等详细信息。 |
| 57 | + |
| 58 | +**必需参数**: |
| 59 | +- `libraryId`:Context7 兼容标识符(格式:`/org/project` 或 `/org/project/version`) |
| 60 | +- `query`:具体的查询问题或需求 |
| 61 | + |
| 62 | +**返回信息**: |
| 63 | +- 官方文档内容 |
| 64 | +- 代码示例 |
| 65 | +- API 参考 |
| 66 | +- 配置说明 |
| 67 | + |
| 68 | +**使用示例**: |
| 69 | +``` |
| 70 | +query-docs(libraryId: "/facebook/react", query: "useState hook 用法") |
| 71 | +query-docs(libraryId: "/vuejs/core", query: "Composition API reactive 函数") |
| 72 | +query-docs(libraryId: "/expressjs/express", query: "中间件开发最佳实践") |
| 73 | +``` |
| 74 | + |
| 75 | +**重要限制**: |
| 76 | +- 每个查询最多调用 3 次,若无法找到所需信息,使用已有的最佳结果 |
| 77 | +- 若第一个查询失败,可以调整查询词重试,但要计入次数限制 |
| 78 | + |
| 79 | +## 执行流程 |
| 80 | + |
| 81 | +### 步骤 1:识别查询需求 |
| 82 | + |
| 83 | +检查用户输入是否涉及以下情况: |
| 84 | +- 询问开源工具/库的用法 |
| 85 | +- 需要查看官方文档 |
| 86 | +- 需要最新的配置示例 |
| 87 | + |
| 88 | +### 步骤 2:使用 resolve-library-id 解析库标识 |
| 89 | + |
| 90 | +如果用户询问的库名称不确定或需要获得规范的 Context7 标识符,使用 `resolve-library-id` 工具。 |
| 91 | + |
| 92 | +**示例**: |
| 93 | +``` |
| 94 | +用户输入:"怎么用 React 的 hooks?" |
| 95 | +执行: |
| 96 | + - query: "怎么用 React 的 hooks?" |
| 97 | + - libraryName: "React" |
| 98 | +结果:获得库的规范标识符,如 /facebook/react |
| 99 | +``` |
| 100 | + |
| 101 | +### 步骤 3:使用 query-docs 查询文档 |
| 102 | + |
| 103 | +基于解析结果的 libraryId,使用 `query-docs` 工具查询相关的在线文档。 |
| 104 | + |
| 105 | +**示例**: |
| 106 | +``` |
| 107 | +用户输入:"怎么用 React 的 hooks?" |
| 108 | +执行: |
| 109 | + - libraryId: "/facebook/react" |
| 110 | + - query: "useState hook 用法和最佳实践" |
| 111 | +结果:获得官方文档中关于 Hooks 的详细信息和代码示例 |
| 112 | +``` |
| 113 | + |
| 114 | +### 步骤 4:综合结果 |
| 115 | + |
| 116 | +将查询到的在线文档与模型知识相结合,为用户提供最准确、最新的回答。 |
| 117 | + |
| 118 | +## 查询优先顺序 |
| 119 | + |
| 120 | +1. **优先使用 MCP 工具查询在线文档** |
| 121 | + - 确保获得最新的官方信息 |
| 122 | + - 避免使用过时的记忆信息 |
| 123 | + - 获得权威的代码示例 |
| 124 | + |
| 125 | +2. **无缝回退到模型记忆** |
| 126 | + - 若工具无法访问或不可用,直接使用模型记忆中的信息 |
| 127 | + - 无需向用户反馈工具不可用的情况 |
| 128 | + - 继续为用户提供有帮助的回答 |
| 129 | + |
| 130 | +3. **补充说明** |
| 131 | + - 结合官方文档的最新信息与项目实际需求 |
| 132 | + - 根据 Source Reputation 和 Benchmark Score 评估信息质量 |
| 133 | + - 提供更加准确和及时的建议 |
| 134 | + |
| 135 | +## 查询调用限制 |
| 136 | + |
| 137 | +- **最多调用 3 次**:对单个查询 `query-docs` 最多调用 3 次 |
| 138 | +- **计数方式**:每次调用 `query-docs` 都计入限制,包括不同关键词的查询 |
| 139 | +- **超出限制处理**:如果 3 次查询后仍未找到所需信息,使用已有的最佳结果回答用户 |
| 140 | + |
| 141 | +## 注意事项 |
| 142 | + |
| 143 | +- **始终优先查询**:即使模型记忆中有相关信息,也应优先尝试查询在线文档 |
| 144 | +- **无缝回退**:当 MCP 工具无法访问时,直接使用模型记忆,不向用户反馈工具不可用 |
| 145 | +- **库标识规范化**:优先使用 `resolve-library-id` 获得规范的 Context7 标识符,避免手动猜测 |
| 146 | +- **版本指定**:如果用户明确提到版本,使用对应版本的 libraryId(如 `/facebook/react/v18.0.0`) |
| 147 | +- **选库质量指标**: |
| 148 | + - 优先选择 Source Reputation 为 High 或 Medium 的库 |
| 149 | + - 参考 Benchmark Score 评估质量(100 为最高) |
| 150 | + - 选择 Code Snippets 数量多的库(文档示例丰富) |
| 151 | +- **调用限制**:严格遵守 `query-docs` 最多 3 次调用的限制 |
| 152 | +- **查询词优化**: |
| 153 | + - 第一次查询用通用关键词(如 "useState hook") |
| 154 | + - 若结果不理想,第二次查询用更具体的需求描述(如 "useState hook 性能优化") |
| 155 | + - 第三次为最后尝试,选择最能直达用户需求的查询词 |
| 156 | +- **缓存利用**:MCP 工具可能会缓存查询结果,无需重复查询完全相同的内容 |
| 157 | +- **用户体验**:多数查询应在 1-2 秒内完成,不会显著增加响应时间 |
| 158 | + |
| 159 | +## 与其他规则的关系 |
| 160 | + |
| 161 | +- **auto-use-skills.md**:MCP 工具查询是获取信息的补充手段,不冲突 |
| 162 | +- **user-teaching-memory.md**:MCP 查询结果可以作为项目知识被记录到 MEMORY.md |
| 163 | +- **code-quality-standards.md**:使用最新的官方文档确保代码质量和最佳实践 |
| 164 | + |
| 165 | +## 示例场景 |
| 166 | + |
| 167 | +### 场景 1:用户询问库的用法 |
| 168 | + |
| 169 | +``` |
| 170 | +用户输入:"如何在 Vue 3 中使用 Composition API 创建响应式数据?" |
| 171 | +
|
| 172 | +执行流程: |
| 173 | +1. resolve-library-id( |
| 174 | + query: "如何在 Vue 3 中使用 Composition API", |
| 175 | + libraryName: "Vue" |
| 176 | + ) |
| 177 | + 结果:获得 /vuejs/core |
| 178 | +
|
| 179 | +2. query-docs( |
| 180 | + libraryId: "/vuejs/core", |
| 181 | + query: "Composition API reactive 函数创建响应式数据" |
| 182 | + ) |
| 183 | + 结果:获得官方文档和代码示例 |
| 184 | +
|
| 185 | +3. 综合结果为用户提供最新的代码示例和解释 |
| 186 | +``` |
| 187 | + |
| 188 | +### 场景 2:需要验证配置方式 |
| 189 | + |
| 190 | +``` |
| 191 | +用户输入:"Webpack 5 怎么配置代码分割?" |
| 192 | +
|
| 193 | +执行流程: |
| 194 | +1. resolve-library-id( |
| 195 | + query: "Webpack 5 代码分割配置", |
| 196 | + libraryName: "Webpack" |
| 197 | + ) |
| 198 | + 结果:获得 /webpack/webpack 或特定版本 |
| 199 | +
|
| 200 | +2. query-docs( |
| 201 | + libraryId: "/webpack/webpack", |
| 202 | + query: "code splitting 配置方式" |
| 203 | + ) |
| 204 | + 结果:获得官方推荐的配置方式 |
| 205 | +
|
| 206 | +3. 如果结果不够详细,可选择第二次查询(3 次限制内): |
| 207 | + query-docs( |
| 208 | + libraryId: "/webpack/webpack", |
| 209 | + query: "code splitting 最佳实践示例" |
| 210 | + ) |
| 211 | +``` |
| 212 | + |
| 213 | +### 场景 3:查询最新的 API 参考 |
| 214 | + |
| 215 | +``` |
| 216 | +用户输入:"Node.js 的 fs.promises API 有哪些方法?" |
| 217 | +
|
| 218 | +执行流程: |
| 219 | +1. resolve-library-id( |
| 220 | + query: "Node.js fs.promises API 参考", |
| 221 | + libraryName: "Node.js" |
| 222 | + ) |
| 223 | + 结果:获得 /nodejs/node 或对应版本 |
| 224 | +
|
| 225 | +2. query-docs( |
| 226 | + libraryId: "/nodejs/node", |
| 227 | + query: "fs.promises API 方法列表和用法" |
| 228 | + ) |
| 229 | + 结果:提供最新的 API 列表和使用示例 |
| 230 | +``` |
0 commit comments