xiaozhi-client 1.7.0 → 1.7.2
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 +33 -397
- package/dist/WebServerStandalone.js +34 -13
- package/dist/WebServerStandalone.js.map +1 -1
- package/dist/cli.js +36 -15
- package/dist/cli.js.map +1 -1
- package/dist/mcpServerProxy.js +28 -7
- package/dist/mcpServerProxy.js.map +1 -1
- package/dist/package.json +10 -5
- package/docs/{Architecture.md → development/architecture.mdx} +4 -1
- package/docs/docs.json +51 -0
- package/docs/getting-started/install.mdx +191 -0
- package/docs/getting-started/intro.mdx +11 -0
- package/docs/getting-started/quickstart.mdx +108 -0
- package/docs/images/preview.png +0 -0
- package/docs/reference/command.mdx +15 -0
- package/docs/usage/add-mcp-server.mdx +6 -0
- package/docs/usage/as-a-mcp-server.mdx +6 -0
- package/docs/usage/docker.mdx +99 -0
- package/docs/usage/modelscope.mdx +6 -0
- package/docs/usage/web-control.mdx +6 -0
- package/package.json +10 -5
- package/web/dist/assets/{form-utils-DmILtYcF.js → form-utils-RpkiEEz8.js} +2 -2
- package/web/dist/assets/{form-utils-DmILtYcF.js.map → form-utils-RpkiEEz8.js.map} +1 -1
- package/web/dist/assets/index-BjG6tl-5.css +1 -0
- package/web/dist/assets/index-BvDVeF-B.js +31 -0
- package/web/dist/assets/index-BvDVeF-B.js.map +1 -0
- package/web/dist/assets/radix-ui-BA32w1ww.js +2 -0
- package/web/dist/assets/radix-ui-BA32w1ww.js.map +1 -0
- package/web/dist/assets/react-vendor-CoesXubw.js +234 -0
- package/web/dist/assets/react-vendor-CoesXubw.js.map +1 -0
- package/web/dist/assets/{utils-DYeV2b9J.js → utils-N_0RTAPv.js} +2 -2
- package/web/dist/assets/{utils-DYeV2b9J.js.map → utils-N_0RTAPv.js.map} +1 -1
- package/web/dist/index.html +6 -6
- package/docs/CLI.md +0 -928
- package/docs/examples-usage.md +0 -647
- package/web/dist/assets/index-Cz9EK1KU.css +0 -1
- package/web/dist/assets/index-Uy1wxZ-_.js +0 -31
- package/web/dist/assets/index-Uy1wxZ-_.js.map +0 -1
- package/web/dist/assets/radix-ui-DW48STyt.js +0 -2
- package/web/dist/assets/radix-ui-DW48STyt.js.map +0 -1
- package/web/dist/assets/react-vendor-CP-QpYlg.js +0 -189
- package/web/dist/assets/react-vendor-CP-QpYlg.js.map +0 -1
- /package/docs/{RELEASE_GUIDE.md → development/todo__release-guide.md} +0 -0
- /package/docs/{SettingManager.md → development/todo__setting-manager.md} +0 -0
package/README.md
CHANGED
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
|
|
14
14
|
<img src="https://raw.githubusercontent.com/shenjingnan/xiaozhi-client/main/docs/images/qq-group-qrcode.jpg" alt="QQ群" width="300"/>
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
## 快速开始
|
|
17
|
+
|
|
18
|
+
你可以阅读文档 [xiaozhi-client.shenjingnan.com](https://xiaozhi-client.shenjingnan.com) 快速上手!
|
|
17
19
|
|
|
18
20
|

|
|
19
21
|
|
|
@@ -23,17 +25,7 @@
|
|
|
23
25
|
1. [目录](#目录)
|
|
24
26
|
2. [功能特色](#功能特色)
|
|
25
27
|
3. [快速上手](#快速上手)
|
|
26
|
-
1. [
|
|
27
|
-
2. [通过 npx 直接运行](#通过-npx-直接运行)
|
|
28
|
-
3. [使用 Docker 运行](#使用-docker-运行)
|
|
29
|
-
1. [前置要求](#前置要求)
|
|
30
|
-
2. [快速启动](#快速启动)
|
|
31
|
-
3. [获取小智接入点地址](#获取小智接入点地址)
|
|
32
|
-
4. [配置服务](#配置服务)
|
|
33
|
-
1. [方式一:通过 Web UI 配置(推荐)](#方式一通过-web-ui-配置推荐)
|
|
34
|
-
2. [方式二:直接编辑配置文件](#方式二直接编辑配置文件)
|
|
35
|
-
5. [常用操作](#常用操作)
|
|
36
|
-
6. [故障排除](#故障排除)
|
|
28
|
+
1. [使用 Docker 运行](#使用-docker-运行)
|
|
37
29
|
4. [可用命令](#可用命令)
|
|
38
30
|
5. [多接入点配置](#多接入点配置)
|
|
39
31
|
1. [配置方式](#配置方式)
|
|
@@ -43,22 +35,13 @@
|
|
|
43
35
|
3. [示例配置](#示例配置)
|
|
44
36
|
4. [注意事项](#注意事项)
|
|
45
37
|
6. [ModelScope MCP 服务集成](#modelscope-mcp-服务集成)
|
|
46
|
-
1. [配置方式](
|
|
38
|
+
1. [ModelScope 配置方式](#modelscope-配置方式)
|
|
47
39
|
2. [使用前准备](#使用前准备)
|
|
48
|
-
3. [注意事项](
|
|
49
|
-
7. [
|
|
50
|
-
1. [消息类型](#消息类型)
|
|
51
|
-
1. [1. 请求(Request)- 需要响应](#1-请求request--需要响应)
|
|
52
|
-
2. [2. 通知(Notification)- 不需要响应](#2-通知notification--不需要响应)
|
|
53
|
-
3. [3. 成功响应(Response)](#3-成功响应response)
|
|
54
|
-
4. [4. 错误响应(Error)](#4-错误响应error)
|
|
55
|
-
2. [重要注意事项](#重要注意事项)
|
|
56
|
-
3. [通信时序图](#通信时序图)
|
|
57
|
-
4. [常见错误](#常见错误)
|
|
58
|
-
8. [Web UI 配置界面](#web-ui-配置界面)
|
|
40
|
+
3. [ModelScope 注意事项](#modelscope-注意事项)
|
|
41
|
+
7. [Web UI 配置界面](#web-ui-配置界面)
|
|
59
42
|
1. [功能特性](#功能特性)
|
|
60
43
|
2. [启动 Web UI](#启动-web-ui)
|
|
61
|
-
|
|
44
|
+
8. [作为 MCP Server 集成到其他客户端](#作为-mcp-server-集成到其他客户端)
|
|
62
45
|
|
|
63
46
|
## 功能特色
|
|
64
47
|
|
|
@@ -75,53 +58,28 @@
|
|
|
75
58
|
|
|
76
59
|
## 快速上手
|
|
77
60
|
|
|
78
|
-
|
|
61
|
+
> 前置条件:请先完成 node:22(LTS) 与 pnpm 的安装
|
|
79
62
|
|
|
80
63
|
```bash
|
|
81
|
-
|
|
82
|
-
|
|
64
|
+
# 安装
|
|
65
|
+
pnpm install -g xiaozhi-client
|
|
83
66
|
|
|
84
|
-
|
|
85
|
-
xiaozhi create my-app
|
|
67
|
+
# 创建应用
|
|
68
|
+
xiaozhi create my-app
|
|
86
69
|
|
|
87
|
-
|
|
88
|
-
cd my-app
|
|
89
|
-
|
|
90
|
-
## 安装依赖(主要是示例代码中mcp服务所使用的依赖)
|
|
91
|
-
pnpm install
|
|
92
|
-
|
|
93
|
-
## 初始化配置
|
|
94
|
-
xiaozhi config init
|
|
95
|
-
|
|
96
|
-
## 设置接入点地址(需要自行前往xiaozhi.me获取)
|
|
97
|
-
xiaozhi config set mcpEndpoint "your-endpoint-url"
|
|
98
|
-
# 小智AI配置MCP接入点使用说明:https://ccnphfhqs21z.feishu.cn/wiki/HiPEwZ37XiitnwktX13cEM5KnSb
|
|
99
|
-
|
|
100
|
-
## 运行
|
|
101
|
-
xiaozhi start
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### 通过 npx 直接运行
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
# 创建项目
|
|
108
|
-
npx -y xiaozhi-client create my-app --template hello-world
|
|
109
|
-
|
|
110
|
-
# 进入项目目录
|
|
70
|
+
# 进入应用目录
|
|
111
71
|
cd my-app
|
|
112
72
|
|
|
113
73
|
# 安装依赖
|
|
114
74
|
pnpm install
|
|
115
75
|
|
|
116
|
-
#
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
# 设置接入点地址(需要自行前往xiaozhi.me获取)
|
|
120
|
-
npx -y xiaozhi-client config set mcpEndpoint "your-endpoint-url"
|
|
121
|
-
# 小智AI配置MCP接入点使用说明:https://ccnphfhqs21z.feishu.cn/wiki/HiPEwZ37XiitnwktX13cEM5KnSb
|
|
76
|
+
# 小智AI配置MCP接入点的 [使用说明](https://ccnphfhqs21z.feishu.cn/wiki/HiPEwZ37XiitnwktX13cEM5KnSb)
|
|
77
|
+
xiaozhi config set mcpEndpoint "<从小智服务端获取到的接入点地址>"
|
|
122
78
|
|
|
123
79
|
# 启动服务
|
|
124
|
-
|
|
80
|
+
xiaozhi start
|
|
81
|
+
|
|
82
|
+
# 最后,请前往小智服务端,检查对应的接入点,刷新后是否能获取到工具列表
|
|
125
83
|
```
|
|
126
84
|
|
|
127
85
|
### 使用 Docker 运行
|
|
@@ -131,22 +89,11 @@ npx -y xiaozhi-client start
|
|
|
131
89
|
#### 前置要求
|
|
132
90
|
|
|
133
91
|
- 已安装 Docker
|
|
134
|
-
-
|
|
92
|
+
- 已获取小智接入点地址(参见[小智 AI 配置 MCP 接入点的使用说明](https://ccnphfhqs21z.feishu.cn/wiki/HiPEwZ37XiitnwktX13cEM5KnSb))
|
|
135
93
|
|
|
136
94
|
#### 快速启动
|
|
137
95
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
这个脚本会自动完成以下操作:
|
|
141
|
-
|
|
142
|
-
- 创建工作目录 `~/xiaozhi-client`
|
|
143
|
-
- 拉取指定版本的 Docker 镜像
|
|
144
|
-
- 停止并删除已存在的容器(如果有)
|
|
145
|
-
- 启动新的容器并配置端口映射
|
|
146
|
-
|
|
147
|
-
**基本使用:**
|
|
148
|
-
|
|
149
|
-
> 下载并运行启动脚本(默认使用最新版本)
|
|
96
|
+
##### 方式一:使用启动脚本(推荐)
|
|
150
97
|
|
|
151
98
|
```bash
|
|
152
99
|
curl -fsSL https://raw.githubusercontent.com/shenjingnan/xiaozhi-client/main/docker-start.sh | bash
|
|
@@ -158,41 +105,21 @@ curl -fsSL https://raw.githubusercontent.com/shenjingnan/xiaozhi-client/main/doc
|
|
|
158
105
|
curl -fsSL https://gitee.com/shenjingnan/xiaozhi-client/raw/main/docker-start.sh | bash
|
|
159
106
|
```
|
|
160
107
|
|
|
161
|
-
|
|
108
|
+
##### 方式二:使用 Docker Compose
|
|
162
109
|
|
|
163
|
-
|
|
110
|
+
获取 docker-compose.yml 文件:
|
|
164
111
|
|
|
165
112
|
```bash
|
|
166
|
-
|
|
167
|
-
curl -fsSL https://raw.githubusercontent.com/shenjingnan/xiaozhi-client/main/docker-start.sh -o docker-start.sh
|
|
168
|
-
|
|
169
|
-
# 下载脚本(Gitee)
|
|
170
|
-
curl -fsSL https://gitee.com/shenjingnan/xiaozhi-client/raw/main/docker-start.sh | bash
|
|
171
|
-
|
|
172
|
-
# 为脚本设置可执行权限
|
|
173
|
-
chmod +x docker-start.sh
|
|
174
|
-
|
|
175
|
-
# 使用默认版本 (latest)
|
|
176
|
-
./docker-start.sh
|
|
177
|
-
|
|
178
|
-
# 通过位置参数指定版本
|
|
179
|
-
./docker-start.sh v1.6.0
|
|
180
|
-
|
|
181
|
-
# 查看帮助信息
|
|
182
|
-
./docker-start.sh --help
|
|
113
|
+
curl -O https://raw.githubusercontent.com/shenjingnan/xiaozhi-client/main/docker-compose.yml
|
|
183
114
|
```
|
|
184
115
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
首先获取 docker-compose.yml 文件:
|
|
116
|
+
> 无法访问 `Github` 可以使用 `Gitee` 替代
|
|
188
117
|
|
|
189
118
|
```bash
|
|
190
|
-
# 下载 docker-compose.yml 文件
|
|
191
|
-
curl -O https://raw.githubusercontent.com/shenjingnan/xiaozhi-client/main/docker-compose.yml
|
|
192
|
-
|
|
193
|
-
# 下载 docker-compose.yml 文件(Gitee)
|
|
194
119
|
curl -O https://gitee.com/shenjingnan/xiaozhi-client/raw/main/docker-compose.yml
|
|
120
|
+
```
|
|
195
121
|
|
|
122
|
+
```bash
|
|
196
123
|
# 使用 Docker Compose 启动
|
|
197
124
|
docker-compose up -d
|
|
198
125
|
|
|
@@ -203,173 +130,6 @@ docker-compose logs -f
|
|
|
203
130
|
docker-compose down
|
|
204
131
|
```
|
|
205
132
|
|
|
206
|
-
**方式三:手动启动**
|
|
207
|
-
|
|
208
|
-
```bash
|
|
209
|
-
# 创建工作目录(用于持久化配置文件)
|
|
210
|
-
mkdir -p ~/xiaozhi-client
|
|
211
|
-
|
|
212
|
-
# 拉取并运行 Docker 镜像(后台运行)
|
|
213
|
-
docker run -d \
|
|
214
|
-
--name xiaozhi-client \
|
|
215
|
-
-p 9999:9999 \
|
|
216
|
-
-p 3000:3000 \
|
|
217
|
-
-v ~/xiaozhi-client:/workspaces \
|
|
218
|
-
--restart unless-stopped \
|
|
219
|
-
shenjingnan/xiaozhi-client
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
**参数说明**:
|
|
223
|
-
|
|
224
|
-
- `-d`:后台运行
|
|
225
|
-
- `--name xiaozhi-client`:容器名称
|
|
226
|
-
- `-p 9999:9999`:Web UI 配置界面端口
|
|
227
|
-
- `-p 3000:3000`:HTTP Server 模式端口(用于与其他 MCP 客户端集成)
|
|
228
|
-
- `-v ~/xiaozhi-client:/workspaces`:挂载本地目录用于持久化配置文件和数据
|
|
229
|
-
- `--restart unless-stopped`:容器自动重启策略
|
|
230
|
-
|
|
231
|
-
#### 获取小智接入点地址
|
|
232
|
-
|
|
233
|
-
在配置 xiaozhi-client 之前,您需要先获取小智接入点地址:
|
|
234
|
-
|
|
235
|
-
1. 访问 [xiaozhi.me](https://xiaozhi.me) 并登录
|
|
236
|
-
2. 进入 MCP 配置页面
|
|
237
|
-
3. 创建新的接入点或使用现有接入点
|
|
238
|
-
4. 复制接入点地址(格式类似:`wss://api.xiaozhi.me/mcp/your-endpoint-id`)
|
|
239
|
-
|
|
240
|
-
详细配置说明请参考:[小智 AI 配置 MCP 接入点使用说明](https://ccnphfhqs21z.feishu.cn/wiki/HiPEwZ37XiitnwktX13cEM5KnSb)
|
|
241
|
-
|
|
242
|
-
#### 配置服务
|
|
243
|
-
|
|
244
|
-
容器启动后,有两种方式配置 xiaozhi-client:
|
|
245
|
-
|
|
246
|
-
##### 方式一:通过 Web UI 配置(推荐)
|
|
247
|
-
|
|
248
|
-
1. 打开浏览器访问:<http://localhost:9999>
|
|
249
|
-
2. 在 Web UI 界面中设置你的小智接入点地址
|
|
250
|
-
3. 配置其他 MCP 服务(可选)
|
|
251
|
-
|
|
252
|
-
##### 方式二:直接编辑配置文件
|
|
253
|
-
|
|
254
|
-
1. 首次启动后,容器会在 `~/xiaozhi-client` 目录中创建默认配置文件。如果文件不存在,可以手动创建:
|
|
255
|
-
|
|
256
|
-
```bash
|
|
257
|
-
# 创建配置文件
|
|
258
|
-
cat > ~/xiaozhi-client/xiaozhi.config.json << 'EOF'
|
|
259
|
-
{
|
|
260
|
-
"mcpEndpoint": "",
|
|
261
|
-
"mcpServers": {},
|
|
262
|
-
"modelscope": {
|
|
263
|
-
"apiKey": ""
|
|
264
|
-
},
|
|
265
|
-
"connection": {
|
|
266
|
-
"heartbeatInterval": 30000,
|
|
267
|
-
"heartbeatTimeout": 10000,
|
|
268
|
-
"reconnectInterval": 5000
|
|
269
|
-
},
|
|
270
|
-
"webUI": {
|
|
271
|
-
"port": 9999
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
EOF
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
2. 编辑配置文件,修改 `mcpEndpoint` 字段:
|
|
278
|
-
|
|
279
|
-
```bash
|
|
280
|
-
# 编辑配置文件
|
|
281
|
-
vim ~/xiaozhi-client/xiaozhi.config.json
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
将 `mcpEndpoint` 修改为您的实际接入点地址:
|
|
285
|
-
|
|
286
|
-
```json
|
|
287
|
-
{
|
|
288
|
-
"mcpEndpoint": "wss://api.xiaozhi.me/mcp/your-actual-endpoint-id"
|
|
289
|
-
}
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
3. 重启容器使配置生效:
|
|
293
|
-
|
|
294
|
-
```bash
|
|
295
|
-
docker restart xiaozhi-client
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
#### 常用操作
|
|
299
|
-
|
|
300
|
-
```bash
|
|
301
|
-
# 查看日志
|
|
302
|
-
docker logs -f xiaozhi-client
|
|
303
|
-
|
|
304
|
-
# 停止服务
|
|
305
|
-
docker stop xiaozhi-client
|
|
306
|
-
|
|
307
|
-
# 启动服务
|
|
308
|
-
docker start xiaozhi-client
|
|
309
|
-
|
|
310
|
-
# 重启服务
|
|
311
|
-
docker restart xiaozhi-client
|
|
312
|
-
|
|
313
|
-
# 删除容器(注意:配置文件会保留在 ~/xiaozhi-client 中)
|
|
314
|
-
docker rm -f xiaozhi-client
|
|
315
|
-
|
|
316
|
-
# 检查服务状态
|
|
317
|
-
docker exec -it xiaozhi-client xiaozhi status
|
|
318
|
-
|
|
319
|
-
# 列出所有mcp服务
|
|
320
|
-
docker exec -it xiaozhi-client xiaozhi mcp list
|
|
321
|
-
|
|
322
|
-
# 列出所有mcp所提供的tools
|
|
323
|
-
docker exec -it xiaozhi-client xiaozhi mcp list --tools
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
#### 故障排除
|
|
327
|
-
|
|
328
|
-
**问题 1:容器启动失败**
|
|
329
|
-
|
|
330
|
-
```bash
|
|
331
|
-
# 检查容器状态
|
|
332
|
-
docker ps -a | grep xiaozhi-client
|
|
333
|
-
|
|
334
|
-
# 查看详细错误日志
|
|
335
|
-
docker logs xiaozhi-client
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
**问题 2:无法访问 Web UI (http://localhost:9999)**
|
|
339
|
-
|
|
340
|
-
- 检查容器是否正在运行:`docker ps | grep xiaozhi-client`
|
|
341
|
-
- 检查端口是否被占用:`lsof -i :9999` (macOS/Linux) 或 `netstat -ano | findstr :9999` (Windows)
|
|
342
|
-
- 确认防火墙设置允许访问 9999 端口
|
|
343
|
-
|
|
344
|
-
**问题 3:配置文件不生效**
|
|
345
|
-
|
|
346
|
-
- 确认配置文件路径:`ls -la ~/xiaozhi-client/xiaozhi.config.json`
|
|
347
|
-
- 检查配置文件格式是否正确(JSON 语法)
|
|
348
|
-
- 重启容器:`docker restart xiaozhi-client`
|
|
349
|
-
|
|
350
|
-
**问题 4:连接小智服务器失败**
|
|
351
|
-
|
|
352
|
-
- 检查接入点地址是否正确
|
|
353
|
-
- 确认网络连接正常
|
|
354
|
-
- 查看容器日志:`docker logs -f xiaozhi-client`
|
|
355
|
-
|
|
356
|
-
**问题 5:端口冲突**
|
|
357
|
-
|
|
358
|
-
如果默认端口被占用,可以修改端口映射:
|
|
359
|
-
|
|
360
|
-
```bash
|
|
361
|
-
# 使用不同的端口启动
|
|
362
|
-
docker run -d \
|
|
363
|
-
--name xiaozhi-client \
|
|
364
|
-
-p 8888:9999 \
|
|
365
|
-
-p 3001:3000 \
|
|
366
|
-
-v ~/xiaozhi-client:/workspaces \
|
|
367
|
-
--restart unless-stopped \
|
|
368
|
-
shenjingnan/xiaozhi-client
|
|
369
|
-
```
|
|
370
|
-
|
|
371
|
-
然后访问 <http://localhost:8888> 进行配置。
|
|
372
|
-
|
|
373
133
|
## 可用命令
|
|
374
134
|
|
|
375
135
|
### 基本命令
|
|
@@ -543,7 +303,7 @@ xiaozhi config set mcpEndpoint "wss://api.xiaozhi.me/mcp/endpoint-1"
|
|
|
543
303
|
|
|
544
304
|
xiaozhi-client 现已支持接入 [ModelScope](https://www.modelscope.cn/mcp) 托管的 MCP 服务。
|
|
545
305
|
|
|
546
|
-
### 配置方式
|
|
306
|
+
### ModelScope 配置方式
|
|
547
307
|
|
|
548
308
|
在 `xiaozhi.config.json` 的 `mcpServers` 中添加 SSE 类型的配置:
|
|
549
309
|
|
|
@@ -589,141 +349,13 @@ xiaozhi-client 现已支持接入 [ModelScope](https://www.modelscope.cn/mcp)
|
|
|
589
349
|
xiaozhi start
|
|
590
350
|
```
|
|
591
351
|
|
|
592
|
-
### 注意事项
|
|
352
|
+
### ModelScope 注意事项
|
|
593
353
|
|
|
594
354
|
- ModelScope MCP 服务需要有效的 API Token 才能使用
|
|
595
355
|
- 配置文件中的 API Token 优先级高于环境变量
|
|
596
356
|
- 确保网络能够访问 ModelScope 的服务端点
|
|
597
357
|
- SSE 类型的服务会自动识别并使用相应的连接方式
|
|
598
358
|
|
|
599
|
-
## 自建服务端 JSON-RPC 消息格式规范
|
|
600
|
-
|
|
601
|
-
如果您使用自建的 MCP 服务端,请确保遵循以下 JSON-RPC 2.0 消息格式规范:
|
|
602
|
-
|
|
603
|
-
### 消息类型
|
|
604
|
-
|
|
605
|
-
#### 1. 请求(Request)- 需要响应
|
|
606
|
-
|
|
607
|
-
```json
|
|
608
|
-
{
|
|
609
|
-
"jsonrpc": "2.0",
|
|
610
|
-
"method": "方法名",
|
|
611
|
-
"params": {},
|
|
612
|
-
"id": 1 // 必须包含id字段,可以是数字或字符串
|
|
613
|
-
}
|
|
614
|
-
```
|
|
615
|
-
|
|
616
|
-
支持的请求方法:
|
|
617
|
-
|
|
618
|
-
- `initialize` - 初始化连接
|
|
619
|
-
- `tools/list` - 获取工具列表
|
|
620
|
-
- `tools/call` - 调用工具
|
|
621
|
-
- `ping` - 连接测试
|
|
622
|
-
|
|
623
|
-
#### 2. 通知(Notification)- 不需要响应
|
|
624
|
-
|
|
625
|
-
```json
|
|
626
|
-
{
|
|
627
|
-
"jsonrpc": "2.0",
|
|
628
|
-
"method": "方法名",
|
|
629
|
-
"params": {}
|
|
630
|
-
// 注意:不能包含id字段
|
|
631
|
-
}
|
|
632
|
-
```
|
|
633
|
-
|
|
634
|
-
支持的通知方法:
|
|
635
|
-
|
|
636
|
-
- `notifications/initialized` - 初始化完成通知
|
|
637
|
-
|
|
638
|
-
#### 3. 成功响应(Response)
|
|
639
|
-
|
|
640
|
-
```json
|
|
641
|
-
{
|
|
642
|
-
"jsonrpc": "2.0",
|
|
643
|
-
"result": {},
|
|
644
|
-
"id": 1 // 必须与请求的id相同
|
|
645
|
-
}
|
|
646
|
-
```
|
|
647
|
-
|
|
648
|
-
#### 4. 错误响应(Error)
|
|
649
|
-
|
|
650
|
-
```json
|
|
651
|
-
{
|
|
652
|
-
"jsonrpc": "2.0",
|
|
653
|
-
"error": {
|
|
654
|
-
"code": -32600,
|
|
655
|
-
"message": "错误描述"
|
|
656
|
-
},
|
|
657
|
-
"id": 1 // 必须与请求的id相同
|
|
658
|
-
}
|
|
659
|
-
```
|
|
660
|
-
|
|
661
|
-
### 重要注意事项
|
|
662
|
-
|
|
663
|
-
1. **关键区别**:请求和通知的唯一区别是是否包含 `id` 字段
|
|
664
|
-
|
|
665
|
-
- 有 `id` = 请求,需要响应
|
|
666
|
-
- 无 `id` = 通知,不需要响应
|
|
667
|
-
|
|
668
|
-
2. **"notifications/initialized" 必须作为通知发送**:
|
|
669
|
-
|
|
670
|
-
```json
|
|
671
|
-
// ✅ 正确
|
|
672
|
-
{
|
|
673
|
-
"jsonrpc": "2.0",
|
|
674
|
-
"method": "notifications/initialized"
|
|
675
|
-
}
|
|
676
|
-
|
|
677
|
-
// ❌ 错误 - 不应包含id
|
|
678
|
-
{
|
|
679
|
-
"jsonrpc": "2.0",
|
|
680
|
-
"method": "notifications/initialized",
|
|
681
|
-
"id": 1
|
|
682
|
-
}
|
|
683
|
-
```
|
|
684
|
-
|
|
685
|
-
3. **消息分隔**:每条 JSON-RPC 消息必须以换行符 `\n` 结束
|
|
686
|
-
|
|
687
|
-
4. **通信流程**:
|
|
688
|
-
1. 客户端发送 `initialize` 请求
|
|
689
|
-
2. 服务端返回 `initialize` 响应
|
|
690
|
-
3. 客户端发送 `notifications/initialized` 通知(无需响应)
|
|
691
|
-
4. 后续可进行工具列表查询和调用
|
|
692
|
-
|
|
693
|
-
### 通信时序图
|
|
694
|
-
|
|
695
|
-
```mermaid
|
|
696
|
-
sequenceDiagram
|
|
697
|
-
participant Client as 小智客户端
|
|
698
|
-
participant Server as 自建MCP服务端
|
|
699
|
-
|
|
700
|
-
Note over Client,Server: 初始化阶段
|
|
701
|
-
Client->>Server: {"jsonrpc":"2.0","method":"initialize","params":{...},"id":1}
|
|
702
|
-
Server->>Client: {"jsonrpc":"2.0","result":{...},"id":1}
|
|
703
|
-
Client->>Server: {"jsonrpc":"2.0","method":"notifications/initialized"}
|
|
704
|
-
Note over Server: 无需响应通知
|
|
705
|
-
|
|
706
|
-
Note over Client,Server: 获取工具列表
|
|
707
|
-
Client->>Server: {"jsonrpc":"2.0","method":"tools/list","params":{},"id":2}
|
|
708
|
-
Server->>Client: {"jsonrpc":"2.0","result":{"tools":[...]},"id":2}
|
|
709
|
-
|
|
710
|
-
Note over Client,Server: 调用工具
|
|
711
|
-
Client->>Server: {"jsonrpc":"2.0","method":"tools/call","params":{...},"id":3}
|
|
712
|
-
Server->>Client: {"jsonrpc":"2.0","result":{...},"id":3}
|
|
713
|
-
|
|
714
|
-
Note over Client,Server: 保持连接
|
|
715
|
-
Client->>Server: {"jsonrpc":"2.0","method":"ping","params":{},"id":4}
|
|
716
|
-
Server->>Client: {"jsonrpc":"2.0","result":{},"id":4}
|
|
717
|
-
|
|
718
|
-
Note over Client,Server: 错误处理示例
|
|
719
|
-
Client->>Server: {"jsonrpc":"2.0","method":"unknown_method","params":{},"id":5}
|
|
720
|
-
Server->>Client: {"jsonrpc":"2.0","error":{"code":-32601,"message":"Method not found"},"id":5}
|
|
721
|
-
```
|
|
722
|
-
|
|
723
|
-
### 常见错误
|
|
724
|
-
|
|
725
|
-
如果您看到类似 "未知的方法:notifications/initialized" 的错误,通常是因为在通知消息中错误地包含了 `id` 字段,导致客户端将其识别为请求而非通知。
|
|
726
|
-
|
|
727
359
|
## Web UI 配置界面
|
|
728
360
|
|
|
729
361
|
xiaozhi-client 提供了一个现代化的 Web UI 界面,让配置 MCP 服务更加直观和便捷。
|
|
@@ -796,3 +428,7 @@ xiaozhi start
|
|
|
796
428
|
- 支持标准的 MCP over HTTP 协议
|
|
797
429
|
- 可以通过 `--port` 参数自定义端口号
|
|
798
430
|
- 使用 `-d` 参数可以后台运行服务
|
|
431
|
+
|
|
432
|
+
## 贡献者
|
|
433
|
+
|
|
434
|
+

|