fast-startup.md•6.89 kB
# 快速启动:异步服务器加载
让您的 1MCP 代理即时运行,并提供实时功能更新,即使某些服务器需要时间连接。
## 这是关于什么的?
当您启动 1MCP 时,它需要连接到所有已配置的 MCP 服务器。以前,如果即使一台服务器速度慢或无法访问,您的整个 1MCP 实例也会被卡住等待。现在,1MCP 会立即启动并在后台连接到服务器,随着功能可用,向客户端发送实时 `listChanged` 通知。
## 我们解决的问题
**之前**:
- 1MCP 在启动前等待所有服务器
- 一台慢速服务器 = 整个系统卡住
- 网络问题会阻塞您的工作流程
**现在**:
- 1MCP 在 1 秒内启动
- 服务器在后台连接
- 随着功能可用,提供实时通知
- 您可以立即使用可用的服务器
## 工作原理
```mermaid
graph TD
A[启动 1MCP] --> B[HTTP 服务器在 <1s 内就绪]
B --> C[后台:连接到 MCP 服务器]
C --> D[服务器 1:就绪 ✅]
C --> E[服务器 2:加载中 ⏳]
C --> F[服务器 3:失败 ❌]
D --> G[全部功能可用]
E --> G
F --> H[后台重试]
H --> G
```
## 服务器状态
| 状态 | 图标 | 含义 | 您可以做什么 |
| -------------- | ---- | ------------------ | -------------------- |
| **就绪** | ✅ | 服务器已成功连接 | 全部功能可用 |
| **加载中** | ⏳ | 服务器正在后台连接 | 等待或使用其他服务器 |
| **失败** | ❌ | 连接失败,将重试 | 检查服务器配置/网络 |
| **等待 OAuth** | 🔐 | 需要授权 | 完成 OAuth 流程 |
## 监控您的服务器
### 快速健康检查
```bash
curl http://localhost:3000/health/mcp
```
### 单个服务器状态
```bash
curl http://localhost:3000/health/mcp/context7
```
## 对您的好处
### ⚡ 即时启动
- 无论服务器数量多少,1MCP 都在 <1 秒内就绪
- 不再等待慢速连接
- 立即开始工作
### 🛡️ 弹性操作
- 一台失败的服务器不会破坏一切
- 使用智能回退自动重试
- 优雅地处理网络问题
### 📊 完全可见性
- 所有服务器的实时状态
- 出现问题时提供详细的错误消息
- 跟踪长连接的进度
## 启用异步加载
异步加载是一项选择性加入的功能,默认情况下禁用以保持向后兼容性。
### CLI 标志
```bash
# 使用 CLI 标志启用异步加载
npx -y @1mcp/agent --config mcp.json --enable-async-loading
```
### 环境变量
```bash
# 通过环境变量启用
export ONE_MCP_ENABLE_ASYNC_LOADING=true
npx -y @1mcp/agent --config mcp.json
```
### 实时通知
启用异步加载后,客户端会在服务器就绪时收到 `listChanged` 通知:
```mermaid
sequenceDiagram
participant 客户端
participant 1MCP
participant 服务器1
participant 服务器2
客户端->>1MCP: 连接
1MCP-->>客户端: 立即连接(空功能)
par 后台加载
1MCP->>服务器1: 启动服务器
服务器1-->>1MCP: 服务器就绪,提供工具
1MCP-->>客户端: listChanged 通知(工具)
and
1MCP->>服务器2: 启动服务器
服务器2-->>1MCP: 服务器就绪,提供资源
1MCP-->>客户端: listChanged 通知(资源)
end
```
**好处:**
- **渐进式发现**:新功能实时出现
- **批量通知**:将多个更改分组以防止垃圾邮件
- **更好的用户体验**:无需手动刷新或重新连接
## 配置
您可以在 JSON 配置文件的 `loading` 部分自定义异步加载行为,例如超时和重试逻辑。
有关选项的完整列表,请参阅 **[配置深入探讨](/guide/essentials/configuration#loading-section-async-loading)**。
## 健康检查 API
通过简单的 HTTP 端点检查您的 MCP 服务器的状态。
### 整体状态:`/health/mcp`
获取所有服务器的完整概览:
```bash
curl http://localhost:3000/health/mcp
```
**示例响应:**
```json
{
"loading": {
"isComplete": false, // 仍在连接某些服务器
"successRate": 66.7, // 3 台服务器中有 2 台已连接
"averageLoadTime": 2500 // 平均连接时间(毫秒)
},
"summary": {
"total": 3, // 配置的总服务器数
"ready": 2, // 可供使用的服务器
"loading": 1, // 仍在连接的服务器
"failed": 0 // 失败的服务器
},
"servers": {
"ready": ["context7", "magic"], // 正常工作的服务器
"loading": ["sequential"] // 仍在连接
}
}
```
### 单个服务器:`/health/mcp/:serverName`
检查特定服务器:
```bash
curl http://localhost:3000/health/mcp/context7
```
**示例响应:**
```json
{
"name": "context7",
"state": "ready", // 当前状态
"duration": 2300, // 连接时间(毫秒)
"retryCount": 1, // 连接尝试次数
"message": "已成功连接"
}
```
## 常见场景
### 网络超时
当服务器连接时间过长时:
```
服务器 "context7" → 加载中 → 超时 (30s) → 失败 → 后台重试 (60s)
```
### OAuth 授权
某些服务器需要您先授权:
```
服务器 "github" → 加载中 → 等待 OAuth → 访问授权 URL → 就绪
```
### 部分可用性
当某些服务器工作而其他服务器不工作时:
```
配置了 3 台服务器:
✅ context7 (就绪)
✅ magic (就绪)
❌ sequential (失败)
结果:1MCP 使用 2/3 的服务器工作,并不断重试失败的服务器
```
## 您会注意到什么
### 更快的启动速度 ⚡
- 1MCP 在 1 秒内启动
- 不再等待慢速连接
- 您可以立即开始工作
### 更好的可靠性 🛡️
- 单个服务器故障不会破坏一切
- 失败的服务器会在后台自动重试
- 清楚地了解哪些工作正常,哪些不正常
### 轻松监控 📊
- 随时检查 `/health/mcp` 以查看状态
- 获取有关单个服务器的详细信息
- 服务器连接时的实时进度
## 故障排除
### “某些服务器仍在加载”
**正常行为。** 1MCP 启动速度快,并在后台连接服务器。检查 `/health/mcp` 以查看进度。
### “服务器不断连接失败”
1. 检查您的网络连接
2. 验证您的 `mcp.json` 中的服务器配置
3. 检查服务器是否需要 OAuth 授权
4. 查看 `/health/mcp/servername` 以获取详细的错误消息
### “一切似乎都很慢”
1. 检查您同时加载的服务器数量 (`maxConcurrentLoads`)
2. 考虑为慢速网络增加超时值
3. 某些服务器可能会限制您的连接
### “1MCP 根本无法启动”
这通常表示配置问题,而不是服务器连接问题:
1. 检查您的 `mcp.json` 文件语法
2. 验证文件权限
3. 检查 1MCP 日志以获取特定错误
::: tip
异步加载仅影响 MCP 服务器连接。如果 1MCP 本身无法启动,则可能是配置或权限问题。
:::