Skip to main content

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:
  1. 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 old get_app_tool) to find a tool whose stored hash matches.
  2. Per-tool Prefab renderer URIs. Each prefab tool gets a unique renderer resource at ui://prefab/tool/<hash>/renderer.html. list_resources and read_resource synthesize these on demand from the tool’s meta.
The hash is computed at registration time from (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

Deterministic hex hash for a tool in an app. Same inputs on every replica produce the same output.

hashed_backend_name

Format the universal name for a backend tool: <hash>_<local_name>.

parse_hashed_backend_name

Parse <HASH_LENGTH hex>_<rest>(hash, local_tool_name) or None.

hashed_resource_uri

Per-tool Prefab renderer resource URI.

parse_hashed_resource_uri

Extract the hash from a Prefab renderer URI, or None.