44import  pytest 
55
66from  mcp  import  types 
7- from  mcp .server .lowlevel .func_inspection  import  accepts_cursor 
7+ from  mcp .server .lowlevel .func_inspection  import  accepts_request 
88
99
1010# Test fixtures - functions and methods with various signatures 
1111class  MyClass :
12-     async  def  no_cursor_method (self ):
13-         """Instance method without cursor  parameter""" 
12+     async  def  no_request_method (self ):
13+         """Instance method without request  parameter""" 
1414        pass 
1515
1616    # noinspection PyMethodParameters 
17-     async  def  no_cursor_method_bad_self_name (bad ):  # pyright: ignore[reportSelfClsParameterName] 
18-         """Instance method with cursor  parameter, but with bad self name""" 
17+     async  def  no_request_method_bad_self_name (bad ):  # pyright: ignore[reportSelfClsParameterName] 
18+         """Instance method without request  parameter, but with bad self name""" 
1919        pass 
2020
21-     async  def  cursor_method (self , cursor : types .Cursor   |   None ):
22-         """Instance method with cursor  parameter""" 
21+     async  def  request_method (self , request : types .ListPromptsRequest ):
22+         """Instance method with request  parameter""" 
2323        pass 
2424
2525    # noinspection PyMethodParameters 
26-     async  def  cursor_method_bad_self_name (bad , cursor : types .Cursor   |   None ):  # pyright: ignore[reportSelfClsParameterName] 
27-         """Instance method with cursor  parameter, but with bad self name""" 
26+     async  def  request_method_bad_self_name (bad , request : types .ListPromptsRequest ):  # pyright: ignore[reportSelfClsParameterName] 
27+         """Instance method with request  parameter, but with bad self name""" 
2828        pass 
2929
3030    @classmethod  
31-     async  def  no_cursor_class_method (cls ):
32-         """Class method without cursor  parameter""" 
31+     async  def  no_request_class_method (cls ):
32+         """Class method without request  parameter""" 
3333        pass 
3434
3535    # noinspection PyMethodParameters 
3636    @classmethod  
37-     async  def  no_cursor_class_method_bad_cls_name (bad ):  # pyright: ignore[reportSelfClsParameterName] 
38-         """Class method without cursor  parameter, but with bad cls name""" 
37+     async  def  no_request_class_method_bad_cls_name (bad ):  # pyright: ignore[reportSelfClsParameterName] 
38+         """Class method without request  parameter, but with bad cls name""" 
3939        pass 
4040
4141    @classmethod  
42-     async  def  cursor_class_method (cls , cursor : types .Cursor   |   None ):
43-         """Class method with cursor  parameter""" 
42+     async  def  request_class_method (cls , request : types .ListPromptsRequest ):
43+         """Class method with request  parameter""" 
4444        pass 
4545
4646    # noinspection PyMethodParameters 
4747    @classmethod  
48-     async  def  cursor_class_method_bad_cls_name (bad , cursor : types .Cursor   |   None ):  # pyright: ignore[reportSelfClsParameterName] 
49-         """Class method with cursor  parameter, but with bad cls name""" 
48+     async  def  request_class_method_bad_cls_name (bad , request : types .ListPromptsRequest ):  # pyright: ignore[reportSelfClsParameterName] 
49+         """Class method with request  parameter, but with bad cls name""" 
5050        pass 
5151
5252    @staticmethod  
53-     async  def  no_cursor_static_method ():
54-         """Static method without cursor  parameter""" 
53+     async  def  no_request_static_method ():
54+         """Static method without request  parameter""" 
5555        pass 
5656
5757    @staticmethod  
58-     async  def  cursor_static_method ( cursor : types .Cursor   |   None ):
59-         """Static method with cursor  parameter""" 
58+     async  def  request_static_method ( request : types .ListPromptsRequest ):
59+         """Static method with request  parameter""" 
6060        pass 
6161
6262    @staticmethod  
63-     async  def  cursor_static_method_bad_arg_name (self : types .Cursor   |   None ):  # pyright: ignore[reportSelfClsParameterName] 
64-         """Static method with cursor  parameter, but the cursor  argument is named self""" 
63+     async  def  request_static_method_bad_arg_name (self : types .ListPromptsRequest ):  # pyright: ignore[reportSelfClsParameterName] 
64+         """Static method with request  parameter, but the request  argument is named self""" 
6565        pass 
6666
6767
68- async  def  no_cursor_func ():
69-     """Function without cursor  parameter""" 
68+ async  def  no_request_func ():
69+     """Function without request  parameter""" 
7070    pass 
7171
7272
73- async  def  cursor_func ( cursor : types .Cursor   |   None ):
74-     """Function with cursor  parameter""" 
73+ async  def  request_func ( request : types .ListPromptsRequest ):
74+     """Function with request  parameter""" 
7575    pass 
7676
7777
78- async  def  cursor_func_different_name ( c : types .Cursor   |   None ):
79-     """Function with cursor  parameter but different arg name""" 
78+ async  def  request_func_different_name ( req : types .ListPromptsRequest ):
79+     """Function with request  parameter but different arg name""" 
8080    pass 
8181
8282
83- async  def  cursor_func_with_self (self : types .Cursor   |   None ):
83+ async  def  request_func_with_self (self : types .ListPromptsRequest ):
8484    """Function with parameter named 'self' (edge case)""" 
8585    pass 
8686
@@ -90,8 +90,8 @@ async def var_positional_func(*args: Any):
9090    pass 
9191
9292
93- async  def  positional_with_var_positional_func (cursor : types .Cursor   |   None , * args : Any ):
94-     """Function with cursor  and *args""" 
93+ async  def  positional_with_var_positional_func (request : types .ListPromptsRequest , * args : Any ):
94+     """Function with request  and *args""" 
9595    pass 
9696
9797
@@ -100,18 +100,18 @@ async def var_keyword_func(**kwargs: Any):
100100    pass 
101101
102102
103- async  def  cursor_with_var_keyword_func ( cursor : types .Cursor   |   None , ** kwargs : Any ):
104-     """Function with cursor  and **kwargs""" 
103+ async  def  request_with_var_keyword_func ( request : types .ListPromptsRequest , ** kwargs : Any ):
104+     """Function with request  and **kwargs""" 
105105    pass 
106106
107107
108- async  def  cursor_with_default ( cursor : types .Cursor  |  None  =  None ):
109-     """Function with cursor  parameter having default value""" 
108+ async  def  request_with_default ( request : types .ListPromptsRequest  |  None  =  None ):
109+     """Function with request  parameter having default value""" 
110110    pass 
111111
112112
113- async  def  keyword_only_with_defaults (* , cursor : types .Cursor  |  None  =  None ):
114-     """Function with keyword-only cursor  with default""" 
113+ async  def  keyword_only_with_defaults (* , request : types .ListPromptsRequest  |  None  =  None ):
114+     """Function with keyword-only request  with default""" 
115115    pass 
116116
117117
@@ -120,7 +120,7 @@ async def keyword_only_multiple_all_defaults(*, a: str = "test", b: int = 42):
120120    pass 
121121
122122
123- async  def  mixed_positional_and_keyword (cursor : types .Cursor   |   None , * , extra : str  =  "test" ):
123+ async  def  mixed_positional_and_keyword (request : types .ListPromptsRequest , * , extra : str  =  "test" ):
124124    """Function with positional and keyword-only params""" 
125125    pass 
126126
@@ -129,45 +129,45 @@ async def mixed_positional_and_keyword(cursor: types.Cursor | None, *, extra: st
129129    "callable_obj,expected,description" , 
130130    [ 
131131        # Regular functions  
132-         (no_cursor_func , False , "function without parameters" ), 
133-         (cursor_func , True , "function with cursor  parameter" ), 
134-         (cursor_func_different_name , True , "function with cursor  (different param name)" ), 
135-         (cursor_func_with_self , True , "function with param named 'self'" ), 
132+         (no_request_func , False , "function without parameters" ), 
133+         (request_func , True , "function with request  parameter" ), 
134+         (request_func_different_name , True , "function with request  (different param name)" ), 
135+         (request_func_with_self , True , "function with param named 'self'" ), 
136136        # Instance methods  
137-         (MyClass ().no_cursor_method , False , "instance method without cursor " ), 
138-         (MyClass ().no_cursor_method_bad_self_name , False , "instance method without cursor  (bad self name)" ), 
139-         (MyClass ().cursor_method , True , "instance method with cursor " ), 
140-         (MyClass ().cursor_method_bad_self_name , True , "instance method with cursor  (bad self name)" ), 
137+         (MyClass ().no_request_method , False , "instance method without request " ), 
138+         (MyClass ().no_request_method_bad_self_name , False , "instance method without request  (bad self name)" ), 
139+         (MyClass ().request_method , True , "instance method with request " ), 
140+         (MyClass ().request_method_bad_self_name , True , "instance method with request  (bad self name)" ), 
141141        # Class methods  
142-         (MyClass .no_cursor_class_method , False , "class method without cursor " ), 
143-         (MyClass .no_cursor_class_method_bad_cls_name , False , "class method without cursor  (bad cls name)" ), 
144-         (MyClass .cursor_class_method , True , "class method with cursor " ), 
145-         (MyClass .cursor_class_method_bad_cls_name , True , "class method with cursor  (bad cls name)" ), 
142+         (MyClass .no_request_class_method , False , "class method without request " ), 
143+         (MyClass .no_request_class_method_bad_cls_name , False , "class method without request  (bad cls name)" ), 
144+         (MyClass .request_class_method , True , "class method with request " ), 
145+         (MyClass .request_class_method_bad_cls_name , True , "class method with request  (bad cls name)" ), 
146146        # Static methods  
147-         (MyClass .no_cursor_static_method , False , "static method without cursor " ), 
148-         (MyClass .cursor_static_method , True , "static method with cursor " ), 
149-         (MyClass .cursor_static_method_bad_arg_name , True , "static method with cursor  (bad arg name)" ), 
147+         (MyClass .no_request_static_method , False , "static method without request " ), 
148+         (MyClass .request_static_method , True , "static method with request " ), 
149+         (MyClass .request_static_method_bad_arg_name , True , "static method with request  (bad arg name)" ), 
150150        # Variadic parameters  
151151        (var_positional_func , True , "function with *args" ), 
152-         (positional_with_var_positional_func , True , "function with cursor  and *args" ), 
152+         (positional_with_var_positional_func , True , "function with request  and *args" ), 
153153        (var_keyword_func , False , "function with **kwargs" ), 
154-         (cursor_with_var_keyword_func , True , "function with cursor  and **kwargs" ), 
154+         (request_with_var_keyword_func , True , "function with request  and **kwargs" ), 
155155        # Edge cases  
156-         (cursor_with_default , True , "function with cursor  having default value" ), 
156+         (request_with_default , True , "function with request  having default value" ), 
157157        # Keyword-only parameters  
158158        (keyword_only_with_defaults , False , "keyword-only with default (can call with no args)" ), 
159159        (keyword_only_multiple_all_defaults , False , "multiple keyword-only all with defaults" ), 
160160        (mixed_positional_and_keyword , True , "mixed positional and keyword-only params" ), 
161161    ], 
162162    ids = lambda  x : x  if  isinstance (x , str ) else  "" , 
163163) 
164- def  test_accepts_cursor (callable_obj : Callable [..., Any ], expected : bool , description : str ):
165-     """Test that accepts_cursor  correctly identifies functions that accept a cursor  parameter. 
164+ def  test_accepts_request (callable_obj : Callable [..., Any ], expected : bool , description : str ):
165+     """Test that accepts_request  correctly identifies functions that accept a request  parameter. 
166166
167167    The function should return True if the callable can potentially accept a positional 
168-     cursor  argument. Returns False if: 
168+     request  argument. Returns False if: 
169169    - No parameters at all 
170170    - Only keyword-only parameters that ALL have defaults (can call with no args) 
171171    - Only **kwargs parameter (can't accept positional arguments) 
172172    """ 
173-     assert  accepts_cursor (callable_obj ) ==  expected , f"Failed for { description }  
173+     assert  accepts_request (callable_obj ) ==  expected , f"Failed for { description }  
0 commit comments