xiaozhi-client 1.6.11 → 1.6.13-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/README.md +20 -59
  2. package/dist/WebServerStandalone.js +14 -9
  3. package/dist/WebServerStandalone.js.map +1 -1
  4. package/dist/cli.js +17 -12
  5. package/dist/cli.js.map +1 -1
  6. package/dist/mcpServerProxy.js +8 -6
  7. package/dist/mcpServerProxy.js.map +1 -1
  8. package/dist/package.json +2 -2
  9. package/docs/mcp-tool-calling.md +137 -7
  10. package/package.json +2 -2
  11. package/web/dist/assets/form-utils-DmILtYcF.js +22 -0
  12. package/web/dist/assets/form-utils-DmILtYcF.js.map +1 -0
  13. package/web/dist/assets/index-Cz9EK1KU.css +1 -0
  14. package/web/dist/assets/{index-Bm0tkth6.js → index-Uy1wxZ-_.js} +2 -2
  15. package/web/dist/assets/{index-Bm0tkth6.js.map → index-Uy1wxZ-_.js.map} +1 -1
  16. package/web/dist/assets/radix-ui-DW48STyt.js.map +1 -1
  17. package/web/dist/assets/{react-vendor-DMAqVlhz.js → react-vendor-CP-QpYlg.js} +31 -31
  18. package/web/dist/assets/react-vendor-CP-QpYlg.js.map +1 -0
  19. package/web/dist/assets/{utils-CQtMWMoa.js → utils-DYeV2b9J.js} +2 -2
  20. package/web/dist/assets/{utils-CQtMWMoa.js.map → utils-DYeV2b9J.js.map} +1 -1
  21. package/web/dist/assets/vendor-DCIxzvIG.js +10 -0
  22. package/web/dist/assets/vendor-DCIxzvIG.js.map +1 -0
  23. package/web/dist/index.html +6 -6
  24. package/web/dist/assets/form-utils-BAESeaiO.js +0 -22
  25. package/web/dist/assets/form-utils-BAESeaiO.js.map +0 -1
  26. package/web/dist/assets/index-FjYZvnDD.css +0 -1
  27. package/web/dist/assets/react-vendor-DMAqVlhz.js.map +0 -1
  28. package/web/dist/assets/vendor-C4NtkA-O.js +0 -10
  29. package/web/dist/assets/vendor-C4NtkA-O.js.map +0 -1
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xiaozhi-client",
3
- "version": "1.6.11",
3
+ "version": "1.6.13-beta.0",
4
4
  "description": "小智 AI 客户端 命令行工具",
5
5
  "type": "module",
6
6
  "main": "dist/cli.js",
@@ -61,7 +61,7 @@
61
61
  "dotenv": "^17.2.1",
62
62
  "eventsource": "^4.0.0",
63
63
  "express": "^5.1.0",
64
- "hono": "^4.8.10",
64
+ "hono": "^4.9.6",
65
65
  "json5": "^2.2.3",
66
66
  "json5-writer": "^0.2.0",
67
67
  "jsonc-parser": "^3.3.1",
@@ -2,7 +2,17 @@
2
2
 
3
3
  ## 概述
4
4
 
5
- `xiaozhi mcp call` 命令用于调用已配置的 MCP (Model Context Protocol) 服务中的工具。该命令通过 HTTP API 与后台服务通信,实现对各种 MCP 工具的统一调用接口。
5
+ `xiaozhi mcp call` 命令用于调用已配置的 MCP (Model Context Protocol) 服务中的工具,以及自定义的 customMCP 工具。该命令通过 HTTP API 与后台服务通信,实现对各种 MCP 工具和 customMCP 工具的统一调用接口。
6
+
7
+ ### 支持的工具类型
8
+
9
+ 1. **标准 MCP 工具**:通过 MCP 协议连接的外部服务工具
10
+ 2. **customMCP 工具**:在配置文件中直接定义的自定义工具,支持多种处理器类型:
11
+ - **proxy**:代理调用第三方平台(如 Coze、Dify、n8n)
12
+ - **http**:直接 HTTP API 调用
13
+ - **function**:JavaScript 函数执行
14
+ - **script**:脚本执行(Node.js、Python 等)
15
+ - **chain**:链式工具调用
6
16
 
7
17
  ## 前置条件
8
18
 
@@ -12,7 +22,7 @@
12
22
  ```bash
13
23
  # 启动后台服务
14
24
  xiaozhi start -d
15
-
25
+
16
26
  # 检查服务状态
17
27
  xiaozhi status
18
28
  ```
