Skip to content
🔗 分享本题
查看我的学习进度 →

MCP大结果持久化与按需读取图解

🧠 图解记忆: 大结果应持久化并返回引用,模型按需分块读取,而不是一次塞满上下文。

💡 答案要点

问题背景:

传统MCP工具调用限制:
- 大型工具输出(数据库查询、日志分析)可能被截断
- 默认结果大小限制导致长输出丢失
- 跨多个工具调用的状态难以保持

500K永续化解决方案(Claude Code v2.1.89+):

python
# 之前的问题
@mcp.tool()
def analyze_large_log(log_file: str) -> str:
    """分析大型日志文件"""
    # 返回100KB+的内容
    result = parse_log(log_file)
    return result
    # ❌ 之前可能被截断,信息丢失

# 现在的解决方案(Claude Code v2.1.89+)
# MCP工具结果支持最大500KB永续化存储
# 大型输出可以完整保留,不会丢失

# 配置MCP Server时的结果大小限制(可按工具定制)
{
  "mcpServers": {
    "log-analyzer": {
      "command": "python",
      "args": ["log_server.py"],
      "resultSizeLimit": "500kb"  # 该Server所有工具最大500KB
    },
    "quick-search": {
      "command": "python",
      "args": ["search_server.py"],
      "resultSizeLimit": "100kb"   # 小工具限制更小
    }
  }
}

Per-tool MCP result-size overrides(Claude Code Week 14新增):

json
// 每个MCP工具可独立设置结果大小限制
{
  "mcpServers": {
    "database": {
      "command": "python",
      "args": ["db_server.py"],
      "tools": {
        "execute_query": {
          "resultSizeLimit": "10mb"  # 数据库查询可能很大
        },
        "get_status": {
          "resultSizeLimit": "1kb"   # 状态查询很小
        }
      }
    }
  }
}

解决的问题:

场景之前现在
大型SQL查询结果截断丢失500KB完整保留
日志分析被截断完整分析
多文件批处理上下文溢出不再截断
数据库全表导出OOM正常处理

面试话术:

"Claude Code v2.1.89+的500K永续化解决了MCP工具返回数据量不可控的问题。之前大查询结果会被截断,现在500KB内的结果可以完整保留。Per-tool result-size overrides让不同工具可以设置不同的限制——数据库查询可以到10MB,状态查询限制1KB,企业可以精细控制每个工具的资源消耗。"