content: import pytest
  
  from mcp.server import Server
  from mcp.types import (
      ListPromptsRequest,
      ListPromptsResult,
      ListResourcesRequest,
      ListResourcesResult,
      ListToolsRequest,
      ListToolsResult,
      PaginatedRequestParams,
      ServerResult,
  )
  
  
  @pytest.mark.anyio
  async def test_list_prompts_pagination() -> None:
      server = Server("test")
      test_cursor = "test-cursor-123"
  
      # Track what request was received
      received_request: ListPromptsRequest | None = None
  
      @server.list_prompts()
      async def handle_list_prompts(request: ListPromptsRequest) -> ListPromptsResult:
          nonlocal received_request
          received_request = request
          return ListPromptsResult(prompts=[], nextCursor="next")
  
      handler = server.request_handlers[ListPromptsRequest]
  
      # Test: No cursor provided -> handler receives request with None params
      request = ListPromptsRequest(method="prompts/list", params=None)
      result = await handler(request)
      assert received_request is not None
      assert received_request.params is None
      assert isinstance(result, ServerResult)
  
      # Test: Cursor provided -> handler receives request with cursor in params
      request_with_cursor = ListPromptsRequest(method="prompts/list", params=PaginatedRequestParams(cursor=test_cursor))
      result2 = await handler(request_with_cursor)
      assert received_request is not None
      assert received_request.params is not None
      assert received_request.params.cursor == test_cursor
      assert isinstance(result2, ServerResult)
  
  
  @pytest.mark.anyio
  async def test_list_resources_pagination() -> None:
      server = Server("test")
      test_cursor = "resource-cursor-456"
  
      # Track what request was received
      received_request: ListResourcesRequest | None = None
  
      @server.list_resources()
      async def handle_list_resources(request: ListResourcesRequest) -> ListResourcesResult:
          nonlocal received_request
          received_request = request
          return ListResourcesResult(resources=[], nextCursor="next")
  
      handler = server.request_handlers[ListResourcesRequest]
  
      # Test: No cursor provided -> handler receives request with None params
      request = ListResourcesRequest(method="resources/list", params=None)
      result = await handler(request)
      assert received_request is not None
      assert received_request.params is None
      assert isinstance(result, ServerResult)
  
      # Test: Cursor provided -> handler receives request with cursor in params
      request_with_cursor = ListResourcesRequest(
          method="resources/list", params=PaginatedRequestParams(cursor=test_cursor)
      )
      result2 = await handler(request_with_cursor)
      assert received_request is not None
      assert received_request.params is not None
      assert received_request.params.cursor == test_cursor
      assert isinstance(result2, ServerResult)
  
  
  @pytest.mark.anyio
  async def test_list_tools_pagination() -> None:
      server = Server("test")
      test_cursor = "tools-cursor-789"
  
      # Track what request was received
      received_request: ListToolsRequest | None = None
  
      @server.list_tools()
      async def handle_list_tools(request: ListToolsRequest) -> ListToolsResult:
          nonlocal received_request
          received_request = request
          return ListToolsResult(tools=[], nextCursor="next")
  
      handler = server.request_handlers[ListToolsRequest]
  
      # Test: No cursor provided -> handler receives request with None params
      request = ListToolsRequest(method="tools/list", params=None)
      result = await handler(request)
      assert received_request is not None
      assert received_request.params is None
      assert isinstance(result, ServerResult)
  
      # Test: Cursor provided -> handler receives request with cursor in params
      request_with_cursor = ListToolsRequest(method="tools/list", params=PaginatedRequestParams(cursor=test_cursor))
      result2 = await handler(request_with_cursor)
      assert received_request is not None
      assert received_request.params is not None
      assert received_request.params.cursor == test_cursor
      assert isinstance(result2, ServerResult)
  