@@ -22,20 +32,31 @@
22
32
 
23
33
  ## 命令语法
24
34
 
35
+ ### 标准 MCP 工具调用
36
+
25
37
  ```bash
26
38
  xiaozhi mcp call <服务名称> <工具名称> [选项]
27
39
  ```
28
40
 
41
+ ### customMCP 工具调用
42
+
43
+ ```bash
44
+ xiaozhi mcp call customMCP <工具名称> [选项]
45
+ ```
46
+
29
47
  ### 参数说明
30
48
 
31
49
  #### 必需参数
32
50
 
33
- - `<服务名称>`:MCP 服务的名称,在配置文件中定义
51
+ - `<服务名称>`:
52
+ - 对于标准 MCP 工具:MCP 服务的名称,在配置文件中定义
53
+ - 对于 customMCP 工具:固定使用 `customMCP`
34
54
  - `<工具名称>`:要调用的工具名称
35
55
 
36
56
  #### 可选参数
37
57
 
38
58
  - `--args <JSON>`:工具参数,JSON 格式字符串(默认值:`{}`)
59
+ - customMCP 工具支持基于 JSON Schema 的参数验证
39
60
 
40
61
  ### 选项格式
41
62
 
@@ -45,7 +66,7 @@ xiaozhi mcp call <服务名称> <工具名称> [选项]
45
66
 
46
67
  ## 使用示例
47
68
 
48
- ### 基础示例
69
+ ### 标准 MCP 工具示例
49
70
 
50
71
  #### 1. 调用计算器工具
51
72
 
@@ -69,6 +90,39 @@ xiaozhi mcp call datetime get_current_date
69
90
  xiaozhi mcp call datetime add_time --args '{"date": "2024-01-01", "days": 7}'
70
91
  ```
71
92
 
93
+ ### customMCP 工具示例
94
+
95
+ #### 3. 调用 Coze 工作流工具
96
+
97
+ ```bash
98
+ # 调用 Coze 工作流进行文本分析
99
+ xiaozhi mcp call customMCP coze_workflow_analyzer --args '{"input": "这是一段需要分析的文本内容"}'
100
+ ```
101
+
102
+ **输出示例:**
103
+ ```
104
+ ✔ customMCP/coze_workflow_analyzer: {"content":[{"type":"text","text":"分析结果:这是一段中性情感的文本..."}]}
105
+ ```
106
+
107
+ #### 4. 调用 HTTP API 工具
108
+
109
+ ```bash
110
+ # 获取天气信息
111
+ xiaozhi mcp call customMCP weather_api --args '{"city": "北京", "units": "metric"}'
112
+ ```
113
+
114
+ #### 5. 调用函数处理器工具
115
+
116
+ ```bash
117
+ # 文本处理
118
+ xiaozhi mcp call customMCP text_processor --args '{"text": "Hello World", "operation": "uppercase"}'
119
+ ```
120
+
121
+ **输出示例:**
122
+ ```
123
+ ✔ customMCP/text_processor: {"content":[{"type":"text","text":"HELLO WORLD"}]}
124
+ ```
125
+
72
126
  ### 复杂参数示例
73
127
 
74
128
  #### 3. 多参数工具调用
@@ -180,6 +234,52 @@ xiaozhi mcp call service tool --args {"param": "value"} # 缺少引号
180
234
  xiaozhi mcp call service tool --args '{"param": value}' # 值缺少引号
181
235
  ```
182
236
 
237
+ ### 6. customMCP 工具不存在错误
238
+
239
+ **错误信息:**
240
+ ```
241
+ 错误: customMCP 工具 'unknown_tool' 不存在。可用的 customMCP 工具: coze_workflow, text_processor。请使用 'xiaozhi mcp list' 查看所有可用工具。
242
+ ```
243
+
244
+ **解决方法:**
245
+ - 检查工具名称拼写是否正确
246
+ - 使用 `xiaozhi mcp list --tools` 查看所有可用的 customMCP 工具
247
+ - 确认工具已在 `xiaozhi.config.json` 的 `customMCP.tools` 中正确定义
248
+
249
+ ### 7. customMCP 参数验证失败
250
+
251
+ **错误信息:**
252
+ ```
253
+ 错误: 参数验证失败: 缺少必需参数: input
254
+ ```
255
+
256
+ **解决方法:**
257
+ - 检查工具的 `inputSchema` 定义,了解必需参数
258
+ - 确保提供所有必需参数
259
+ - 验证参数类型是否正确
260
+
261
+ **示例:**
262
+ ```bash
263
+ # 错误:缺少必需参数
264
+ xiaozhi mcp call customMCP text_processor --args '{}'
265
+
266
+ # 正确:提供所有必需参数
267
+ xiaozhi mcp call customMCP text_processor --args '{"text": "Hello", "operation": "uppercase"}'
268
+ ```
269
+
270
+ ### 8. customMCP 配置错误
271
+
272
+ **错误信息:**
273
+ ```
274
+ 错误: customMCP 工具 'my_tool' 配置验证失败。请检查配置文件中的工具定义。
275
+ ```
276
+
277
+ **解决方法:**
278
+ - 检查 `xiaozhi.config.json` 中的 customMCP 配置语法
279
+ - 确认 handler 类型和配置参数正确
280
+ - 验证环境变量是否已设置(如 API 密钥)
281
+ - 参考 [customMCP 配置示例文档](./custom-mcp-handlers-examples.md)
282
+
183
283
  ## 相关命令
