fastmcp.server.providers.addressing
Deterministic tool hashing for backend-tool routing and per-tool resources.
Each FastMCPApp backend tool gets a deterministic hash computed from its
app name + tool name. The hash serves two purposes:
-
Backend-tool routing. Tools with
"app"in their visibility are callable via<hash>_<local_name>. The dispatcher parses the prefix, then walks providers recursively (same pattern as the oldget_app_tool) to find a tool whose stored hash matches. -
Per-tool Prefab renderer URIs. Each prefab tool gets a unique renderer
resource at
ui://prefab/tool/<hash>/renderer.html.list_resourcesandread_resourcesynthesize these on demand from the tool’s meta.
(app_name, tool_name) —
both known at that moment — and stored in meta["fastmcp"]["tool_hash"].
Deterministic across replicas (same code → same hash), no registry walk
needed.
The key is deliberately public. Keys prefixed with _ inside the
fastmcp meta namespace are stripped at every serialization boundary
(see FastMCPComponent.get_meta) because they hold process-local state
such as enabled/disabled marks. The hash is the opposite: a stable
identity that intermediaries need in order to recognize a tool they are
forwarding, so it must survive the wire.
Functions
hash_tool
hashed_backend_name
<hash>_<local_name>.
parse_hashed_backend_name
<HASH_LENGTH hex>_<rest> → (hash, local_tool_name) or None.

