From b3ff76164479aee977ed29be10fd8411d9c73e5b Mon Sep 17 00:00:00 2001 From: Jeremiah Lowin <153965+jlowin@users.noreply.github.com> Date: Fri, 1 Aug 2025 13:43:00 -0700 Subject: [PATCH] Ensure fastmcp run supports v1 servers (#1332) --- src/fastmcp/cli/run.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/fastmcp/cli/run.py b/src/fastmcp/cli/run.py index a31b41e16..5df022529 100644 --- a/src/fastmcp/cli/run.py +++ b/src/fastmcp/cli/run.py @@ -5,9 +5,12 @@ import json import re import subprocess import sys +from functools import partial from pathlib import Path from typing import Any, Literal +from mcp.server.fastmcp import FastMCP as FastMCP1x + from fastmcp.server.server import FastMCP from fastmcp.utilities.logging import get_logger @@ -295,6 +298,12 @@ def run_command( logger.debug(f'Found server "{server.name}" in {file}') # Run the server + + # handle v1 servers + if isinstance(server, FastMCP1x): + run_v1_server(server, host=host, port=port, transport=transport) + return + kwargs = {} if transport: kwargs["transport"] = transport @@ -315,3 +324,24 @@ def run_command( except Exception as e: logger.error(f"Failed to run server: {e}") sys.exit(1) + + +def run_v1_server( + server: FastMCP1x, + host: str | None = None, + port: int | None = None, + transport: TransportType | None = None, +) -> None: + if host: + server.settings.host = host + if port: + server.settings.port = port + match transport: + case "stdio": + runner = partial(server.run) + case "http" | "streamable-http" | None: + runner = partial(server.run, transport="streamable-http") + case "sse": + runner = partial(server.run, transport="sse") + + runner()