MCP Context Efficiency: Full-Bundle to On-Demand
Deep dive into MCP's context consumption problem and two community-proposed solutions: Context Isolation and Progressive Disclosure
In early 2026, enabling 7 MCP servers consumed 33.7% of your context—before you even started working. Current Claude Code builds defer tool schemas and load them on demand via ToolSearch, largely eliminating this up-front cost.
This article shares Claude World Taiwan community’s deep analysis of MCP context efficiency and our proposed solutions.
The Problem: MCP Context Consumption
We measured token consumption for common MCP servers:
| MCP Server | Token Cost |
|---|---|
| GitHub (27 tools) | ~18,000 |
| AWS MCP servers | ~18,300 |
| Cloudflare | ~15,000+ |
| Sentry | ~14,000 |
| Playwright (21 tools) | ~13,647 |
| Supabase | ~12,000+ |
| 7 servers total | 67,300 (33.7%) |
Average: 550-850 tokens per tool.
The Modern Knowledge Worker’s Dilemma
We use multiple platforms simultaneously: GitHub, Jira, Linear, Slack, Vercel, Sentry…
This creates a false choice:
- Install all: 50%+ context consumed at session start
- Separate by project: Defeats Claude Code’s value as a unified command center
Solution 1: Context Isolation (RFC Proposal)
We submitted RFC #17668 to Anthropic, proposing Context Isolation architecture.
Core Concept
Unlike traditional lazy loading, Context Isolation has a key difference:
| Aspect | Traditional Lazy Loading | Context Isolation |
|---|---|---|
| Main Context | Loaded when needed, gets polluted | Always stays clean |
| Load Timing | Runtime dynamic loading | Load at fork creation |
| Complexity | High (state management) | Low (reuses context: fork) |
Architecture Design
Main Session (Lean)
│
├── Base MCPs: filesystem, memory
│ (minimal context footprint)
│
├── Task: database-specialist (forked)
│ └── Loads: postgres, redis (isolated)
│
└── Skill: /deploy (forked)
└── Loads: vercel, github (isolated)
Implementation
MCP side: Add lazy flag in settings.json
{
"mcpServers": {
"memory": { "command": "...", "lazy": false },
"github": { "command": "...", "lazy": true },
"postgres": { "command": "...", "lazy": true }
}
}
Agent/Skill side: Declare required MCPs in frontmatter
---
name: database-specialist
description: Database operations expert
tools: [Read, Bash, Grep]
mcp:
required: [postgres]
optional: [redis]
context: fork
---
Why MCP Over Pure Scripts?
MCP’s value isn’t just tools—it’s centralized credential management:
| Aspect | MCP | Scripts + .env |
|---|---|---|
| Credential Management | Centralized in settings.json | Scattered everywhere |
| Security | Environment isolation | Risk of log exposure |
| Token Refresh | Automatic | Manual implementation |
| Error Handling | Standardized responses | Different per API |
Solution 2: Progressive AgentSkill (Community Open Source)
Community member CabLate developed mcp-progressive-agentskill, implementing three-layer progressive disclosure:
Three-Layer Architecture
- Layer 1: List available MCP servers (~50-100 tokens)
- Layer 2: Show tool names and descriptions for selected server (~200-400 tokens)
- Layer 3: Load complete tool specs (~300-500 tokens/tool)
Efficiency Calculation
For an MCP with 20 tools where you need only 2:
| Method | Token Cost |
|---|---|
| Traditional full-bundle | ~6,000 tokens |
| Progressive disclosure | ~850 tokens |
| Savings | 86% |
Technical Architecture
AI Scripts (Python) → HTTP API → MCP Daemon → MCP Servers
The daemon maintains long-running connections and provides HTTP interface for on-demand tool access.
Quick Start
# Install
python scripts/setup.py
# Start daemon
python scripts/daemon_start.py --no-follow
# List tools
python scripts/mcp_list_tools.py --server playwright
# Call a tool
python scripts/mcp_call.py --server playwright --tool browser_navigate \
--params '{"url":"https://example.com"}'
Current Recommendations
Update (mid-2026): Claude Code now defers tool schemas and loads them on demand via ToolSearch, so MCP servers no longer consume context up front. The workarounds below are kept for historical context.
Before official on-demand loading arrived, our recommendations were:
1. Categorize Your MCPs
Essential (lazy: false):
- filesystem
- memory
- sequential-thinking
Heavy (consider removing or wait for lazy):
- github (18k tokens)
- aws (18k tokens)
- sentry (14k tokens)
2. Use Project Scope
# Enable specific MCP only for projects that need it
claude mcp add --scope project postgres -- ...
3. Try Progressive AgentSkill
For heavy MCP users, CabLate’s solution is available now.
Join the Discussion
- RFC Issue: #17668 - Give it a 👍
- Open Source: mcp-progressive-agentskill
- Community: Discord - Claude World Taiwan
This article is compiled from technical discussions in the Claude World Taiwan community. We’re a group of developers focused on advanced Claude Code usage. Join our Discord to discuss more.