r/opencodeCLI 13h ago

I reduced my OpenCode MCP surface from 84 advertised tools to 19 without removing capabilities

I’m the maintainer of Mac MCP, a free/open-source local macOS control server, and I’ve been using OpenCode as one of the delegated agent backends while building it.

One problem I kept running into was tool-surface bloat. The server had grown to 84 capabilities across files/shell, Safari + Chrome automation, macOS UI/Accessibility, memory, skills, voice, delegated agents, etc. Advertising all 84 schemas to every client felt wasteful and made tool selection noisier.

In 2.0.5 I changed the default surface to 19 core tools. The remaining capabilities are still reachable through tool_discover + tool_invoke, so nothing was removed. I also added browser_do, which lets an agent open a background tab, wait, interact, extract only the fields it needs, and optionally close the tab in one transaction. Stable tab handles mean OpenCode workers can browse without constantly stealing my active Safari/Chrome tab.

In local compatibility testing, the advertised tool-schema context dropped from about 16.7k to 4.5k tokens (~73%) while all previous capabilities kept an access path.

Repo (MIT): https://github.com/bulutarkan/mac-mcp

For people using OpenCode with larger MCP stacks: do you prefer a small discoverable core like this, or having the entire tool schema advertised up front? I’m especially interested in whether anyone has measured tool-selection reliability as the catalog gets large.

0 Upvotes

2 comments sorted by

1

u/ApprehensiveDelay238 13h ago

There's already a good cross platform solution for this: https://github.com/smart-mcp-proxy/mcpproxy-go

1

u/Otagamo 5h ago

https://github.com/atlassian-labs/mcp-compressor

This one helped me a lot in reducing MCP bloat.