Problem
When bundling multiple configurations of the same MCP server, tools are named SERVER__TOOL without configuration scope. Calls then can’t target the intended configuration.
Impact
Agents can’t pick the correct account (e.g., Shared Gmail vs Developer Gmail) in one bundle; calls may hit the wrong config.
Repro
Create two GMAIL configs, bundle both, use SEARCH_TOOLS and EXECUTE_TOOL for GMAIL__THREADS_LIST → ambiguous routing.
Code References
Tool name construction (no config in name): mcp_tools_manager.py
Execution assumes single config per server in bundle: execute_tool.py
Bundle model TODO acknowledging missing restriction:sql_models.py
Tools search returns names without config hint: search_tools.py
Global unique tool name: execute_tool.py
Schema enforces global unique MCPTool.name: sql_models.py
Hypotheses
- Add config-qualified naming: SERVER__CONFIG_ALIAS__TOOL.
- Two-step execute: add config_id/config_name to EXECUTE_TOOL args; include config hints in SEARCH_TOOLS.
- Per-bundle aliasing at initialize; expose alias → config map via tools/list.
- Temporary mitigation: disallow bundling same-server configs until disambiguation lands.
Problem
When bundling multiple configurations of the same MCP server, tools are named SERVER__TOOL without configuration scope. Calls then can’t target the intended configuration.
Impact
Agents can’t pick the correct account (e.g., Shared Gmail vs Developer Gmail) in one bundle; calls may hit the wrong config.
Repro
Create two GMAIL configs, bundle both, use SEARCH_TOOLS and EXECUTE_TOOL for GMAIL__THREADS_LIST → ambiguous routing.
Code References
Tool name construction (no config in name):
mcp_tools_manager.pyExecution assumes single config per server in bundle:
execute_tool.pyBundle model TODO acknowledging missing restriction:
sql_models.pyTools search returns names without config hint:
search_tools.pyGlobal unique tool name:
execute_tool.pySchema enforces global unique MCPTool.name:
sql_models.pyHypotheses