13.6 MCP 输出限制与管理
了解和管理 MCP 服务器的输出限制,确保高效使用。
输出限制
默认限制
MCP 工具输出有默认限制:
- 令牌限制 : 10,000 令牌
- 字符限制 : 约 40,000 字符
- 响应时间 : 30 秒超时
增加输出限制
使用 MAX_MCP_OUTPUT_TOKENS 环境变量增加限制:
设置 50,000 令牌限制
MAX_MCP_OUTPUT_TOKENS=50000 claude
设置 100,000 令牌限制
MAX_MCP_OUTPUT_TOKENS=100000 claude
超时设置
使用 MCP_TIMEOUT 环境变量设置超时:
bash
# 设置 10 秒超时
MCP_TIMEOUT=10000 claude
# 设置 60 秒超时
MCP_TIMEOUT=60000 claude
## 输出管理
### 分页处理
当输出超过限制时,使用分页:
# 第 1 页
查询用户表的前 100 条记录
# 第 2 页
查询用户表的第 101-200 条记录
# 第 3 页
查询用户表的第 201-300 条记录
bash
### 流式输出
使用流式输出处理大结果:
bash
# 流式输出
流式输出所有用户数据
# 输出到文件
将用户数据输出到文件 users.json
### 批处理
### 批处理使用批处理处理大量数据:
bash
# 批量处理
批量处理用户数据,每批 100 条
## 输出优化
### 查询优化优化查询以减少输出:
bash
# 只查询需要的列
查询用户表的 ID 和姓名
# 使用过滤条件
查询用户表中活跃的用户
# 限制结果数量
查询用户表的前 100 条记录
### 数据聚合聚合数据以减少输出:
聚合数据
查询用户表的总数和平均年龄
分组统计
按部门统计用户数量
yaml
bash
### 缓存结果
缓存结果以减少重复查询:
```bash
# 启用缓存
```yaml
启用用户表缓存
# 查看缓存
显示缓存状态
# 清除缓存
清除用户表缓存
```
## 输出监控
### 监控输出大小
```bash
# 查看输出统计
显示 MCP 输出统计
**输出示例**:
MCP 输出统计:
github:
> - 平均输出:5,000 令牌
> - 最大输出:15,000 令牌
> - 超限次数:5
database:
> - 平均输出:8,000 令牌
> - 最大输出:25,000 令牌
> - 超限次数:10
### 监控响应时间
# 查看响应时间
显示 MCP 响应时间
> **输出示例**:
```> MCP 响应时间:
github:
> - 平均响应:100ms
> - 最大响应:500ms
> - 超时次数:2
database:
> - 平均响应:50ms
> - 最大响应:200ms
> - 超时次数:1
## 输出警告
### 警告类型
#### 1. 输出超限警告
警告:MCP 工具输出超过 10,000 令牌限制
建议:增加 MAX_MCP_OUTPUT_TOKENS 或优化查询
#### 2. 响应超时警告
警告:MCP 工具响应超过 30 秒超时
建议:增加 MCP_TIMEOUT 或优化查询
#### 3. 输出截断警告
警告:MCP 工具输出被截断
建议:使用分页或流式输出
### 处理警告
```bash
# 处理输出超限警告
增加 MAX_MCP_OUTPUT_TOKENS 到 50,000
# 处理响应超时警告
增加 MCP_TIMEOUT 到 60 秒
# 处理输出截断警告
使用分页查询
```
## 输出格式化
### JSON 格式
```bash
# 输出为 JSON
查询用户表,输出为 JSON
```
### CSV 格式
```bash
# 输出为 CSV
查询用户表,输出为 CSV
```
### Markdown 格式
```bash
# 输出为 Markdown
查询用户表,输出为 Markdown 表格
```
## 输出存储
## 输出存储
### 保存到文件
```bash
# 保存到文件
将用户数据保存到 users.json
# 追加到文件
将用户数据追加到 users.json
```
### 导出到数据库
```bash
# 导出到数据库
将用户数据导出到数据库
```
### 上传到云存储
```bash
# 上传到 S3
将用户数据上传到 S3
```
## 输出安全
### 敏感数据过滤
```bash
# 过滤敏感数据
查询用户表,过滤密码字段
```
### 数据脱敏
```bash
# 脱敏数据
查询用户表,脱敏邮箱地址
```
### 访问控制
```bash
# 限制输出访问
限制用户表输出只能被管理员访问
```
## 最佳实践
### 1. 合理设置限制
```bash
# 根据需求设置限制
MAX_MCP_OUTPUT_TOKENS=50000 claude
MCP_TIMEOUT=30000 claude
```
### 2. 优化查询
```bash
# 只查询需要的数据
查询用户表的 ID 和姓名
# 使用过滤条件
查询用户表中活跃的用户
# 限制结果数量
查询用户表的前 100 条记录
```
### 3. 使用分页
```bash
# 使用分页处理大数据
查询用户表,每页 100 条
```
### 4. 启用缓存
```bash
# 启用缓存减少重复查询
启用用户表缓存
```
### 5. 监控输出
```bash
# 定期监控输出统计
显示 MCP 输出统计
# 识别超限情况
显示超限次数
```
## 故障排除
### 输出超限
> **问题**: 输出超过限制
> **解决方案**:
```bash
# 1. 增加限制
MAX_MCP_OUTPUT_TOKENS=50000 claude
# 2. 优化查询
只查询需要的列
# 3. 使用分页
分页查询数据
# 4. 使用流式输出
流式输出数据
```
### 响应超时
> **问题**: 响应超时
> **解决方案**:
```bash
# 1. 增加超时
MCP_TIMEOUT=60000 claude
# 2. 优化查询
使用索引优化查询
# 3. 减少数据量
限制查询结果数量
# 4. 使用后台任务
在后台运行长时间查询
```
### 输出截断
> **问题**: 输出被截断
> **解决方案**:
```bash
# 1. 使用分页
分页查询数据
# 2. 使用流式输出
流式输出数据
# 3. 保存到文件
将数据保存到文件
# 4. 增加限制
MAX_MCP_OUTPUT_TOKENS=100000 claude
```