44from typing import TYPE_CHECKING , Any
55
66from pydantic import AnyUrl
7+ from starlette .requests import Request
78
8- from mcp .shared . context import LifespanContextT , RequestT
9+ from mcp .server . session import ServerSession
910
1011if TYPE_CHECKING :
1112 from mcp .server .fastmcp .server import Context
12- from mcp .server .session import ServerSessionT
1313
1414
1515class Authorizer :
1616 __metaclass__ = abc .ABCMeta
1717
1818 @abc .abstractmethod
19- def permit_get_tool (self , name : str ) -> bool :
19+ def permit_get_tool (self , name : str , context : Context [ ServerSession , object , Request ] | None = None ) -> bool :
2020 """Check if the specified tool can be retrieved from the associated mcp server"""
2121 return False
2222
2323 @abc .abstractmethod
24- def permit_list_tool (self , name : str ) -> bool :
24+ def permit_list_tool (
25+ self ,
26+ name : str ,
27+ context : Context [ServerSession , object , Request ] | None = None ,
28+ ) -> bool :
2529 """Check if the specified tool can be listed from the associated mcp server"""
2630 return False
2731
@@ -30,79 +34,105 @@ def permit_call_tool(
3034 self ,
3135 name : str ,
3236 arguments : dict [str , Any ],
33- context : Context [ServerSessionT , LifespanContextT , RequestT ] | None = None ,
37+ context : Context [ServerSession , object , Request ] | None = None ,
3438 ) -> bool :
3539 """Check if the specified tool can be called from the associated mcp server"""
3640 return False
3741
3842 @abc .abstractmethod
39- def permit_get_resource (self , resource : AnyUrl | str ) -> bool :
43+ def permit_get_resource (
44+ self , resource : AnyUrl | str , context : Context [ServerSession , object , Request ] | None = None
45+ ) -> bool :
4046 """Check if the specified resource can be retrieved from the associated mcp server"""
4147 return False
4248
4349 @abc .abstractmethod
44- def permit_create_resource (self , uri : str , params : dict [str , Any ]) -> bool :
50+ def permit_create_resource (
51+ self , uri : str , params : dict [str , Any ], context : Context [ServerSession , object , Request ] | None = None
52+ ) -> bool :
4553 """Check if the specified resource can be created on the associated mcp server"""
4654 return False
4755
4856 @abc .abstractmethod
49- def permit_list_resource (self , resource : AnyUrl | str ) -> bool :
57+ def permit_list_resource (
58+ self , resource : AnyUrl | str , context : Context [ServerSession , object , Request ] | None = None
59+ ) -> bool :
5060 """Check if the specified resource can be listed from the associated mcp server"""
5161 return False
5262
5363 @abc .abstractmethod
54- def permit_list_template (self , resource : AnyUrl | str ) -> bool :
64+ def permit_list_template (
65+ self , resource : AnyUrl | str , context : Context [ServerSession , object , Request ] | None = None
66+ ) -> bool :
5567 """Check if the specified template can be listed from the associated mcp server"""
5668 return False
5769
5870 @abc .abstractmethod
59- def permit_get_prompt (self , name : str ) -> bool :
71+ def permit_get_prompt (self , name : str , context : Context [ ServerSession , object , Request ] | None = None ) -> bool :
6072 """Check if the specified prompt can be retrieved from the associated mcp server"""
6173 return False
6274
6375 @abc .abstractmethod
64- def permit_list_prompt (self , name : str ) -> bool :
76+ def permit_list_prompt (self , name : str , context : Context [ ServerSession , object , Request ] | None = None ) -> bool :
6577 """Check if the specified prompt can be listed from the associated mcp server"""
6678 return False
6779
6880 @abc .abstractmethod
69- def permit_render_prompt (self , name : str , arguments : dict [str , Any ] | None = None ) -> bool :
81+ def permit_render_prompt (
82+ self ,
83+ name : str ,
84+ arguments : dict [str , Any ] | None = None ,
85+ context : Context [ServerSession , object , Request ] | None = None ,
86+ ) -> bool :
7087 """Check if the specified prompt can be rendered from the associated mcp server"""
7188 return False
7289
7390
7491class AllAllAuthorizer (Authorizer ):
75- def permit_get_tool (self , name : str ) -> bool :
92+ def permit_get_tool (self , name : str , context : Context [ ServerSession , object , Request ] | None = None ) -> bool :
7693 return True
7794
78- def permit_list_tool (self , name : str ) -> bool :
95+ def permit_list_tool (self , name : str , context : Context [ ServerSession , object , Request ] | None = None ) -> bool :
7996 return True
8097
8198 def permit_call_tool (
8299 self ,
83100 name : str ,
84101 arguments : dict [str , Any ],
85- context : Context [ServerSessionT , LifespanContextT , RequestT ] | None = None ,
102+ context : Context [ServerSession , object , Request ] | None = None ,
86103 ) -> bool :
87104 return True
88105
89- def permit_get_resource (self , resource : AnyUrl | str ) -> bool :
106+ def permit_get_resource (
107+ self , resource : AnyUrl | str , context : Context [ServerSession , object , Request ] | None = None
108+ ) -> bool :
90109 return True
91110
92- def permit_create_resource (self , uri : str , params : dict [str , Any ]) -> bool :
111+ def permit_create_resource (
112+ self , uri : str , params : dict [str , Any ], context : Context [ServerSession , object , Request ] | None = None
113+ ) -> bool :
93114 return True
94115
95- def permit_list_resource (self , resource : AnyUrl | str ) -> bool :
116+ def permit_list_resource (
117+ self , resource : AnyUrl | str , context : Context [ServerSession , object , Request ] | None = None
118+ ) -> bool :
96119 return True
97120
98- def permit_list_template (self , resource : AnyUrl | str ) -> bool :
121+ def permit_list_template (
122+ self , resource : AnyUrl | str , context : Context [ServerSession , object , Request ] | None = None
123+ ) -> bool :
99124 return True
100125
101- def permit_get_prompt (self , name : str ) -> bool :
126+ def permit_get_prompt (self , name : str , context : Context [ ServerSession , object , Request ] | None = None ) -> bool :
102127 return True
103128
104- def permit_list_prompt (self , name : str ) -> bool :
129+ def permit_list_prompt (self , name : str , context : Context [ ServerSession , object , Request ] | None = None ) -> bool :
105130 return True
106131
107- def permit_render_prompt (self , name : str , arguments : dict [str , Any ] | None = None ) -> bool :
132+ def permit_render_prompt (
133+ self ,
134+ name : str ,
135+ arguments : dict [str , Any ] | None = None ,
136+ context : Context [ServerSession , object , Request ] | None = None ,
137+ ) -> bool :
108138 return True
0 commit comments