2.2.0
As your application grows, you’ll want to split it into focused servers — one for weather, one for calendar, one for admin — and combine them into a single server that clients connect to. That’s what mount() does.
When you mount a server, all its tools, resources, and prompts become available through the parent. The connection is live: add a tool to the child after mounting, and it’s immediately visible through the parent.
Mounting External Servers
Mount remote HTTP servers or subprocess-based MCP servers usingcreate_proxy():
Mounting npm/uvx Packages
For npm packages or Python tools, use the config dict format:Namespacing
New in version3.0.0
When mounting multiple servers, use namespaces to avoid naming conflicts:
How Namespacing Works
Namespacing uses transforms under the hood.
Dynamic Composition
Becausemount() creates a live link, you can add components to a child server after mounting and they’ll be immediately available through the parent:
Protocol Extensions
New in version4.1.0
When you mount a local FastMCP server, its provider-bundled extensions follow the components to the parent. Extensions that opt into automatic registration give the parent the capabilities and request methods its clients need. Configure an extension explicitly on the parent to choose its settings for all mounted providers.
Compose providers that need new extensions before the parent starts. Once extension lifespans have begun, additional providers can use extensions already registered on the root. The startup rules also apply through nested mounts and aggregates.
Tag Filtering
New in version3.0.0
Parent server tag filters apply recursively to mounted servers:
Performance Considerations
Operations likelist_tools() on the parent are affected by the performance of all mounted servers. This is particularly noticeable with:
- HTTP-based mounted servers (300-400ms vs 1-2ms for local tools)
- Mounted servers with slow initialization
- Deep mounting hierarchies
Custom Routes
New in version2.4.0
Custom HTTP routes defined with @server.custom_route() are also forwarded when mounting:
Conflict Resolution
New in version3.0.0
When mounting multiple servers with the same namespace (or no namespace), FastMCP queries all mounted providers for a requested component and returns the highest matching version. If two unversioned components (or two equal versions) use the same identifier, the provider registered first wins.