184
284
 
185
285
  ### 服务管理命令
@@ -191,9 +291,10 @@ xiaozhi mcp call service tool --args '{"param": value}' # 值缺少引号
191
291
 
192
292
  ### MCP 相关命令
193
293
 
194
- - `xiaozhi mcp list`:列出所有可用的 MCP 服务和工具
195
- - `xiaozhi mcp tool <服务名> <工具名> <enable|disable>`:启用或禁用工具
196
- - `xiaozhi config show`:查看当前配置
294
+ - `xiaozhi mcp list`:列出所有可用的 MCP 服务和 customMCP 工具
295
+ - `xiaozhi mcp list --tools`:显示详细的工具列表,包括 customMCP 工具
296
+ - `xiaozhi mcp tool <服务名> <工具名> <enable|disable>`:启用或禁用标准 MCP 工具
297
+ - `xiaozhi config show`:查看当前配置,包括 customMCP 配置
197
298
 
198
299
  ## 技术架构说明
199
300
 
@@ -211,11 +312,40 @@ xiaozhi mcp call service tool --args '{"param": value}' # 值缺少引号
211
312
 
212
313
  ## 最佳实践
213
314
 
315
+ ### 通用最佳实践
316
+
214
317
  1. **参数验证**:调用前确认参数格式和内容正确
215
318
  2. **错误处理**:根据错误信息进行相应的故障排除
216
319
  3. **服务监控**:定期检查服务状态确保正常运行
217
320
  4. **配置管理**:保持 MCP 服务配置的准确性和时效性
218
321
 
322
+ ### customMCP 工具最佳实践
323
+
324
+ 1. **配置验证**:
325
+ - 使用 `xiaozhi mcp list` 验证 customMCP 工具是否正确加载
326
+ - 定期检查配置文件语法和结构
327
+ - 确保环境变量正确设置
328
+
329
+ 2. **参数设计**:
330
+ - 为 customMCP 工具定义清晰的 `inputSchema`
331
+ - 使用适当的参数类型和验证规则
332
+ - 提供有意义的参数描述
333
+
334
+ 3. **错误处理**:
335
+ - 实现适当的超时和重试机制
336
+ - 为不同的 handler 类型配置合适的错误处理策略
337
+ - 监控外部 API 调用的成功率
338
+
339
+ 4. **性能优化**:
340
+ - 合理设置超时时间,避免长时间等待
341
+ - 对于频繁调用的工具,考虑缓存机制
342
+ - 监控工具调用的响应时间
343
+
344
+ 5. **安全考虑**:
345
+ - 使用环境变量存储敏感信息(API 密钥等)
346
+ - 定期轮换 API 密钥和访问令牌
347
+ - 限制工具的访问权限和操作范围
348
+
219
349
  ## 故障排除检查清单
220
350
 
221
351
  遇到问题时,请按以下顺序检查:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xiaozhi-client",
3
- "version": "1.6.11",
3
+ "version": "1.6.13-beta.0",
4
4
  "description": "小智 AI 客户端 命令行工具",
5
5
  "type": "module",
6
6
  "main": "dist/cli.js",
@@ -61,7 +61,7 @@
61
61
  "dotenv": "^17.2.1",
62
62
  "eventsource": "^4.0.0",
63
63
  "express": "^5.1.0",
64
- "hono": "^4.8.10",
64
+ "hono": "^4.9.6",
65
65
  "json5": "^2.2.3",
66
66
  "json5-writer": "^0.2.0",
67
67
  "jsonc-parser": "^3.3.1",