@@ -67,8 +67,13 @@ async def test_basic_server_tools(basic_mcp_session):
6767 break
6868
6969 assert greet_tool is not None
70- assert "name" in greet_tool .inputSchema
71- assert greet_tool .inputSchema ["name" ]["required" ] is True
70+ # Verify inputSchema structure
71+ assert greet_tool .inputSchema ["type" ] == "object"
72+ assert "properties" in greet_tool .inputSchema
73+ assert "name" in greet_tool .inputSchema ["properties" ]
74+ assert greet_tool .inputSchema ["properties" ]["name" ]["required" ] is True
75+ assert "required" in greet_tool .inputSchema
76+ assert "name" in greet_tool .inputSchema ["required" ]
7277
7378 # Find the users.list command
7479 users_list_tool = None
@@ -78,6 +83,14 @@ async def test_basic_server_tools(basic_mcp_session):
7883 break
7984
8085 assert users_list_tool is not None
86+ # Verify inputSchema structure (should only have help param)
87+ assert users_list_tool .inputSchema ["type" ] == "object"
88+ assert "properties" in users_list_tool .inputSchema
89+ # Click automatically adds --help, so we expect only that property
90+ assert len (users_list_tool .inputSchema ["properties" ]) <= 1
91+ if len (users_list_tool .inputSchema ["properties" ]) == 1 :
92+ assert "help" in users_list_tool .inputSchema ["properties" ]
93+ assert "required" not in users_list_tool .inputSchema # No required params
8194
8295 # Find the echo command
8396 echo_tool = None
@@ -87,9 +100,14 @@ async def test_basic_server_tools(basic_mcp_session):
87100 break
88101
89102 assert echo_tool is not None
90- assert "count" in echo_tool .inputSchema
91- assert echo_tool .inputSchema ["count" ]["schema" ]["type" ] == "integer"
92- assert "message" in echo_tool .inputSchema
103+ # Verify inputSchema structure
104+ assert echo_tool .inputSchema ["type" ] == "object"
105+ assert "properties" in echo_tool .inputSchema
106+ assert "count" in echo_tool .inputSchema ["properties" ]
107+ assert echo_tool .inputSchema ["properties" ]["count" ]["schema" ]["type" ] == "integer"
108+ assert "message" in echo_tool .inputSchema ["properties" ]
109+ assert "required" in echo_tool .inputSchema
110+ assert "message" in echo_tool .inputSchema ["required" ] # Only message is required
93111
94112
95113@pytest .mark .anyio
@@ -234,8 +252,14 @@ async def test_advanced_server_tools(advanced_mcp_session):
234252 break
235253
236254 assert config_set_tool is not None
237- assert "key" in config_set_tool .inputSchema
238- assert "value" in config_set_tool .inputSchema
255+ # Verify inputSchema structure
256+ assert config_set_tool .inputSchema ["type" ] == "object"
257+ assert "properties" in config_set_tool .inputSchema
258+ assert "key" in config_set_tool .inputSchema ["properties" ]
259+ assert "value" in config_set_tool .inputSchema ["properties" ]
260+ assert "required" in config_set_tool .inputSchema
261+ assert "key" in config_set_tool .inputSchema ["required" ]
262+ assert "value" in config_set_tool .inputSchema ["required" ]
239263
240264 # Find the greet command with formal option
241265 greet_tool = None
@@ -245,8 +269,14 @@ async def test_advanced_server_tools(advanced_mcp_session):
245269 break
246270
247271 assert greet_tool is not None
248- assert "formal" in greet_tool .inputSchema
249- assert greet_tool .inputSchema ["formal" ]["schema" ]["type" ] == "boolean"
272+ # Verify inputSchema structure
273+ assert greet_tool .inputSchema ["type" ] == "object"
274+ assert "properties" in greet_tool .inputSchema
275+ assert "name" in greet_tool .inputSchema ["properties" ]
276+ assert "formal" in greet_tool .inputSchema ["properties" ]
277+ assert greet_tool .inputSchema ["properties" ]["formal" ]["schema" ]["type" ] == "boolean"
278+ assert "required" in greet_tool .inputSchema
279+ assert "name" in greet_tool .inputSchema ["required" ] # Only name is required
250280
251281
252282@pytest .fixture
0 commit comments