Skip to content

[FEATURE]: Filter which tools are loaded from MCP servers (includeTools/excludeTools) #7399

Closed as not planned

Description

@marcusquinn

Feature hasn't been suggested before.

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

Describe the enhancement you want to request

Problem

MCP servers often expose many tools, but agents typically need only a subset. Currently, enabling an MCP loads all its tools into the context window, adding significant token overhead.

Example: The chrome-devtools MCP provides 26 tools (~17k tokens). A UI preview agent might only need 4 of them (~1.5k tokens).

Proposed Solution

Add includeTools and/or excludeTools to MCP configuration:

{
  "mcp": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["-y", "chrome-devtools-mcp@latest"],
      "includeTools": ["navigate_page", "take_screenshot", "new_page", "list_pages"]
    }
  }
}

Or with glob patterns:

{
  "mcp": {
    "github": {
      "includeTools": ["create_*", "list_*"],
      "excludeTools": ["*_dangerous_*"]
    }
  }
}

Per-Agent Override

Combined with per-agent MCP enabling, this allows fine-grained control:

{
  "mcp": {
    "chrome-devtools": {
      "enabled": false,
      "includeTools": ["navigate_page", "take_screenshot", "new_page", "list_pages"]
    }
  },
  "agent": {
    "ui-preview": {
      "mcp": {
        "chrome-devtools": { "enabled": true }
      }
    }
  }
}

Prior Art

Amp recently shipped this feature: Lazy-load MCP with Skills

Their implementation uses a companion mcp.json file per skill. The approach proposed here integrates with OpenCode's existing centralized config pattern.

Benefits

  • Token savings: Load only needed tools (17k → 1.5k in the chrome-devtools example)
  • Reduced confusion: LLM sees only relevant tools
  • Backward compatible: No includeTools = all tools (current behavior)

Related Issues

Contribution

Happy to submit a PR for this if the approach is acceptable. We're tracking this in aidevops and can implement a workaround in the meantime, but native OpenCode support would be cleaner.

Activity

  1. github-actions commented on Jan 9, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of existing issues. Please check:

    Feel free to ignore if none of these address your specific case.

  2. marcusquinn commented on Jan 9, 2026

    @marcusquinn
    Author

    Thanks for flagging these! After reviewing:

    Issue Status What it addresses How #7399 differs
    #3756 Closed Bug: disabled tools still visible Bug fix, not feature
    #2953 Open Enable/disable MCP per agent All-or-nothing - entire MCP on/off
    #4525 Closed Per-project MCP overrides Project-level, still all-or-nothing
    #5373 Closed Per-agent MCP enable/disable Same as #2953 - entire MCP
    #6024 Open Provider/model-specific MCPs When to load MCPs, not which tools
    #7269 Open (mine) Subagent list filtering Filters subagents, not MCP tools

    The gap this issue fills:

    All existing issues address enabling/disabling entire MCP servers. None address filtering which tools within an MCP are loaded.

    Example: chrome-devtools MCP has 26 tools. With existing features, I can:

    • Enable it globally (26 tools, ~17k tokens)
    • Disable it globally (0 tools)
    • Enable it per-agent (still 26 tools)

    With includeTools, I could load only 4 specific tools (~1.5k tokens) - a 91% token reduction while keeping the functionality I need.

    This is complementary to per-agent MCP enabling (#2953, #5373) - you'd use both together for maximum control.

  3. Nindaleth commented on Feb 28, 2026

    @Nindaleth
    Contributor

    Per-MCP per-tool toggling is already available, is there anything you're still missing?

  4. marcusquinn commented on Mar 1, 2026

    @marcusquinn
    Author

    Thanks @Nindaleth — I hadn't seen that land. The tools config with glob patterns does cover the core use case.

    The one ergonomic difference: the current approach requires two config blocks (disable globally in tools, re-enable per agent), whereas includeTools on the MCP definition itself would be a single declaration of intent. But that's a minor DX preference, not a missing capability.

    Happy to close this — the functionality is there.

  5. github-actions commented on May 1, 2026

    @github-actions
    Contributor

    To stay organized issues are automatically closed after 60 days of no activity. If the issue is still relevant please open a new one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions