xiaozhi-client 1.9.3 → 1.9.4-beta.1

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 (138) hide show
  1. package/README.md +2 -2
  2. package/dist/WebServerLauncher.js +2 -100
  3. package/dist/backend/WebServerLauncher.js +100 -0
  4. package/dist/backend/WebServerLauncher.js.map +1 -0
  5. package/dist/backend/cli.js +129 -0
  6. package/dist/backend/cli.js.map +1 -0
  7. package/dist/{package.json → backend/package.json} +21 -9
  8. package/dist/cli.js +2 -129
  9. package/dist/docs/404/index.html +19 -0
  10. package/dist/docs/404.html +19 -0
  11. package/dist/docs/_next/static/JZ0ESgtaHnsqkxSabOqqU/_buildManifest.js +1 -0
  12. package/dist/docs/_next/static/JZ0ESgtaHnsqkxSabOqqU/_ssgManifest.js +1 -0
  13. package/dist/docs/_next/static/chunks/112-c9cbd8401d35f825.js +4 -0
  14. package/dist/docs/_next/static/chunks/2a9bc5d7-4c434acf20ba934a.js +1 -0
  15. package/dist/docs/_next/static/chunks/782-c26ca6c69e488d48.js +1 -0
  16. package/dist/docs/_next/static/chunks/799-fe0d35806fd12012.js +1 -0
  17. package/dist/docs/_next/static/chunks/9b1cb2c3-cc9ed703e6aef1a2.js +1 -0
  18. package/dist/docs/_next/static/chunks/app/[[...mdxPath]]/page-48f5c8f3210e0a8a.js +1 -0
  19. package/dist/docs/_next/static/chunks/app/_not-found/page-2e38866a1cbb77e4.js +1 -0
  20. package/dist/docs/_next/static/chunks/app/layout-e8f420537fd59e8d.js +1 -0
  21. package/dist/docs/_next/static/chunks/framework-b73126dabbf07067.js +1 -0
  22. package/dist/docs/_next/static/chunks/main-75dc65850b89d90d.js +1 -0
  23. package/dist/docs/_next/static/chunks/main-app-3303134270964ce6.js +1 -0
  24. package/dist/docs/_next/static/chunks/pages/_app-e698a68d07c8993d.js +1 -0
  25. package/dist/docs/_next/static/chunks/pages/_error-189a41ab5833da03.js +1 -0
  26. package/dist/docs/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  27. package/dist/docs/_next/static/chunks/webpack-10e2bf7d852ddb6e.js +1 -0
  28. package/dist/docs/_next/static/css/2d82b615fcca1590.css +1 -0
  29. package/dist/docs/_next/static/css/b03484a3c350cf6e.css +1 -0
  30. package/dist/docs/_next/static/css/b289318ef4b60b0a.css +1 -0
  31. package/dist/docs/changelog/index.html +585 -0
  32. package/dist/docs/changelog/index.txt +1079 -0
  33. package/dist/docs/images/coze-workflow/get-parameter.png +0 -0
  34. package/dist/docs/index.html +22 -0
  35. package/dist/docs/index.txt +41 -0
  36. package/dist/docs/quickstart/index.html +64 -0
  37. package/dist/docs/quickstart/index.txt +185 -0
  38. package/dist/docs/reference/command/index.html +20 -0
  39. package/dist/docs/reference/command/index.txt +42 -0
  40. package/dist/docs/usage/as-mcp/index.html +36 -0
  41. package/dist/docs/usage/as-mcp/index.txt +101 -0
  42. package/dist/docs/usage/coze-workflow/index.html +35 -0
  43. package/dist/docs/usage/coze-workflow/index.txt +120 -0
  44. package/dist/docs/usage/docker/index.html +40 -0
  45. package/dist/docs/usage/docker/index.txt +154 -0
  46. package/dist/docs/usage/modelscope/index.html +32 -0
  47. package/dist/docs/usage/modelscope/index.txt +109 -0
  48. package/dist/docs/usage/multi-endpoint/index.html +32 -0
  49. package/dist/docs/usage/multi-endpoint/index.txt +118 -0
  50. package/dist/frontend/assets/form-utils-h64o2Nyg.js.map +1 -0
  51. package/{apps/frontend/dist → dist/frontend}/assets/index-88NfCOo9.js.map +1 -1
  52. package/dist/frontend/assets/radix-ui-BA32w1ww.js.map +1 -0
  53. package/dist/frontend/assets/react-vendor-DrjkXih1.js.map +1 -0
  54. package/dist/frontend/assets/utils-CiPelQLP.js.map +1 -0
  55. package/dist/frontend/assets/vendor-DK9yaMt3.js.map +1 -0
  56. package/dist/shared-types/index.js +36 -0
  57. package/dist/shared-types/index.js.map +1 -0
  58. package/package.json +21 -9
  59. package/apps/frontend/README.md +0 -169
  60. package/apps/frontend/dist/assets/form-utils-h64o2Nyg.js.map +0 -1
  61. package/apps/frontend/dist/assets/radix-ui-BA32w1ww.js.map +0 -1
  62. package/apps/frontend/dist/assets/react-vendor-DrjkXih1.js.map +0 -1
  63. package/apps/frontend/dist/assets/utils-CiPelQLP.js.map +0 -1
  64. package/apps/frontend/dist/assets/vendor-DK9yaMt3.js.map +0 -1
  65. package/dist/WebServerLauncher.js.map +0 -1
  66. package/dist/cli.js.map +0 -1
  67. package/docs/arch/cache.mdx +0 -885
  68. package/docs/changelog.mdx +0 -645
  69. package/docs/development/architecture.mdx +0 -71
  70. package/docs/development/docker-build.mdx +0 -256
  71. package/docs/development/todo__release-guide.md +0 -563
  72. package/docs/development/todo__setting-manager.md +0 -122
  73. package/docs/docs.json +0 -55
  74. package/docs/getting-started/install.mdx +0 -191
  75. package/docs/getting-started/intro.mdx +0 -11
  76. package/docs/getting-started/quickstart.mdx +0 -108
  77. package/docs/mcp-tool-calling.md +0 -363
  78. package/docs/python-dependencies.md +0 -216
  79. package/docs/reference/command.mdx +0 -15
  80. package/docs/usage/add-mcp-server.mdx +0 -6
  81. package/docs/usage/as-a-mcp-server.mdx +0 -76
  82. package/docs/usage/coze-workflow.mdx +0 -73
  83. package/docs/usage/docker.mdx +0 -99
  84. package/docs/usage/modelscope.mdx +0 -74
  85. package/docs/usage/use-multi-xiaozhi-mcp-endpoints.mdx +0 -77
  86. package/docs/usage/web-control.mdx +0 -6
  87. /package/dist/{WebServerLauncher.d.ts → backend/WebServerLauncher.d.ts} +0 -0
  88. /package/dist/{cli.d.ts → backend/cli.d.ts} +0 -0
  89. /package/dist/{templates → backend/templates}/default/mcpServers/calculator.js +0 -0
  90. /package/dist/{templates → backend/templates}/default/mcpServers/datetime.js +0 -0
  91. /package/dist/{templates → backend/templates}/default/package.json +0 -0
  92. /package/dist/{templates → backend/templates}/default/xiaozhi.config.json +0 -0
  93. /package/dist/{templates → backend/templates}/hello-world/mcpServers/calculator.js +0 -0
  94. /package/dist/{templates → backend/templates}/hello-world/mcpServers/datetime.js +0 -0
  95. /package/dist/{templates → backend/templates}/hello-world/package.json +0 -0
  96. /package/dist/{templates → backend/templates}/hello-world/xiaozhi.config.json +0 -0
  97. /package/dist/{templates → backend/templates}/json5/mcpServers/calculator.js +0 -0
  98. /package/dist/{templates → backend/templates}/json5/mcpServers/datetime.js +0 -0
  99. /package/dist/{templates → backend/templates}/json5/package.json +0 -0
  100. /package/dist/{templates → backend/templates}/json5/xiaozhi.config.json5 +0 -0
  101. /package/dist/{templates → backend/templates}/jsonc/mcpServers/calculator.js +0 -0
  102. /package/dist/{templates → backend/templates}/jsonc/mcpServers/datetime.js +0 -0
  103. /package/dist/{templates → backend/templates}/jsonc/package.json +0 -0
  104. /package/dist/{templates → backend/templates}/jsonc/xiaozhi.config.jsonc +0 -0
  105. /package/dist/{templates → backend/templates}/modelscope/xiaozhi.config.json +0 -0
  106. /package/{docs/images/coze-workflow/get-parameter.png → dist/docs/_next/static/media/get-parameter.62eee93d.png} +0 -0
  107. /package/{docs → dist/docs}/images/add-to-cherry-studio/step-1.png +0 -0
  108. /package/{docs → dist/docs}/images/add-to-cherry-studio/step-2.png +0 -0
  109. /package/{docs → dist/docs}/images/add-to-cherry-studio/step-3.png +0 -0
  110. /package/{docs → dist/docs}/images/add-to-cherry-studio/step-4.png +0 -0
  111. /package/{docs → dist/docs}/images/add-to-cherry-studio/step-5.png +0 -0
  112. /package/{docs → dist/docs}/images/add-to-cursor/step-1.png +0 -0
  113. /package/{docs → dist/docs}/images/add-to-cursor/step-2.png +0 -0
  114. /package/{docs → dist/docs}/images/add-to-cursor/step-3.png +0 -0
  115. /package/{docs → dist/docs}/images/coze-workflow/config-workflow-step-1.png +0 -0
  116. /package/{docs → dist/docs}/images/coze-workflow/config-workflow-step-2.png +0 -0
  117. /package/{docs → dist/docs}/images/coze-workflow/config-workflow-step-3.png +0 -0
  118. /package/{docs → dist/docs}/images/integrate-to-cherry-studio.png +0 -0
  119. /package/{docs → dist/docs}/images/integrate-to-cursor.png +0 -0
  120. /package/{docs → dist/docs}/images/modelscope/step-1.png +0 -0
  121. /package/{docs → dist/docs}/images/modelscope/step-2.png +0 -0
  122. /package/{docs → dist/docs}/images/modelscope/step-3.png +0 -0
  123. /package/{docs → dist/docs}/images/modelscope/step-4.png +0 -0
  124. /package/{docs → dist/docs}/images/preview.png +0 -0
  125. /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-1.png +0 -0
  126. /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-2.png +0 -0
  127. /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-3.png +0 -0
  128. /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-4.png +0 -0
  129. /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-5.png +0 -0
  130. /package/{docs → dist/docs}/images/web-ui-preview.png +0 -0
  131. /package/{apps/frontend/dist → dist/frontend}/assets/form-utils-h64o2Nyg.js +0 -0
  132. /package/{apps/frontend/dist → dist/frontend}/assets/index-88NfCOo9.js +0 -0
  133. /package/{apps/frontend/dist → dist/frontend}/assets/index-P6Zq3MZF.css +0 -0
  134. /package/{apps/frontend/dist → dist/frontend}/assets/radix-ui-BA32w1ww.js +0 -0
  135. /package/{apps/frontend/dist → dist/frontend}/assets/react-vendor-DrjkXih1.js +0 -0
  136. /package/{apps/frontend/dist → dist/frontend}/assets/utils-CiPelQLP.js +0 -0
  137. /package/{apps/frontend/dist → dist/frontend}/assets/vendor-DK9yaMt3.js +0 -0
  138. /package/{apps/frontend/dist → dist/frontend}/index.html +0 -0
