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.
- package/README.md +2 -2
- package/dist/WebServerLauncher.js +2 -100
- package/dist/backend/WebServerLauncher.js +100 -0
- package/dist/backend/WebServerLauncher.js.map +1 -0
- package/dist/backend/cli.js +129 -0
- package/dist/backend/cli.js.map +1 -0
- package/dist/{package.json → backend/package.json} +21 -9
- package/dist/cli.js +2 -129
- package/dist/docs/404/index.html +19 -0
- package/dist/docs/404.html +19 -0
- package/dist/docs/_next/static/JZ0ESgtaHnsqkxSabOqqU/_buildManifest.js +1 -0
- package/dist/docs/_next/static/JZ0ESgtaHnsqkxSabOqqU/_ssgManifest.js +1 -0
- package/dist/docs/_next/static/chunks/112-c9cbd8401d35f825.js +4 -0
- package/dist/docs/_next/static/chunks/2a9bc5d7-4c434acf20ba934a.js +1 -0
- package/dist/docs/_next/static/chunks/782-c26ca6c69e488d48.js +1 -0
- package/dist/docs/_next/static/chunks/799-fe0d35806fd12012.js +1 -0
- package/dist/docs/_next/static/chunks/9b1cb2c3-cc9ed703e6aef1a2.js +1 -0
- package/dist/docs/_next/static/chunks/app/[[...mdxPath]]/page-48f5c8f3210e0a8a.js +1 -0
- package/dist/docs/_next/static/chunks/app/_not-found/page-2e38866a1cbb77e4.js +1 -0
- package/dist/docs/_next/static/chunks/app/layout-e8f420537fd59e8d.js +1 -0
- package/dist/docs/_next/static/chunks/framework-b73126dabbf07067.js +1 -0
- package/dist/docs/_next/static/chunks/main-75dc65850b89d90d.js +1 -0
- package/dist/docs/_next/static/chunks/main-app-3303134270964ce6.js +1 -0
- package/dist/docs/_next/static/chunks/pages/_app-e698a68d07c8993d.js +1 -0
- package/dist/docs/_next/static/chunks/pages/_error-189a41ab5833da03.js +1 -0
- package/dist/docs/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/dist/docs/_next/static/chunks/webpack-10e2bf7d852ddb6e.js +1 -0
- package/dist/docs/_next/static/css/2d82b615fcca1590.css +1 -0
- package/dist/docs/_next/static/css/b03484a3c350cf6e.css +1 -0
- package/dist/docs/_next/static/css/b289318ef4b60b0a.css +1 -0
- package/dist/docs/changelog/index.html +585 -0
- package/dist/docs/changelog/index.txt +1079 -0
- package/dist/docs/images/coze-workflow/get-parameter.png +0 -0
- package/dist/docs/index.html +22 -0
- package/dist/docs/index.txt +41 -0
- package/dist/docs/quickstart/index.html +64 -0
- package/dist/docs/quickstart/index.txt +185 -0
- package/dist/docs/reference/command/index.html +20 -0
- package/dist/docs/reference/command/index.txt +42 -0
- package/dist/docs/usage/as-mcp/index.html +36 -0
- package/dist/docs/usage/as-mcp/index.txt +101 -0
- package/dist/docs/usage/coze-workflow/index.html +35 -0
- package/dist/docs/usage/coze-workflow/index.txt +120 -0
- package/dist/docs/usage/docker/index.html +40 -0
- package/dist/docs/usage/docker/index.txt +154 -0
- package/dist/docs/usage/modelscope/index.html +32 -0
- package/dist/docs/usage/modelscope/index.txt +109 -0
- package/dist/docs/usage/multi-endpoint/index.html +32 -0
- package/dist/docs/usage/multi-endpoint/index.txt +118 -0
- package/dist/frontend/assets/form-utils-h64o2Nyg.js.map +1 -0
- package/{apps/frontend/dist → dist/frontend}/assets/index-88NfCOo9.js.map +1 -1
- package/dist/frontend/assets/radix-ui-BA32w1ww.js.map +1 -0
- package/dist/frontend/assets/react-vendor-DrjkXih1.js.map +1 -0
- package/dist/frontend/assets/utils-CiPelQLP.js.map +1 -0
- package/dist/frontend/assets/vendor-DK9yaMt3.js.map +1 -0
- package/dist/shared-types/index.js +36 -0
- package/dist/shared-types/index.js.map +1 -0
- package/package.json +21 -9
- package/apps/frontend/README.md +0 -169
- package/apps/frontend/dist/assets/form-utils-h64o2Nyg.js.map +0 -1
- package/apps/frontend/dist/assets/radix-ui-BA32w1ww.js.map +0 -1
- package/apps/frontend/dist/assets/react-vendor-DrjkXih1.js.map +0 -1
- package/apps/frontend/dist/assets/utils-CiPelQLP.js.map +0 -1
- package/apps/frontend/dist/assets/vendor-DK9yaMt3.js.map +0 -1
- package/dist/WebServerLauncher.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/docs/arch/cache.mdx +0 -885
- package/docs/changelog.mdx +0 -645
- package/docs/development/architecture.mdx +0 -71
- package/docs/development/docker-build.mdx +0 -256
- package/docs/development/todo__release-guide.md +0 -563
- package/docs/development/todo__setting-manager.md +0 -122
- package/docs/docs.json +0 -55
- package/docs/getting-started/install.mdx +0 -191
- package/docs/getting-started/intro.mdx +0 -11
- package/docs/getting-started/quickstart.mdx +0 -108
- package/docs/mcp-tool-calling.md +0 -363
- package/docs/python-dependencies.md +0 -216
- package/docs/reference/command.mdx +0 -15
- package/docs/usage/add-mcp-server.mdx +0 -6
- package/docs/usage/as-a-mcp-server.mdx +0 -76
- package/docs/usage/coze-workflow.mdx +0 -73
- package/docs/usage/docker.mdx +0 -99
- package/docs/usage/modelscope.mdx +0 -74
- package/docs/usage/use-multi-xiaozhi-mcp-endpoints.mdx +0 -77
- package/docs/usage/web-control.mdx +0 -6
- /package/dist/{WebServerLauncher.d.ts → backend/WebServerLauncher.d.ts} +0 -0
- /package/dist/{cli.d.ts → backend/cli.d.ts} +0 -0
- /package/dist/{templates → backend/templates}/default/mcpServers/calculator.js +0 -0
- /package/dist/{templates → backend/templates}/default/mcpServers/datetime.js +0 -0
- /package/dist/{templates → backend/templates}/default/package.json +0 -0
- /package/dist/{templates → backend/templates}/default/xiaozhi.config.json +0 -0
- /package/dist/{templates → backend/templates}/hello-world/mcpServers/calculator.js +0 -0
- /package/dist/{templates → backend/templates}/hello-world/mcpServers/datetime.js +0 -0
- /package/dist/{templates → backend/templates}/hello-world/package.json +0 -0
- /package/dist/{templates → backend/templates}/hello-world/xiaozhi.config.json +0 -0
- /package/dist/{templates → backend/templates}/json5/mcpServers/calculator.js +0 -0
- /package/dist/{templates → backend/templates}/json5/mcpServers/datetime.js +0 -0
- /package/dist/{templates → backend/templates}/json5/package.json +0 -0
- /package/dist/{templates → backend/templates}/json5/xiaozhi.config.json5 +0 -0
- /package/dist/{templates → backend/templates}/jsonc/mcpServers/calculator.js +0 -0
- /package/dist/{templates → backend/templates}/jsonc/mcpServers/datetime.js +0 -0
- /package/dist/{templates → backend/templates}/jsonc/package.json +0 -0
- /package/dist/{templates → backend/templates}/jsonc/xiaozhi.config.jsonc +0 -0
- /package/dist/{templates → backend/templates}/modelscope/xiaozhi.config.json +0 -0
- /package/{docs/images/coze-workflow/get-parameter.png → dist/docs/_next/static/media/get-parameter.62eee93d.png} +0 -0
- /package/{docs → dist/docs}/images/add-to-cherry-studio/step-1.png +0 -0
- /package/{docs → dist/docs}/images/add-to-cherry-studio/step-2.png +0 -0
- /package/{docs → dist/docs}/images/add-to-cherry-studio/step-3.png +0 -0
- /package/{docs → dist/docs}/images/add-to-cherry-studio/step-4.png +0 -0
- /package/{docs → dist/docs}/images/add-to-cherry-studio/step-5.png +0 -0
- /package/{docs → dist/docs}/images/add-to-cursor/step-1.png +0 -0
- /package/{docs → dist/docs}/images/add-to-cursor/step-2.png +0 -0
- /package/{docs → dist/docs}/images/add-to-cursor/step-3.png +0 -0
- /package/{docs → dist/docs}/images/coze-workflow/config-workflow-step-1.png +0 -0
- /package/{docs → dist/docs}/images/coze-workflow/config-workflow-step-2.png +0 -0
- /package/{docs → dist/docs}/images/coze-workflow/config-workflow-step-3.png +0 -0
- /package/{docs → dist/docs}/images/integrate-to-cherry-studio.png +0 -0
- /package/{docs → dist/docs}/images/integrate-to-cursor.png +0 -0
- /package/{docs → dist/docs}/images/modelscope/step-1.png +0 -0
- /package/{docs → dist/docs}/images/modelscope/step-2.png +0 -0
- /package/{docs → dist/docs}/images/modelscope/step-3.png +0 -0
- /package/{docs → dist/docs}/images/modelscope/step-4.png +0 -0
- /package/{docs → dist/docs}/images/preview.png +0 -0
- /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-1.png +0 -0
- /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-2.png +0 -0
- /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-3.png +0 -0
- /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-4.png +0 -0
- /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-5.png +0 -0
- /package/{docs → dist/docs}/images/web-ui-preview.png +0 -0
- /package/{apps/frontend/dist → dist/frontend}/assets/form-utils-h64o2Nyg.js +0 -0
- /package/{apps/frontend/dist → dist/frontend}/assets/index-88NfCOo9.js +0 -0
- /package/{apps/frontend/dist → dist/frontend}/assets/index-P6Zq3MZF.css +0 -0
- /package/{apps/frontend/dist → dist/frontend}/assets/radix-ui-BA32w1ww.js +0 -0
- /package/{apps/frontend/dist → dist/frontend}/assets/react-vendor-DrjkXih1.js +0 -0
- /package/{apps/frontend/dist → dist/frontend}/assets/utils-CiPelQLP.js +0 -0
- /package/{apps/frontend/dist → dist/frontend}/assets/vendor-DK9yaMt3.js +0 -0
- /package/{apps/frontend/dist → dist/frontend}/index.html +0 -0
package/docs/mcp-tool-calling.md
DELETED
|
@@ -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,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>
|