test(mcp): integration regression for colliding static toolset name via _register_server_tools

This commit is contained in:
Muno459
2026-07-13 00:43:20 +02:00
committed by Teknium
parent 3bc1780f2d
commit 3f88055035
+28
View File
@@ -36,6 +36,34 @@ class TestRegisterServerTools:
assert validate_toolset("my_srv") is True
assert "mcp__my_srv__my_tool" in resolve_toolset("my_srv")
def test_colliding_static_toolset_name_merges_both_tool_sets(self, mock_registry):
"""An MCP server named after a built-in toolset must not be shadowed.
Regression: an MCP server registered as `homeassistant` (colliding
with the static `homeassistant` toolset) had its tools silently
dropped because get_toolset() returned the static definition without
consulting the alias registered by _register_server_tools().
"""
from toolsets import TOOLSETS, get_toolset, resolve_toolset
assert "homeassistant" in TOOLSETS # collision premise
static_tools = set(TOOLSETS["homeassistant"]["tools"])
server = MCPServerTask("homeassistant")
server._tools = [_make_mcp_tool("get_entities", "List HA entities")]
server.session = MagicMock()
with patch("tools.registry.registry", mock_registry):
registered = _register_server_tools("homeassistant", server, {})
assert "mcp__homeassistant__get_entities" in registered
ts = get_toolset("homeassistant")
# Static built-ins are still present...
assert static_tools <= set(ts["tools"])
# ...and the MCP server's tools are no longer shadowed.
assert "mcp__homeassistant__get_entities" in ts["tools"]
assert "mcp__homeassistant__get_entities" in resolve_toolset("homeassistant")
class TestRefreshTools:
"""Tests for MCPServerTask._refresh_tools nuke-and-repave cycle."""