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.
- package/README.md +20 -59
- package/dist/WebServerStandalone.js +14 -9
- package/dist/WebServerStandalone.js.map +1 -1
- package/dist/cli.js +17 -12
- package/dist/cli.js.map +1 -1
- package/dist/mcpServerProxy.js +8 -6
- package/dist/mcpServerProxy.js.map +1 -1
- package/dist/package.json +2 -2
- package/docs/mcp-tool-calling.md +137 -7
- package/package.json +2 -2
- package/web/dist/assets/form-utils-DmILtYcF.js +22 -0
- package/web/dist/assets/form-utils-DmILtYcF.js.map +1 -0
- package/web/dist/assets/index-Cz9EK1KU.css +1 -0
- package/web/dist/assets/{index-Bm0tkth6.js → index-Uy1wxZ-_.js} +2 -2
- package/web/dist/assets/{index-Bm0tkth6.js.map → index-Uy1wxZ-_.js.map} +1 -1
- package/web/dist/assets/radix-ui-DW48STyt.js.map +1 -1
- package/web/dist/assets/{react-vendor-DMAqVlhz.js → react-vendor-CP-QpYlg.js} +31 -31
- package/web/dist/assets/react-vendor-CP-QpYlg.js.map +1 -0
- package/web/dist/assets/{utils-CQtMWMoa.js → utils-DYeV2b9J.js} +2 -2
- package/web/dist/assets/{utils-CQtMWMoa.js.map → utils-DYeV2b9J.js.map} +1 -1
- package/web/dist/assets/vendor-DCIxzvIG.js +10 -0
- package/web/dist/assets/vendor-DCIxzvIG.js.map +1 -0
- package/web/dist/index.html +6 -6
- package/web/dist/assets/form-utils-BAESeaiO.js +0 -22
- package/web/dist/assets/form-utils-BAESeaiO.js.map +0 -1
- package/web/dist/assets/index-FjYZvnDD.css +0 -1
- package/web/dist/assets/react-vendor-DMAqVlhz.js.map +0 -1
- package/web/dist/assets/vendor-C4NtkA-O.js +0 -10
- 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.
|
|
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.
|
|
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",
|
package/docs/mcp-tool-calling.md
CHANGED
|
@@ -2,7 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
## 概述
|
|
4
4
|
|
|
5
|
-
`xiaozhi mcp call` 命令用于调用已配置的 MCP (Model Context Protocol)
|
|
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
|
-
- `<服务名称>`:
|
|
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
|
|
196
|
-
- `xiaozhi
|
|
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.
|
|
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.
|
|
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",
|