from typing import Any from fastmcp.mcp_config import MCPConfig from fastmcp.server.server import FastMCP def composite_server_from_mcp_config( config: MCPConfig, name_as_prefix: bool = True ) -> FastMCP[None]: """A utility function to create a composite server from an MCPConfig.""" composite_server = FastMCP[None]() mount_mcp_config_into_server(config, composite_server, name_as_prefix) return composite_server def mount_mcp_config_into_server( config: MCPConfig, server: FastMCP[Any], name_as_prefix: bool = True, ) -> None: """A utility function to mount the servers from an MCPConfig into a FastMCP server.""" for name, mcp_server in config.mcpServers.items(): server.mount( prefix=name if name_as_prefix else None, server=FastMCP.as_proxy(backend=mcp_server.to_transport()), )