mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-09 15:19:10 +02:00
Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
261 lines
9.1 KiB
Text
261 lines
9.1 KiB
Text
---
|
|
title: visibility
|
|
sidebarTitle: visibility
|
|
---
|
|
|
|
# `fastmcp.server.transforms.visibility`
|
|
|
|
|
|
Visibility transform for marking component visibility state.
|
|
|
|
Each Visibility instance marks components via internal metadata. Multiple
|
|
visibility transforms can be stacked - later transforms override earlier ones.
|
|
Final filtering happens at the Provider level.
|
|
|
|
|
|
## Functions
|
|
|
|
### `is_enabled` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L271" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
is_enabled(component: FastMCPComponent) -> bool
|
|
```
|
|
|
|
|
|
Check if component is enabled.
|
|
|
|
Returns True if:
|
|
- No visibility mark exists (default is enabled)
|
|
- Visibility mark is True
|
|
|
|
Returns False if visibility mark is False.
|
|
|
|
**Args:**
|
|
- `component`: Component to check.
|
|
|
|
**Returns:**
|
|
- True if component should be enabled/visible to clients.
|
|
|
|
|
|
### `get_visibility_rules` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L300" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
get_visibility_rules(context: Context) -> list[dict[str, Any]]
|
|
```
|
|
|
|
|
|
Load visibility rule dicts from session state.
|
|
|
|
|
|
### `save_visibility_rules` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L305" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```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_visibility_transforms` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L332" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
create_visibility_transforms(rules: list[dict[str, Any]]) -> list[Visibility]
|
|
```
|
|
|
|
|
|
Convert rule dicts to Visibility transforms.
|
|
|
|
|
|
### `get_session_transforms` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L360" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
get_session_transforms(context: Context) -> list[Visibility]
|
|
```
|
|
|
|
|
|
Get session-specific Visibility transforms from state store.
|
|
|
|
|
|
### `enable_components` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L372" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```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
|
|
(Visibility 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` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L426" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```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
|
|
(Visibility 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_visibility` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L480" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
reset_visibility(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` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L497" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```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 visibility 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
|
|
|
|
### `Visibility` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L39" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
|
|
Sets visibility state on matching components.
|
|
|
|
Does NOT filter inline - just marks components with visibility state.
|
|
Later transforms in the chain can override earlier marks.
|
|
Final filtering happens at the Provider level after all transforms run.
|
|
|
|
|
|
**Methods:**
|
|
|
|
#### `list_tools` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L196" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
list_tools(self, tools: Sequence[Tool]) -> Sequence[Tool]
|
|
```
|
|
|
|
Mark tools by visibility state.
|
|
|
|
|
|
#### `get_tool` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L200" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
get_tool(self, name: str, call_next: GetToolNext) -> Tool | None
|
|
```
|
|
|
|
Mark tool if found.
|
|
|
|
|
|
#### `list_resources` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L213" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
list_resources(self, resources: Sequence[Resource]) -> Sequence[Resource]
|
|
```
|
|
|
|
Mark resources by visibility state.
|
|
|
|
|
|
#### `get_resource` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L217" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
get_resource(self, uri: str, call_next: GetResourceNext) -> Resource | None
|
|
```
|
|
|
|
Mark resource if found.
|
|
|
|
|
|
#### `list_resource_templates` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L234" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
list_resource_templates(self, templates: Sequence[ResourceTemplate]) -> Sequence[ResourceTemplate]
|
|
```
|
|
|
|
Mark resource templates by visibility state.
|
|
|
|
|
|
#### `get_resource_template` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L240" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
get_resource_template(self, uri: str, call_next: GetResourceTemplateNext) -> ResourceTemplate | None
|
|
```
|
|
|
|
Mark resource template if found.
|
|
|
|
|
|
#### `list_prompts` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L257" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
list_prompts(self, prompts: Sequence[Prompt]) -> Sequence[Prompt]
|
|
```
|
|
|
|
Mark prompts by visibility state.
|
|
|
|
|
|
#### `get_prompt` <sup><a href="https://github.com/jlowin/fastmcp/blob/main/src/fastmcp/server/transforms/visibility.py#L261" target="_blank"><Icon icon="github" style="width: 14px; height: 14px;" /></a></sup>
|
|
|
|
```python
|
|
get_prompt(self, name: str, call_next: GetPromptNext) -> Prompt | None
|
|
```
|
|
|
|
Mark prompt if found.
|
|
|