opencode icon indicating copy to clipboard operation
opencode copied to clipboard

[FEATURE]: Lazy/dynamic loading for mcp tools

Open DhruvAtreja opened this issue 16 hours ago • 1 comments

Feature hasn't been suggested before.

  • [x] I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

Problem

When multiple MCP servers are enabled, all tool definitions load into the agent's context at session startup. A single MCP server like GitHub can add 15-20k+ tokens just for tool schemas. With several MCPs enabled, context bloat can exceed 50k tokens before the user even sends a message. This is even mentioned in the docs: https://opencode.ai/docs/mcp-servers/

Solution

Lazy loading pattern: Instead of loading full tool schemas at startup, we:

Show a lightweight index in the system prompt with server names and tool names only (~150 tokens vs ~1.5k) Provide a mcp_load_tools meta-tool that loads specific tools on-demand The agent loop naturally picks up newly loaded tools on the next iteration Example Flow

System prompt shows: "playwright (20 tools): browser_snapshot, browser_click, browser_navigate, ..."

User: "Take a screenshot of google.com"

Agent calls: mcp_load_tools("playwright", ["browser_navigate", "browser_snapshot"]) → Tools loaded into session state

Agent calls: playwright_browser_navigate({ url: "https://google.com/" }) Agent calls: playwright_browser_snapshot()

Related

  • Addresses: #514, #1101, #2888, #2953, #3612, #5373, #6024

DhruvAtreja avatar Jan 13 '26 20:01 DhruvAtreja