Skip to content
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
fbc0a3b
Consolidate tool transformation logic into TransformingProvider
jlowin Jan 10, 2026
e31e3fd
Fix: reject tool lookups by pre-transform name
jlowin Jan 10, 2026
4739415
Add collision validation for tool_transforms and fix docstring examples
jlowin Jan 10, 2026
317d1b5
Merge branch 'main' into consolidate-tool-transforms
jlowin Jan 10, 2026
9a46ef4
Add server-level tool transform APIs and fix task registration
jlowin Jan 11, 2026
c353e94
Add graceful degradation for provider errors in AggregateProvider
jlowin Jan 11, 2026
4fbd5ed
Match original behavior: parallel queries with DEBUG logging
jlowin Jan 11, 2026
ea1a67a
Refactor transforms to middleware-style call_next pattern
jlowin Jan 12, 2026
185b4f8
Add comprehensive transforms and visibility documentation
jlowin Jan 12, 2026
81adcdc
Restructure transforms docs and delete tool-transformation pattern
jlowin Jan 12, 2026
0e9e0ff
Cleanup: simplify get_tasks and remove unused Provider.get_component
jlowin Jan 12, 2026
cefd7e5
Merge branch 'main' into consolidate-tool-transforms
jlowin Jan 12, 2026
6e3d975
Update loq
jlowin Jan 12, 2026
0fddc85
Update loq limits and add loq note to AGENTS.md
jlowin Jan 12, 2026
e52eb82
Deprecate add_tool_transformation and tool_transformations param
jlowin Jan 13, 2026
3721dde
Merge branch 'main' into consolidate-tool-transforms
jlowin Jan 13, 2026
fe630a2
Address PR review feedback: remove redundant imports, fix path reference
jlowin Jan 13, 2026
7489684
Merge branch 'main' into consolidate-tool-transforms
jlowin Jan 13, 2026
19cbff3
Add missing imports to code examples in v3-features.mdx
jlowin Jan 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/development/upgrade-guide.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ FastMCP v3 introduces a unified provider architecture for sourcing components. A
- **LocalProvider** stores decorator-registered components (`@mcp.tool`, etc.)
- **FastMCPProvider** wraps another FastMCP server for composition
- **ProxyProvider** connects to remote MCP servers
- **TransformingProvider** adds namespacing and renaming
- **Transforms** modify components (namespacing, renaming) via `add_transform()`

See [Providers](/servers/providers/overview) for the complete documentation.

Expand Down
33 changes: 19 additions & 14 deletions docs/development/v3-notes/v3-features.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class Provider:
Providers support:
- **Lifecycle management**: `async def lifespan()` for setup/teardown
- **Visibility control**: `enable()` / `disable()` with keys, tags, and allowlist mode
- **Transformation chaining**: `provider.with_transforms(namespace=..., tool_renames=...)`
- **Transform stacking**: `provider.add_transform(Namespace(...))`, `provider.add_transform(ToolTransform(...))`

### LocalProvider

Expand Down Expand Up @@ -91,27 +91,32 @@ def greet(name: str) -> str:
return f"Hello, {name}!"

# Mount with namespace
main.add_provider(FastMCPProvider(sub).with_namespace("sub"))
provider = FastMCPProvider(sub)
provider.add_transform(Namespace("sub"))
main.add_provider(provider)
# Tool accessible as "sub_greet"
```
Comment thread
coderabbitai[bot] marked this conversation as resolved.

### TransformingProvider
### Transforms

`TransformingProvider` (`src/fastmcp/server/providers/transforming.py`) wraps any provider to apply namespace prefixes and tool renames. Usually accessed via `provider.with_transforms()`.
Transforms modify components (tools, resources, prompts) as they flow through the system. Available transforms:

- `Namespace` - adds prefixes to names and path segments to URIs
- `ToolTransform` - modifies tool schemas (rename, description, tags)
- `Visibility` - filters components (internal, backs enable/disable API)

```python
provider = SomeProvider().with_transforms(
namespace="api",
tool_renames={"verbose_tool_name": "short"}
)
from fastmcp.server.transforms import Namespace, ToolTransform
from fastmcp.tools.tool_transform import ToolTransformConfig

provider = SomeProvider()
provider.add_transform(Namespace("api"))
provider.add_transform(ToolTransform({
"api_verbose_tool_name": ToolTransformConfig(name="short")
}))

# Stacking composes transformations
provider = (
SomeProvider()
.with_transforms(namespace="api")
.with_transforms(tool_renames={"api_foo": "bar"})
)
# "foo" → "api_foo" → "bar"
# "foo" → "api_foo" (namespace) → could rename further with ToolTransform
```

---
Expand Down
32 changes: 14 additions & 18 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,7 @@
"primary": "#2d00f7"
},
"contextual": {
"options": [
"copy",
"view"
]
"options": ["copy", "view"]
},
"description": "The fast, Pythonic way to build MCP servers and clients.",
"errors": {
Expand Down Expand Up @@ -108,10 +105,10 @@
"icon": "layer-group",
"pages": [
"servers/providers/overview",
"servers/providers/transforms",
"servers/providers/local",
"servers/providers/filesystem",
"servers/providers/mounting",
"servers/providers/namespacing",
"servers/providers/proxy",
"servers/providers/custom"
]
Expand All @@ -120,6 +117,7 @@
"group": "Features",
"icon": "stars",
"pages": [
"servers/visibility",
"servers/tasks",
"servers/context",
"servers/elicitation",
Expand Down Expand Up @@ -162,10 +160,7 @@
{
"group": "Essentials",
"icon": "cube",
"pages": [
"clients/client",
"clients/transports"
]
"pages": ["clients/client", "clients/transports"]
},
{
"group": "Core Operations",
Expand All @@ -192,10 +187,7 @@
{
"group": "Authentication",
"icon": "user-shield",
"pages": [
"clients/auth/oauth",
"clients/auth/bearer"
]
"pages": ["clients/auth/oauth", "clients/auth/bearer"]
}
]
},
Expand All @@ -205,10 +197,7 @@
{
"group": "Providers",
"icon": "globe",
"pages": [
"integrations/fastapi",
"integrations/openapi"
]
"pages": ["integrations/fastapi", "integrations/openapi"]
},
{
"group": "Authentication",
Expand Down Expand Up @@ -262,7 +251,6 @@
{
"group": "Patterns",
"pages": [
"patterns/tool-transformation",
"patterns/decorating-methods",
"patterns/cli",
"patterns/contrib",
Expand Down Expand Up @@ -571,6 +559,14 @@
{
"destination": "/servers/providers/mounting",
"source": "/servers/composition"
},
{
"destination": "/servers/providers/transforms",
"source": "/servers/providers/namespacing"
},
{
"destination": "/servers/providers/transforms",
"source": "/patterns/tool-transformation"
}
],
"search": {
Expand Down
Loading
Loading