@@ -1,363 +0,0 @@
1
- # xiaozhi mcp call 命令使用说明
2
-
3
- ## 概述
4
-
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**:链式工具调用
16
-
17
- ## 前置条件
18
-
19
- 在使用 `xiaozhi mcp call` 命令之前,请确保:
20
-
21
- 1. **服务已启动**:xiaozhi 后台服务必须正在运行
22
- ```bash
23
- # 启动后台服务
24
- xiaozhi start -d
25
-
26
- # 检查服务状态
27
- xiaozhi status
28
- ```
29
-
30
- 2. **MCP 服务已配置**:在配置文件中正确配置了 MCP 服务
31
- 3. **工具已启用**:目标工具未被禁用
32
-
33
- ## 命令语法
34
-
35
- ### 标准 MCP 工具调用
36
-
37
- ```bash
38
- xiaozhi mcp call <服务名称> <工具名称> [选项]
39
- ```
40
-
41
- ### customMCP 工具调用
42
-
43
- ```bash
44
- xiaozhi mcp call customMCP <工具名称> [选项]
45
- ```
46
-
47
- ### 参数说明
48
-
49
- #### 必需参数
50
-
51
- - `<服务名称>`:
52
- - 对于标准 MCP 工具:MCP 服务的名称,在配置文件中定义
53
- - 对于 customMCP 工具:固定使用 `customMCP`
54
- - `<工具名称>`:要调用的工具名称
55
-
56
- #### 可选参数
57
-
58
- - `--args <JSON>`:工具参数,JSON 格式字符串(默认值:`{}`)
59
- - customMCP 工具支持基于 JSON Schema 的参数验证
60
-
61
- ### 选项格式
62
-
63
- ```bash
64
- --args '{"参数名1": "参数值1", "参数名2": "参数值2"}'
65
- ```
66
-
67
- ## 使用示例
68
-
69
- ### 标准 MCP 工具示例
70
-
71
- #### 1. 调用计算器工具
72
-
73
- ```bash
74
- # 执行简单的数学计算
75
- xiaozhi mcp call calculator calculator --args '{"javascript_expression": "1+2"}'
76
- ```
77
-
78
- **输出示例:**
79
- ```
80
- ✔ calculator/calculator: {"content":[{"type":"text","text":"{\"success\":true,\"result\":3}"}]}
81
- ```
82
-
83
- #### 2. 调用日期时间工具
84
-
85
- ```bash
86
- # 获取当前日期
87
- xiaozhi mcp call datetime get_current_date
88
-
89
- # 添加时间
90
- xiaozhi mcp call datetime add_time --args '{"date": "2024-01-01", "days": 7}'
91
- ```
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
-
126
- ### 复杂参数示例
127
-
128
- #### 3. 多参数工具调用
129
-
130
- ```bash
131
- # 调用包含多个参数的工具
132
- xiaozhi mcp call myservice mytool --args '{
133
- "param1": "value1",
134
- "param2": 123,
135
- "param3": true,
136
- "param4": ["item1", "item2"]
137
- }'
138
- ```
139
-
140
- #### 4. 嵌套对象参数
141
-
142
- ```bash
143
- # 传递嵌套对象作为参数
144
- xiaozhi mcp call dataservice process --args '{
145
- "config": {
146
- "format": "json",
147
- "options": {
148
- "pretty": true,
149
- "indent": 2
150
- }
151
- },
152
- "data": ["a", "b", "c"]
153
- }'
154
- ```
155
-
156
- ## 常见错误和解决方法
157
-
158
- ### 1. 服务未启动错误
159
-
160
- **错误信息:**
161
- ```
162
- 错误: xiaozhi 服务未启动。请先运行 'xiaozhi start' 或 'xiaozhi start -d' 启动服务。
163
- ```
164
-
165
- **解决方法:**
166
- ```bash
167
- # 启动后台服务
168
- xiaozhi start -d
169
-
170
- # 验证服务状态
171
- xiaozhi status
172
- ```
173
-
174
- ### 2. 服务不存在错误
175
-
176
- **错误信息:**
177
- ```
178
- 错误: 服务 'nonexistent' 不存在。可用服务: calculator, datetime
179
- ```
180
-
181
- **解决方法:**
182
- - 检查服务名称拼写是否正确
183
- - 使用 `xiaozhi config show` 查看已配置的服务
184
- - 确认服务已在配置文件中正确定义
185
-
186
- ### 3. 工具不存在错误
187
-
188
- **错误信息:**
189
- ```
190
- 错误: 工具 'unknown_tool' 在服务 'calculator' 中不存在。可用工具: calculator
191
- ```
192
-
193
- **解决方法:**
194
- - 检查工具名称拼写是否正确
195
- - 查看服务文档了解可用工具列表
196
- - 使用正确的工具名称重新调用
197
-
198
- ### 4. 工具已被禁用错误
199
-
200
- **错误信息:**
201
- ```
202
- 错误: 工具 'calculator' 已被禁用。请使用 'xiaozhi mcp tool calculator calculator enable' 启用该工具。
203
- ```
204
-
205
- **解决方法:**
206
- ```bash
207
- # 启用指定工具
208
- xiaozhi mcp tool calculator calculator enable
209
-
210
- # 重新调用工具
211
- xiaozhi mcp call calculator calculator --args '{"javascript_expression": "1+2"}'
212
- ```
213
-
214
- ### 5. 参数格式错误
215
-
216
- **错误信息:**
217
- ```
218
- 错误: 参数格式错误: Unexpected token...
219
- ```
220
-
221
- **解决方法:**
222
- - 确保 JSON 格式正确
223
- - 使用单引号包围 JSON 字符串
224
- - 检查 JSON 中的引号、括号、逗号等语法
225
-
226
- **正确格式:**
227
- ```bash
228
- xiaozhi mcp call service tool --args '{"param": "value"}'
229
- ```
230
-
231
- **错误格式:**
232
- ```bash
233
- xiaozhi mcp call service tool --args {"param": "value"} # 缺少引号
234
- xiaozhi mcp call service tool --args '{"param": value}' # 值缺少引号
235
- ```
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
-
283
- ## 相关命令
284
-
285
- ### 服务管理命令
286
-
287
- - `xiaozhi start [-d]`:启动 xiaozhi 服务
288
- - `xiaozhi stop`:停止 xiaozhi 服务
289
- - `xiaozhi status`:查看服务状态
290
- - `xiaozhi restart [-d]`:重启服务
291
-
292
- ### MCP 相关命令
293
-
294
- - `xiaozhi mcp list`:列出所有可用的 MCP 服务和 customMCP 工具
295
- - `xiaozhi mcp list --tools`:显示详细的工具列表,包括 customMCP 工具
296
- - `xiaozhi mcp tool <服务名> <工具名> <enable|disable>`:启用或禁用标准 MCP 工具
297
- - `xiaozhi config show`:查看当前配置,包括 customMCP 配置
298
-
299
- ## 技术架构说明
300
-
301
- `xiaozhi mcp call` 命令采用以下架构:
302
-
303
- 1. **CLI 命令**:解析用户输入的命令和参数
304
- 2. **HTTP API 调用**:通过 HTTP 请求调用后台服务的 `/api/tools/call` 端点
305
- 3. **后台服务处理**:后台服务管理所有 MCP 连接并执行工具调用
306
- 4. **结果返回**:将工具执行结果格式化后返回给用户
307
-
308
- 这种架构确保了:
309
- - CLI 和后台服务的清晰分离
310
- - 统一的工具调用接口
311
- - 可靠的错误处理和状态管理
312
-
313
- ## 最佳实践
314
-
315
- ### 通用最佳实践
316
-
317
- 1. **参数验证**:调用前确认参数格式和内容正确
318
- 2. **错误处理**:根据错误信息进行相应的故障排除
319
- 3. **服务监控**:定期检查服务状态确保正常运行
320
- 4. **配置管理**:保持 MCP 服务配置的准确性和时效性
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
-
349
- ## 故障排除检查清单
350
-
351
- 遇到问题时,请按以下顺序检查:
352
-
353
- - [ ] xiaozhi 服务是否正在运行(`xiaozhi status`)
354
- - [ ] 服务名称和工具名称是否正确
355
- - [ ] 参数 JSON 格式是否有效
356
- - [ ] 工具是否已启用
357
- - [ ] 网络连接是否正常
358
- - [ ] 配置文件是否正确
359
-
360
- 如果问题仍然存在,请查看日志文件获取更详细的错误信息:
361
- ```bash
362
- xiaozhi attach # 查看实时日志
363
- ```
@@ -1,216 +0,0 @@
1
- # Python 依赖管理指南
2
-
3
- xiaozhi-client Docker 容器支持动态 Python 依赖管理,让你可以轻松添加和管理 Python 包,特别适用于 MCP (Model Context Protocol) 服务器开发。
4
-
5
- ## 🚀 快速开始
6
-
7
- ### 1. 创建自定义依赖文件
8
-
9
- 在你的挂载目录(通常是 `~/xiaozhi-client/`)中创建 `requirements.txt` 文件:
10
-
11
- ```bash
12
- # 在主机上创建文件
13
- echo "mcp-proxy>=0.8.2" > ~/xiaozhi-client/requirements.txt
14
- ```
15
-
16
- ### 2. 重启容器
17
-
18
- ```bash
19
- docker restart xiaozhi-client
20
- ```
21
-
22
- 容器启动时会自动检测并安装新的依赖包。
23
-
24
- ## 📋 工作原理
25
-
26
- ### 依赖安装优先级
27
-
28
- 1. **用户自定义** (`~/xiaozhi-client/requirements.txt`) - 最高优先级
29
- 2. **默认模板** (`docker/templates/requirements.txt`) - 仅在用户未自定义时使用
30
-
31
- ### 安装流程
32
-
33
- 容器启动时会按以下顺序执行:
34
-
35
- 1. 检查 `/workspaces/requirements.txt`(用户自定义文件)
36
- 2. 如果存在且包含有效内容,安装用户依赖
37
- 3. 如果不存在,检查是否需要安装默认依赖
38
- 4. 所有依赖都安装在 Python 虚拟环境中(`/opt/venv`)
39
-
40
- ## 📝 使用示例
41
-
42
- ### 示例 1:添加 MCP 相关包
43
-
44
- ```bash
45
- # ~/xiaozhi-client/requirements.txt
46
- mcp-proxy>=0.8.2
47
- mcp-server-git>=0.1.0
48
- ```
49
-
50
- ### 示例 2:添加数据科学包
51
-
52
- ```bash
53
- # ~/xiaozhi-client/requirements.txt
54
- numpy>=1.24.0
55
- pandas>=2.0.0
56
- matplotlib>=3.7.0
57
- ```
58
-
59
- ### 示例 3:添加 Web 开发包
60
-
61
- ```bash
62
- # ~/xiaozhi-client/requirements.txt
63
- fastapi>=0.104.0
64
- uvicorn>=0.24.0
65
- sqlalchemy>=2.0.0
66
- ```
67
-
68
- ### 示例 4:完整的 MCP 服务器依赖
69
-
70
- ```bash
71
- # ~/xiaozhi-client/requirements.txt
72
- # MCP 核心
73
- mcp>=1.13.0
74
- fastmcp>=2.11.0
75
-
76
- # 网络通信
77
- httpx>=0.27.0
78
- websockets>=12.0
79
-
80
- # 数据处理
81
- pydantic>=2.11.0
82
- python-dotenv>=1.0.0
83
-
84
- # 自定义包
85
- mcp-proxy>=0.8.2
86
- openai>=1.0.0
87
- ```
88
-
89
- ## 🔧 高级用法
90
-
91
- ### 版本固定
92
-
93
- ```bash
94
- # 固定特定版本
95
- mcp==1.13.0
96
- fastmcp==2.11.0
97
-
98
- # 版本范围
99
- httpx>=0.27.0,<1.0.0
100
- pydantic>=2.11.0,<3.0.0
101
- ```
102
-
103
- ### 从 Git 安装
104
-
105
- ```bash
106
- # 从 GitHub 安装开发版本
107
- git+https://github.com/user/repo.git
108
- git+https://github.com/user/repo.git@branch_name
109
- ```
110
-
111
- ### 可选依赖
112
-
113
- ```bash
114
- # 安装包的可选依赖
115
- fastapi[all]>=0.104.0
116
- httpx[http2]>=0.27.0
117
- ```
118
-
119
- ## 🐛 故障排除
120
-
121
- ### 查看安装日志
122
-
123
- 容器启动时会显示详细的安装日志:
124
-
125
- ```bash
126
- docker logs xiaozhi-client
127
- ```
128
-
129
- ### 常见问题
130
-
131
- #### 1. 依赖安装失败
132
-
133
- **症状**:容器启动时显示警告信息
134
- **解决**:
135
- - 检查包名拼写是否正确
136
- - 确认版本号是否存在
137
- - 查看完整错误日志
138
-
139
- #### 2. 包版本冲突
140
-
141
- **症状**:安装过程中出现依赖冲突
142
- **解决**:
143
- - 使用兼容的版本范围
144
- - 移除冲突的包
145
- - 使用虚拟环境隔离
146
-
147
- #### 3. 网络连接问题
148
-
149
- **症状**:下载包时超时
150
- **解决**:
151
- - 容器已配置清华大学 PyPI 镜像源
152
- - 检查网络连接
153
- - 重试安装
154
-
155
- ### 手动安装包
156
-
157
- 如果需要在运行中的容器内手动安装包:
158
-
159
- ```bash
160
- # 进入容器
161
- docker exec -it xiaozhi-client bash
162
-
163
- # 激活虚拟环境并安装
164
- source /opt/venv/bin/activate
165
- pip install package_name
166
- ```
167
-
168
- ## 📚 默认预装包
169
-
170
- 容器默认包含以下 MCP 开发常用包:
171
-
172
- - `mcp` - 官方 MCP Python SDK
173
- - `fastmcp` - 高级 MCP 框架
174
- - `httpx` - 现代 HTTP 客户端
175
- - `websockets` - WebSocket 支持
176
- - `pydantic` - 数据验证
177
- - `python-dotenv` - 环境变量管理
178
- - `aiofiles` - 异步文件操作
179
-
180
- 完整列表请查看 `docker/templates/requirements.txt`。
181
-
182
- ## 🔄 更新依赖
183
-
184
- ### 更新单个包
185
-
186
- ```bash
187
- # 修改 requirements.txt 中的版本号
188
- mcp>=1.14.0 # 从 1.13.0 更新到 1.14.0
189
-
190
- # 重启容器
191
- docker restart xiaozhi-client
192
- ```
193
-
194
- ### 批量更新
195
-
196
- ```bash
197
- # 在容器内手动更新
198
- docker exec -it xiaozhi-client bash
199
- source /opt/venv/bin/activate
200
- pip install --upgrade -r requirements.txt
201
- ```
202
-
203
- ## 💡 最佳实践
204
-
205
- 1. **版本管理**:使用版本范围而不是固定版本,确保兼容性
206
- 2. **依赖分组**:在 requirements.txt 中使用注释分组相关依赖
207
- 3. **测试验证**:添加新依赖后测试 MCP 服务器功能
208
- 4. **备份配置**:定期备份 requirements.txt 文件
209
- 5. **最小化原则**:只安装必需的包,避免臃肿
210
-
211
- ## 🔗 相关链接
212
-
213
- - [MCP 官方文档](https://modelcontextprotocol.io/)
214
- - [FastMCP 文档](https://gofastmcp.com/)
215
- - [Python 包索引 (PyPI)](https://pypi.org/)
216
- - [pip 用户指南](https://pip.pypa.io/en/stable/user_guide/)
@@ -1,15 +0,0 @@
1
- ---
2
- title: 常用命令
3
- sidebarTitle: 常用命令
4
- ---
5
-
6
- | 命令 | 说明 |
7
- | --------------------------------------------- | --------------------------- |
8
- | xiaozhi help | 帮助信息 |
9
- | xiaozhi create | 创建应用 |
10
- | xiaozhi start | 启动服务 |
11
- | xiaozhi stop | 停止服务 |
12
- | xiaozhi status | 查看服务状态 |
13
- | xiaozhi config mcpEndpoint \<小智接入点地址\> | 设置小智接入点 |
14
- | xiaozhi mcp list | 列出所有 MCP 服务 |
15
- | xiaozhi mcp list --tools | 列出所有正在使用的 MCP 工具 |
@@ -1,6 +0,0 @@
1
- ---
2
- title: 添加 MCP 服务
3
- sidebarTitle: 添加 MCP 服务
4
- ---
5
-
6
- 添加 MCP 服务
@@ -1,76 +0,0 @@
1
- ---
2
- title: 接入到 MCP 客户端
3
- sidebarTitle: 接入到 MCP 客户端
4
- ---
5
-
6
- <Note>
7
- xiaozhi-client 不仅可以连接小智服务端接入点,还可以作为普通 MCP 服务被其他客户端集成。
8
- </Note>
9
-
10
- ## 准备工作
11
-
12
- 首先,你需要先启动服务
13
-
14
- ```bash
15
- xiaozhi start
16
- ```
17
-
18
- <Note>服务启动后,你可以使用以下配置添加到你的MCP客户端中</Note>
19
-
20
- ```json mcpServer
21
- {
22
- "mcpServers": {
23
- "xiaozhi-client": {
24
- "type": "streamableHttp",
25
- "url": "http://localhost:9999/mcp"
26
- }
27
- }
28
- }
29
- ```
30
-
31
- ## 接入到 Cherry Studio 中
32
-
33
- <Steps>
34
- <Step title="配置 MCP 服务">
35
- <Frame caption="第一步:打开 cherry-studio 中的 添加 MCP 服务弹窗">
36
- <img src="/images/add-to-cherry-studio/step-1.png" alt="第一步:打开 cherry-studio 中的 添加 MCP 服务弹窗" />
37
- </Frame>
38
- <br />
39
- <Frame caption="第二步:添加 MCP 并点击 确定 按钮">
40
- <img src="/images/add-to-cherry-studio/step-2.png" alt="第二步:添加 MCP 并点击 确定 按钮" />
41
- </Frame>
42
- <br />
43
- <Frame caption="添加成功后 xiaozhi-client 会出现在 MCP 列表中">
44
- <img src="/images/add-to-cherry-studio/step-3.png" alt="添加成功后 xiaozhi-client 会出现在 MCP 列表中" />
45
- </Frame>
46
- </Step>
47
-
48
- <Step title="测试效果">
49
- <Frame caption="第一步:在 cherry-studio 的聊天界面添加 xiaozhi-client MCP">
50
- <img src="/images/add-to-cherry-studio/step-4.png" alt="第一步:在 cherry-studio 的聊天界面添加 xiaozhi-client MCP" />
51
- </Frame>
52
- <br />
53
- <Frame caption="第二步:在聊天界面输入问题,并点击 发送 按钮">
54
- <img src="/images/add-to-cherry-studio/step-5.png" alt="第二步:在聊天界面输入问题,并点击 发送 按钮" />
55
- </Frame>
56
- </Step>
57
- </Steps>
58
-
59
- ## 接入到 Cursor 中
60
- <Steps>
61
- <Step title="配置 MCP 服务">
62
- <Frame caption="第一步:打开 cursor 的 MCP 配置界面">
63
- <img src="/images/add-to-cursor/step-1.png" alt="第一步:打开 cursor 的 MCP 配置界面" />
64
- </Frame>
65
- <br />
66
- <Frame caption="第二步:添加 xiaozhi-client MCP">
67
- <img src="/images/add-to-cursor/step-2.png" alt="第二步:添加 xiaozhi-client MCP" />
68
- </Frame>
69
- </Step>
70
-
71
- <Step title="测试效果">
72
- <Frame caption="在 cursor 的聊天界面输入问题,并点击 发送 按钮">
73
- <img src="/images/add-to-cursor/step-3.png" alt="在 cursor 的聊天界面输入问题,并点击 发送 按钮" />
74
- </Frame>
75
- </Step>
76
- </Steps>