docs: add performance warnings for mounted servers and proxies

- Add warning about performance impact in mounted servers section
- Explain that list_tools() operations are affected by slowest mounted server
- Note that HTTP-based servers can introduce 300-400ms latency vs 1-2ms for local
- Recommend import_server() for performance-critical applications
- Add performance considerations section to proxy documentation
- Reference composition documentation for alternatives

Co-authored-by: William Easton <strawgate@users.noreply.github.com>
This commit is contained in:
marvin-context-protocol[bot] 2025-08-29 18:25:53 +00:00
commit 66252018ed
2 changed files with 12 additions and 1 deletions

View file

@ -29,8 +29,9 @@ The choice of importing or mounting depends on your use case and requirements.
| **Method** | `FastMCP.import_server(server, prefix=None)` | `FastMCP.mount(server, prefix=None)` |
| **Composition Type** | One-time copy (static) | Live link (dynamic) |
| **Updates** | Changes to subserver NOT reflected | Changes to subserver immediately reflected |
| **Performance** | Fast - no runtime delegation | Slower - affected by slowest mounted server |
| **Prefix** | Optional - omit for original names | Optional - omit for original names |
| **Best For** | Bundling finalized components | Modular runtime composition |
| **Best For** | Bundling finalized components, performance-critical setups | Modular runtime composition |
### Proxy Servers
@ -152,6 +153,10 @@ When importing multiple servers with the same prefix, or no prefix, components f
The `mount()` method creates a **live link** between the `main_mcp` server and the `subserver`. Instead of copying components, requests for components matching the optional `prefix` are **delegated** to the `subserver` at runtime. If no prefix is provided, the subserver's components are accessible without prefixing. When multiple servers are mounted with the same prefix (or no prefix), the most recently mounted server takes precedence for conflicting component names.
<Warning>
**Performance Impact**: Operations like `list_tools()` will be impacted by the speed of the slowest mounted server. HTTP-based mounted servers can introduce significant latency (300-400ms vs 1-2ms for local tools), and this slowdown affects **all** tools, not just the remote ones. If performance is critical, consider using [`import_server()`](#importing-static-composition) instead, which copies components once at startup rather than delegating requests at runtime.
</Warning>
```python
import asyncio
from fastmcp import FastMCP, Client

View file

@ -38,6 +38,12 @@ sequenceDiagram
- **Security**: Acts as a controlled gateway to backend servers
- **Simplicity**: Single endpoint even if backend location or transport changes
### Performance Considerations
When using proxy servers, especially those connecting to HTTP-based backend servers, be aware that latency can be significant. Operations like `list_tools()` may take hundreds of milliseconds compared to 1-2ms for local tools. When mounting proxy servers, this latency affects all operations on the parent server, not just the proxied tools.
For performance-critical applications, consider using [`import_server()`](/servers/composition#importing-static-composition) to copy tools at startup rather than proxying them at runtime.
## Quick Start
<VersionBadge version="2.10.3" />