diff --git a/docs/servers/composition.mdx b/docs/servers/composition.mdx index 7ca68eb6e..370f072de 100644 --- a/docs/servers/composition.mdx +++ b/docs/servers/composition.mdx @@ -153,10 +153,6 @@ 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. - -**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. - - ```python import asyncio from fastmcp import FastMCP, Client @@ -209,6 +205,9 @@ The same prefixing rules apply as with `import_server` for naming tools, resourc The `prefix` parameter is optional. If omitted, components are mounted without modification. +#### Performance Considerations + +Due to the "live link", operations like `list_tools()` on the parent server will be impacted by the speed of the slowest mounted server. In particular, HTTP-based mounted servers can introduce significant latency (300-400ms vs 1-2ms for local tools), and this slowdown affects the whole server, not just interactions with the HTTP-proxied tools. If performance is important, importing tools via [`import_server()`](#importing-static-composition) may be a more appropriate solution as it copies components once at startup rather than delegating requests at runtime. #### Mounting Without Prefixes diff --git a/docs/servers/proxy.mdx b/docs/servers/proxy.mdx index cd03f1751..1ca535968 100644 --- a/docs/servers/proxy.mdx +++ b/docs/servers/proxy.mdx @@ -40,9 +40,9 @@ sequenceDiagram ### 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. +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 interactions with 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. +If low latency is a requirement for your use-case, consider using [`import_server()`](/servers/composition#importing-static-composition) to copy tools at startup rather than proxying them at runtime. ## Quick Start