MCP server returned too much data:
Error: Response too large for context window
Here is how to fix it.
Fix 1: Limit output size
Truncate tool responses:
// In your MCP server
function formatResult(data) {
const text = JSON.stringify(data, null, 2);
if (text.length > 10000) {
return text.substring(0, 10000) + "\n... (truncated)";
}
return text;
}
Fix 2: Use pagination
For large datasets, paginate:
// Add pagination parameters
inputSchema: {
type: "object",
properties: {
query: { type: "string" },
page: { type: "number", default: 1 },
limit: { type: "number", default: 10 }
}
}
// Return paginated results
{
results: items.slice((page-1)*limit, page*limit),
total: items.length,
page: page,
pages: Math.ceil(items.length / limit)
}
Fix 3: Summarize large outputs
Compress results:
function summarizeResults(results) {
return results.map(r => ({
id: r.id,
name: r.name,
summary: r.description.substring(0, 100)
}));
}
Fix 4: Use streaming
Stream large responses:
// Stream response chunks
res.setHeader('Content-Type', 'text/event-stream');
for (const chunk of largeData) {
res.write(`data: ${JSON.stringify(chunk)}\n\n`);
}
res.write('data: [DONE]\n\n');
res.end();
Fix 5: Filter results
Return only relevant fields:
// Instead of returning everything
return {
content: [{
type: 'text',
text: results.map(r => `${r.name}: ${r.description}`).join('\n')
}]
};
Fix 6: Use references instead of data
Return IDs instead of full data:
// Return references
{
items: results.map(r => ({ id: r.id, name: r.name })),
message: "Use get_item(id) for full details"
}
Still not working?
- Increase context window β Use model with larger context
- Reduce data scope β Query returns less data
- Cache results β Store and retrieve instead of regenerating
- Use external storage β Store large data outside context
FAQ
Why is my MCP server returning too much data?
The tool is returning more data than the modelβs context window can handle. Common causes: unfiltered database queries, returning entire files instead of summaries, or large JSON responses. Limit output size and filter results.
How do I know if my response is too large?
Check the response size before sending. If it exceeds 10KB, it may cause context issues. Use JSON.stringify().length to measure and truncate if needed.
Can I store large data outside the context?
Yes. Store large data in a database or file system, and return only references (IDs) in the tool response. The model can then call another tool to retrieve specific items as needed.
Related: MCP Complete Developer Guide Β· MCP Server Tool Call Failed Fix Β· Context Window Explained Β· What is MCP?