mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-09 15:19:10 +02:00
| .. | ||
| client.py | ||
| README.md | ||
| server.py | ||
Namespace Activation
Demonstrates session-specific visibility control using tags to organize tools into namespaces that can be activated on demand.
Pattern
- Tag tools with namespaces:
@server.tool(tags={"namespace:finance"}) - Globally disable namespaces:
server.disable(tags={"namespace:finance"}) - 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
# 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 │
╰─────────────────────────────────────────────────────╯