@@ -252,6 +252,16 @@ def values() -> List[str]:
252252 return [action .value for action in BackupsAction ]
253253
254254
255+ class MCPAction (str , _Action , Enum ):
256+ CREATE = "create_mcp"
257+ READ = "read_mcp"
258+ UPDATE = "update_mcp"
259+
260+ @staticmethod
261+ def values () -> List [str ]:
262+ return [action .value for action in MCPAction ]
263+
264+
255265class ReplicateAction (str , _Action , Enum ):
256266 CREATE = "create_replicate"
257267 READ = "read_replicate"
@@ -407,6 +417,16 @@ def _to_weaviate(self) -> List[WeaviatePermission]:
407417 ]
408418
409419
420+ class _MCPPermission (_Permission [MCPAction ]):
421+ def _to_weaviate (self ) -> List [WeaviatePermission ]:
422+ return [
423+ {
424+ "action" : action ,
425+ }
426+ for action in self .actions
427+ ]
428+
429+
410430class _ClusterPermission (_Permission [ClusterAction ]):
411431 def _to_weaviate (self ) -> List [WeaviatePermission ]:
412432 return [
@@ -470,6 +490,10 @@ class BackupsPermissionOutput(_BackupsPermission):
470490 pass
471491
472492
493+ class MCPPermissionOutput (_MCPPermission ):
494+ pass
495+
496+
473497class NodesPermissionOutput (_NodesPermission ):
474498 pass
475499
@@ -486,6 +510,7 @@ class TenantsPermissionOutput(_TenantsPermission):
486510 RolesPermissionOutput ,
487511 UsersPermissionOutput ,
488512 BackupsPermissionOutput ,
513+ MCPPermissionOutput ,
489514 NodesPermissionOutput ,
490515 TenantsPermissionOutput ,
491516 ReplicatePermissionOutput ,
@@ -507,6 +532,7 @@ class Role(RoleBase):
507532 roles_permissions : List [RolesPermissionOutput ]
508533 users_permissions : List [UsersPermissionOutput ]
509534 backups_permissions : List [BackupsPermissionOutput ]
535+ mcp_permissions : List [MCPPermissionOutput ]
510536 nodes_permissions : List [NodesPermissionOutput ]
511537 tenants_permissions : List [TenantsPermissionOutput ]
512538 replicate_permissions : List [ReplicatePermissionOutput ]
@@ -522,6 +548,7 @@ def permissions(self) -> List[PermissionsOutputType]:
522548 permissions .extend (self .roles_permissions )
523549 permissions .extend (self .users_permissions )
524550 permissions .extend (self .backups_permissions )
551+ permissions .extend (self .mcp_permissions )
525552 permissions .extend (self .nodes_permissions )
526553 permissions .extend (self .tenants_permissions )
527554 permissions .extend (self .replicate_permissions )
@@ -537,6 +564,7 @@ def _from_weaviate_role(cls, role: WeaviateRole) -> "Role":
537564 roles_permissions : List [RolesPermissionOutput ] = []
538565 data_permissions : List [DataPermissionOutput ] = []
539566 backups_permissions : List [BackupsPermissionOutput ] = []
567+ mcp_permissions : List [MCPPermissionOutput ] = []
540568 nodes_permissions : List [NodesPermissionOutput ] = []
541569 tenants_permissions : List [TenantsPermissionOutput ] = []
542570 replicate_permissions : List [ReplicatePermissionOutput ] = []
@@ -605,6 +633,10 @@ def _from_weaviate_role(cls, role: WeaviateRole) -> "Role":
605633 actions = {BackupsAction (permission ["action" ])},
606634 )
607635 )
636+ elif permission ["action" ] in MCPAction .values ():
637+ mcp_permissions .append (
638+ MCPPermissionOutput (actions = {MCPAction (permission ["action" ])})
639+ )
608640 elif permission ["action" ] in NodesAction .values ():
609641 nodes = permission .get ("nodes" )
610642 if nodes is not None :
@@ -658,6 +690,7 @@ def _from_weaviate_role(cls, role: WeaviateRole) -> "Role":
658690 groups_permissions = _join_permissions (groups_permissions ),
659691 data_permissions = _join_permissions (data_permissions ),
660692 backups_permissions = _join_permissions (backups_permissions ),
693+ mcp_permissions = _join_permissions (mcp_permissions ),
661694 nodes_permissions = _join_permissions (nodes_permissions ),
662695 tenants_permissions = _join_permissions (tenants_permissions ),
663696 replicate_permissions = _join_permissions (replicate_permissions ),
@@ -710,6 +743,7 @@ class Actions:
710743 Cluster = ClusterAction
711744 Nodes = NodesAction
712745 Backups = BackupsAction
746+ MCP = MCPAction
713747 Tenants = TenantsAction
714748 Users = UsersAction
715749 Replicate = ReplicateAction
@@ -1020,6 +1054,21 @@ def backup(
10201054 permissions .append (permission )
10211055 return permissions
10221056
1057+ @staticmethod
1058+ def mcp (
1059+ * , create : bool = False , read : bool = False , update : bool = False
1060+ ) -> PermissionsCreateType :
1061+ actions : Set [MCPAction ] = set ()
1062+ if create :
1063+ actions .add (MCPAction .CREATE )
1064+ if read :
1065+ actions .add (MCPAction .READ )
1066+ if update :
1067+ actions .add (MCPAction .UPDATE )
1068+ if len (actions ) > 0 :
1069+ return [_MCPPermission (actions = actions )]
1070+ return []
1071+
10231072 @staticmethod
10241073 def cluster (* , read : bool = False ) -> PermissionsCreateType :
10251074 if read :
0 commit comments