Jeremiah Lowin commited on
Commit
d9fc88d
·
unverified ·
1 Parent(s): 6316e48

Ensure fastmcp run supports v1 servers (#1332)

Browse files
Files changed (1) hide show
  1. src/fastmcp/cli/run.py +30 -0
src/fastmcp/cli/run.py CHANGED
@@ -5,9 +5,12 @@ import json
5
  import re
6
  import subprocess
7
  import sys
 
8
  from pathlib import Path
9
  from typing import Any, Literal
10
 
 
 
11
  from fastmcp.server.server import FastMCP
12
  from fastmcp.utilities.logging import get_logger
13
 
@@ -295,6 +298,12 @@ def run_command(
295
  logger.debug(f'Found server "{server.name}" in {file}')
296
 
297
  # Run the server
 
 
 
 
 
 
298
  kwargs = {}
299
  if transport:
300
  kwargs["transport"] = transport
@@ -315,3 +324,24 @@ def run_command(
315
  except Exception as e:
316
  logger.error(f"Failed to run server: {e}")
317
  sys.exit(1)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  import re
6
  import subprocess
7
  import sys
8
+ from functools import partial
9
  from pathlib import Path
10
  from typing import Any, Literal
11
 
12
+ from mcp.server.fastmcp import FastMCP as FastMCP1x
13
+
14
  from fastmcp.server.server import FastMCP
15
  from fastmcp.utilities.logging import get_logger
16
 
 
298
  logger.debug(f'Found server "{server.name}" in {file}')
299
 
300
  # Run the server
301
+
302
+ # handle v1 servers
303
+ if isinstance(server, FastMCP1x):
304
+ run_v1_server(server, host=host, port=port, transport=transport)
305
+ return
306
+
307
  kwargs = {}
308
  if transport:
309
  kwargs["transport"] = transport
 
324
  except Exception as e:
325
  logger.error(f"Failed to run server: {e}")
326
  sys.exit(1)
327
+
328
+
329
+ def run_v1_server(
330
+ server: FastMCP1x,
331
+ host: str | None = None,
332
+ port: int | None = None,
333
+ transport: TransportType | None = None,
334
+ ) -> None:
335
+ if host:
336
+ server.settings.host = host
337
+ if port:
338
+ server.settings.port = port
339
+ match transport:
340
+ case "stdio":
341
+ runner = partial(server.run)
342
+ case "http" | "streamable-http" | None:
343
+ runner = partial(server.run, transport="streamable-http")
344
+ case "sse":
345
+ runner = partial(server.run, transport="sse")
346
+
347
+ runner()