22
33import pytest
44
5+ import mcp .types as types
56from mcp .server import Server
67from mcp .server .fastmcp import FastMCP
78from mcp .shared .memory import create_connected_server_and_client_session as create_session
1213pytestmark = pytest .mark .anyio
1314
1415
16+ @pytest .mark .filterwarnings ("ignore::DeprecationWarning" )
1517async def test_list_tools_cursor_parameter (stream_spy : Callable [[], StreamSpyCollection ]):
1618 """Test that the cursor parameter is accepted for list_tools
1719 and that it is correctly passed to the server.
@@ -38,15 +40,15 @@ async def test_tool_2() -> str:
3840 _ = await client_session .list_tools ()
3941 list_tools_requests = spies .get_client_requests (method = "tools/list" )
4042 assert len (list_tools_requests ) == 1
41- assert list_tools_requests [0 ].params == {}
43+ assert list_tools_requests [0 ].params is None
4244
4345 spies .clear ()
4446
4547 # Test with cursor=None
4648 _ = await client_session .list_tools (cursor = None )
4749 list_tools_requests = spies .get_client_requests (method = "tools/list" )
4850 assert len (list_tools_requests ) == 1
49- assert list_tools_requests [0 ].params == {}
51+ assert list_tools_requests [0 ].params is None
5052
5153 spies .clear ()
5254
@@ -67,6 +69,7 @@ async def test_tool_2() -> str:
6769 assert list_tools_requests [0 ].params ["cursor" ] == ""
6870
6971
72+ @pytest .mark .filterwarnings ("ignore::DeprecationWarning" )
7073async def test_list_resources_cursor_parameter (stream_spy : Callable [[], StreamSpyCollection ]):
7174 """Test that the cursor parameter is accepted for list_resources
7275 and that it is correctly passed to the server.
@@ -88,15 +91,15 @@ async def test_resource() -> str:
8891 _ = await client_session .list_resources ()
8992 list_resources_requests = spies .get_client_requests (method = "resources/list" )
9093 assert len (list_resources_requests ) == 1
91- assert list_resources_requests [0 ].params == {}
94+ assert list_resources_requests [0 ].params is None
9295
9396 spies .clear ()
9497
9598 # Test with cursor=None
9699 _ = await client_session .list_resources (cursor = None )
97100 list_resources_requests = spies .get_client_requests (method = "resources/list" )
98101 assert len (list_resources_requests ) == 1
99- assert list_resources_requests [0 ].params == {}
102+ assert list_resources_requests [0 ].params is None
100103
101104 spies .clear ()
102105
@@ -117,6 +120,7 @@ async def test_resource() -> str:
117120 assert list_resources_requests [0 ].params ["cursor" ] == ""
118121
119122
123+ @pytest .mark .filterwarnings ("ignore::DeprecationWarning" )
120124async def test_list_prompts_cursor_parameter (stream_spy : Callable [[], StreamSpyCollection ]):
121125 """Test that the cursor parameter is accepted for list_prompts
122126 and that it is correctly passed to the server.
@@ -137,15 +141,15 @@ async def test_prompt(name: str) -> str:
137141 _ = await client_session .list_prompts ()
138142 list_prompts_requests = spies .get_client_requests (method = "prompts/list" )
139143 assert len (list_prompts_requests ) == 1
140- assert list_prompts_requests [0 ].params == {}
144+ assert list_prompts_requests [0 ].params is None
141145
142146 spies .clear ()
143147
144148 # Test with cursor=None
145149 _ = await client_session .list_prompts (cursor = None )
146150 list_prompts_requests = spies .get_client_requests (method = "prompts/list" )
147151 assert len (list_prompts_requests ) == 1
148- assert list_prompts_requests [0 ].params == {}
152+ assert list_prompts_requests [0 ].params is None
149153
150154 spies .clear ()
151155
@@ -166,6 +170,7 @@ async def test_prompt(name: str) -> str:
166170 assert list_prompts_requests [0 ].params ["cursor" ] == ""
167171
168172
173+ @pytest .mark .filterwarnings ("ignore::DeprecationWarning" )
169174async def test_list_resource_templates_cursor_parameter (stream_spy : Callable [[], StreamSpyCollection ]):
170175 """Test that the cursor parameter is accepted for list_resource_templates
171176 and that it is correctly passed to the server.
@@ -187,15 +192,15 @@ async def test_template(name: str) -> str:
187192 _ = await client_session .list_resource_templates ()
188193 list_templates_requests = spies .get_client_requests (method = "resources/templates/list" )
189194 assert len (list_templates_requests ) == 1
190- assert list_templates_requests [0 ].params == {}
195+ assert list_templates_requests [0 ].params is None
191196
192197 spies .clear ()
193198
194199 # Test with cursor=None
195200 _ = await client_session .list_resource_templates (cursor = None )
196201 list_templates_requests = spies .get_client_requests (method = "resources/templates/list" )
197202 assert len (list_templates_requests ) == 1
198- assert list_templates_requests [0 ].params == {}
203+ assert list_templates_requests [0 ].params is None
199204
200205 spies .clear ()
201206
@@ -244,5 +249,6 @@ async def handle_list_tools(request: ListToolsRequest) -> ListToolsResult:
244249 return ListToolsResult (tools = [])
245250
246251 async with create_session (server ) as client_session :
247- result = await client_session .list_tools ()
252+ # Use params to explicitly send params: {} for strict server compatibility
253+ result = await client_session .list_tools (params = types .PaginatedRequestParams ())
248254 assert result is not None
0 commit comments