--- title: enabled sidebarTitle: enabled --- # `fastmcp.server.transforms.enabled` Enabled transform for marking component enabled state. Each Enabled instance marks components via internal metadata. Multiple enabled transforms can be stacked - later transforms override earlier ones. Final filtering happens at the Provider level. ## Functions ### `is_enabled` ```python is_enabled(component: FastMCPComponent) -> bool ``` Check if component is enabled. Returns True if: - No enabled mark exists (default is enabled) - Enabled mark is True Returns False if enabled mark is False. **Args:** - `component`: Component to check. **Returns:** - True if component should be enabled/visible to clients. ### `get_visibility_rules` ```python get_visibility_rules(context: Context) -> list[dict[str, Any]] ``` Load visibility rule dicts from session state. ### `save_visibility_rules` ```python save_visibility_rules(context: Context, rules: list[dict[str, Any]]) -> None ``` Save visibility rule dicts to session state and send notifications. **Args:** - `context`: The context to save rules for. - `rules`: The visibility rules to save. - `components`: Optional hint about which component types are affected. If None, sends notifications for all types (safe default). If provided, only sends notifications for specified types. ### `create_enabled_transforms` ```python create_enabled_transforms(rules: list[dict[str, Any]]) -> list[Enabled] ``` Convert rule dicts to Enabled transforms. ### `get_session_transforms` ```python get_session_transforms(context: Context) -> list[Enabled] ``` Get session-specific Enabled transforms from state store. ### `enable_components` ```python enable_components(context: Context) -> None ``` Enable components matching criteria for this session only. Session rules override global transforms. Rules accumulate - each call adds a new rule to the session. Later marks override earlier ones (Enabled transform semantics). Sends notifications to this session only: ToolListChangedNotification, ResourceListChangedNotification, and PromptListChangedNotification. **Args:** - `context`: The context for this session. - `names`: Component names or URIs to match. - `keys`: Component keys to match (e.g., {"tool\:my_tool@v1"}). - `version`: Component version spec to match. - `tags`: Tags to match (component must have at least one). - `components`: Component types to match (e.g., {"tool", "prompt"}). - `match_all`: If True, matches all components regardless of other criteria. ### `disable_components` ```python disable_components(context: Context) -> None ``` Disable components matching criteria for this session only. Session rules override global transforms. Rules accumulate - each call adds a new rule to the session. Later marks override earlier ones (Enabled transform semantics). Sends notifications to this session only: ToolListChangedNotification, ResourceListChangedNotification, and PromptListChangedNotification. **Args:** - `context`: The context for this session. - `names`: Component names or URIs to match. - `keys`: Component keys to match (e.g., {"tool\:my_tool@v1"}). - `version`: Component version spec to match. - `tags`: Tags to match (component must have at least one). - `components`: Component types to match (e.g., {"tool", "prompt"}). - `match_all`: If True, matches all components regardless of other criteria. ### `reset_components` ```python reset_components(context: Context) -> None ``` Clear all session visibility rules. Use this to reset session visibility back to global defaults. Sends notifications to this session only: ToolListChangedNotification, ResourceListChangedNotification, and PromptListChangedNotification. **Args:** - `context`: The context for this session. ### `apply_session_transforms` ```python apply_session_transforms(components: Sequence[ComponentT]) -> Sequence[ComponentT] ``` Apply session-specific visibility transforms to components. This helper applies session-level enable/disable rules by marking components with their enabled state. Session transforms override global transforms due to mark-based semantics (later marks win). **Args:** - `components`: The components to apply session transforms to. **Returns:** - The components with session transforms applied. ## Classes ### `Enabled` Sets enabled state on matching components. Does NOT filter inline - just marks components with enabled state. Later transforms in the chain can override earlier marks. Final filtering happens at the Provider level after all transforms run. **Methods:** #### `list_tools` ```python list_tools(self, call_next: ListToolsNext) -> Sequence[Tool] ``` Mark tools by enabled state. #### `get_tool` ```python get_tool(self, name: str, call_next: GetToolNext) -> Tool | None ``` Mark tool if found. #### `list_resources` ```python list_resources(self, call_next: ListResourcesNext) -> Sequence[Resource] ``` Mark resources by enabled state. #### `get_resource` ```python get_resource(self, uri: str, call_next: GetResourceNext) -> Resource | None ``` Mark resource if found. #### `list_resource_templates` ```python list_resource_templates(self, call_next: ListResourceTemplatesNext) -> Sequence[ResourceTemplate] ``` Mark resource templates by enabled state. #### `get_resource_template` ```python get_resource_template(self, uri: str, call_next: GetResourceTemplateNext) -> ResourceTemplate | None ``` Mark resource template if found. #### `list_prompts` ```python list_prompts(self, call_next: ListPromptsNext) -> Sequence[Prompt] ``` Mark prompts by enabled state. #### `get_prompt` ```python get_prompt(self, name: str, call_next: GetPromptNext) -> Prompt | None ``` Mark prompt if found.