mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-17 02:59:11 +02:00
55 lines
2.5 KiB
Markdown
55 lines
2.5 KiB
Markdown
# Namespace Activation
|
|
|
|
Demonstrates session-specific visibility control using tags to organize tools into namespaces that can be activated on demand.
|
|
|
|
## Pattern
|
|
|
|
1. Tag tools with namespaces: `@server.tool(tags={"namespace:finance"})`
|
|
2. Globally disable namespaces: `server.disable(tags={"namespace:finance"})`
|
|
3. Provide activation tools that call `ctx.enable_components(tags={"namespace:finance"})`
|
|
|
|
Each session starts with only the activation tools visible. When a session calls an activation tool, that namespace becomes visible **only for that session**.
|
|
|
|
## Run
|
|
|
|
```bash
|
|
# Server
|
|
uv run python server.py
|
|
|
|
# Client (in another terminal)
|
|
uv run python client.py
|
|
```
|
|
|
|
## Example Output
|
|
|
|
```
|
|
Namespace Activation Demo
|
|
|
|
╭─────────────────── Initial Tools ───────────────────╮
|
|
│ activate_finance, activate_admin, deactivate_all │
|
|
╰─────────────────────────────────────────────────────╯
|
|
|
|
→ Calling activate_finance()
|
|
Finance tools activated
|
|
╭─────────────── After Activating Finance ────────────╮
|
|
│ analyze_portfolio, get_market_data, execute_trade, │
|
|
│ activate_finance, activate_admin, deactivate_all │
|
|
╰─────────────────────────────────────────────────────╯
|
|
|
|
→ Calling get_market_data(symbol='AAPL')
|
|
{'symbol': 'AAPL', 'price': 150.25, 'change': '+2.5%'}
|
|
|
|
→ Calling activate_admin()
|
|
Admin tools activated
|
|
╭────────────── After Activating Admin ───────────────╮
|
|
│ analyze_portfolio, get_market_data, execute_trade, │
|
|
│ list_users, reset_user_password, activate_finance, │
|
|
│ activate_admin, deactivate_all │
|
|
╰─────────────────────────────────────────────────────╯
|
|
|
|
→ Calling deactivate_all()
|
|
All namespaces deactivated
|
|
╭────────────── After Deactivating All ───────────────╮
|
|
│ activate_finance, activate_admin, deactivate_all │
|
|
╰─────────────────────────────────────────────────────╯
|
|
```
|