@@ -30,7 +30,7 @@ def decorator(func):
30
30
sys .modules .setdefault ("mcp.server" , server_pkg_stub )
31
31
sys .modules .setdefault ("mcp.server.fastmcp" , fastmcp_stub )
32
32
33
- from toolsets import (
33
+ from alibabacloud_rds_openapi_mcp_server . toolsets . toolsets import (
34
34
ToolsetMCP ,
35
35
initialize_toolsets ,
36
36
)
@@ -62,7 +62,7 @@ def make_rds_custom(server):
62
62
"alibabacloud_rds_openapi_mcp_server.toolsets.rds_custom"
63
63
)
64
64
65
- @server .mcp .tool ()
65
+ @server .mcp .tool (group = "rds_custom" )
66
66
async def custom_echo (text : str ):
67
67
return text
68
68
@@ -82,35 +82,72 @@ def dummy_env(monkeypatch):
82
82
83
83
def test_load_groups_should_assign_tools_to_correct_groups_when_called (dummy_env ):
84
84
server = dummy_env
85
- from tools import load_groups
85
+ from alibabacloud_rds_openapi_mcp_server . toolsets . tool_registry import load_groups
86
86
87
- load_groups (server .toolset_manager , server )
87
+ load_groups (server .mcp )
88
88
89
89
groups = server .toolset_manager .groups
90
90
assert "rds" in groups
91
91
assert server .describe_db_instances in [i .func for i in groups ["rds" ]]
92
92
assert server .describe_db_instance_attribute in [i .func for i in groups ["rds" ]]
93
- assert "custom " in groups
94
- assert any (i .func .__name__ == "custom_echo" for i in groups ["custom " ])
93
+ assert "rds_custom " in groups
94
+ assert any (i .func .__name__ == "custom_echo" for i in groups ["rds_custom " ])
95
95
96
96
97
97
def test_initialize_toolsets_should_enable_default_group_when_toolsets_none (dummy_env ):
98
98
server = dummy_env
99
-
100
- initialize_toolsets (None )
101
-
102
- assert server .toolset_manager .enabled == {"default" }
99
+ initialize_toolsets (None , server .mcp )
100
+ assert server .toolset_manager .enabled == {"rds" }
103
101
104
102
105
103
def test_manager_should_report_enabled_groups_and_tools_when_queried (dummy_env ):
106
104
server = dummy_env
107
- from tools import load_groups
105
+ from alibabacloud_rds_openapi_mcp_server . toolsets . tool_registry import load_groups
108
106
109
- load_groups (server .toolset_manager , server )
110
- server .toolset_manager .enable ("rds" , "custom " )
107
+ load_groups (server .mcp )
108
+ server .toolset_manager .enable ("rds" , "rds_custom " )
111
109
112
- assert set (server .toolset_manager .get_registered_groups ()) >= {"default" , " rds" , "custom " }
113
- assert set (server .toolset_manager .get_enabled_groups ()) == {"rds" , "custom " }
114
- enabled = server .toolset_manager .get_enabled_tools ()
110
+ assert set (server .toolset_manager .registered_tool_groups ()) >= {"rds" , "rds_custom " }
111
+ assert set (server .toolset_manager .enabled_tool_groups ()) == {"rds" , "rds_custom " }
112
+ enabled = server .toolset_manager .enabled_tools ()
115
113
assert "rds" in enabled and server .describe_db_instances in enabled ["rds" ]
116
- assert "custom" in enabled and any (f .__name__ == "custom_echo" for f in enabled ["custom" ])
114
+ assert "rds_custom" in enabled and any (
115
+ f .__name__ == "custom_echo" for f in enabled ["rds_custom" ]
116
+ )
117
+
118
+ def test_set_group_should_move_tool_to_new_group_when_called (dummy_env ):
119
+ manager = dummy_env .toolset_manager
120
+
121
+ def new_tool ():
122
+ pass
123
+
124
+ manager .add_tool (new_tool )
125
+ manager .set_group (new_tool , "new_group" )
126
+
127
+ assert "new_group" in manager .groups
128
+ assert new_tool in [i .func for i in manager .groups ["new_group" ]]
129
+ assert all (i .func != new_tool for i in manager .groups ["rds" ])
130
+
131
+
132
+ def test_register_enabled_should_register_only_tools_from_enabled_groups (dummy_env ):
133
+ manager = dummy_env .toolset_manager
134
+
135
+ async def tool_a ():
136
+ pass
137
+
138
+ async def tool_b ():
139
+ pass
140
+
141
+ manager .add_tool (tool_a , group = "group_a" )
142
+ manager .add_tool (tool_b , group = "group_b" )
143
+
144
+ manager .enable ("group_a" )
145
+ manager .register_enabled (dummy_env .mcp )
146
+
147
+ assert tool_a in dummy_env .mcp ._tools
148
+ assert tool_b not in dummy_env .mcp ._tools
149
+
150
+
151
+ def test_initialize_toolsets_should_raise_when_group_invalid (dummy_env ):
152
+ with pytest .raises (ValueError ):
153
+ initialize_toolsets ("invalid_group" , dummy_env .mcp )
0 commit comments