New in versionDocumentation Index
Fetch the complete documentation index at: https://fastmcp-transfer-to-prefecthq.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
3.0.0
Tool transformation lets you modify tool schemas - renaming tools, changing descriptions, adjusting tags, and reshaping argument schemas. FastMCP provides two mechanisms that share the same configuration options but differ in timing.
Deferred transformation with ToolTransform applies modifications when tools flow through a transform chain. Use this for tools from mounted servers, proxies, or other providers where you don’t control the source directly.
Immediate transformation with Tool.from_tool() creates a modified tool object right away. Use this when you have direct access to a tool and want to transform it before registration.
ToolTransform
TheToolTransform class is a transform that modifies tools as they flow through a provider. Provide a dictionary mapping original tool names to their transformation configuration.
ToolTransform is useful when you want to modify tools from mounted or proxied servers without changing the original source.
Tool.from_tool()
UseTool.from_tool() when you have the tool object and want to create a transformed version for registration.
@tool decorator (from fastmcp.tools) creates a Tool object without registering it to any server. This separates creation from registration, letting you transform tools before deciding where they go.
Modification Options
Both mechanisms support the same modifications. Tool-level options:| Option | Description |
|---|---|
name | New name for the tool |
description | New description |
title | Human-readable title |
tags | Set of tags for categorization |
annotations | MCP ToolAnnotations |
meta | Custom metadata dictionary |
enabled | Whether the tool is visible to clients (default True) |
ArgTransform or ArgTransformConfig):
| Option | Description |
|---|---|
name | Rename the argument |
description | New description for the argument |
default | New default value |
default_factory | Callable that generates a default (requires hide=True) |
hide | Remove from client-visible schema |
required | Make an optional argument required |
type | Change the argument’s type |
examples | Example values for the argument |
Hiding Arguments
Hide arguments to simplify the interface or inject values the client shouldn’t control.Renaming Arguments
Rename arguments to make them more intuitive for LLMs or match your API conventions.Custom Transform Functions
For advanced scenarios, provide atransform_fn that intercepts tool execution. The function can validate inputs, modify outputs, or add custom logic while still calling the original tool via forward().
forward() function handles argument mapping automatically. Call it with the transformed argument names, and it maps them back to the original function’s parameters.
For direct access to the original function without mapping, use forward_raw() with the original parameter names.
