Jeremiah Lowin commited on
Commit
c164e1f
·
1 Parent(s): b6e06cb

Fix bug that sets message path and sse path to same value

Browse files
src/fastmcp/server/server.py CHANGED
@@ -869,7 +869,7 @@ class FastMCP(Generic[LifespanResultT]):
869
  elif transport == "sse":
870
  return create_sse_app(
871
  server=self,
872
- message_path=path or self.settings.message_path,
873
  sse_path=path or self.settings.sse_path,
874
  auth_server_provider=self._auth_server_provider,
875
  auth_settings=self.settings.auth,
 
869
  elif transport == "sse":
870
  return create_sse_app(
871
  server=self,
872
+ message_path=self.settings.message_path,
873
  sse_path=path or self.settings.sse_path,
874
  auth_server_provider=self._auth_server_provider,
875
  auth_settings=self.settings.auth,
src/fastmcp/utilities/tests.py CHANGED
@@ -71,7 +71,7 @@ def _run_server(mcp_server: FastMCP, transport: Literal["sse"], port: int) -> No
71
 
72
  @contextmanager
73
  def run_server_in_process(
74
- server_fn: Callable[[str, int], None],
75
  ) -> Generator[str, None, None]:
76
  """
77
  Context manager that runs a Starlette app in a separate process and returns the
@@ -88,7 +88,9 @@ def run_server_in_process(
88
  s.bind((host, 0))
89
  port = s.getsockname()[1]
90
 
91
- proc = multiprocessing.Process(target=server_fn, args=(host, port), daemon=True)
 
 
92
  proc.start()
93
 
94
  # Wait for server to be running
 
71
 
72
  @contextmanager
73
  def run_server_in_process(
74
+ server_fn: Callable[[str, int], None], *args
75
  ) -> Generator[str, None, None]:
76
  """
77
  Context manager that runs a Starlette app in a separate process and returns the
 
88
  s.bind((host, 0))
89
  port = s.getsockname()[1]
90
 
91
+ proc = multiprocessing.Process(
92
+ target=server_fn, args=(host, port, *args), daemon=True
93
+ )
94
  proc.start()
95
 
96
  # Wait for server to be running
tests/client/test_sse.py CHANGED
@@ -56,9 +56,9 @@ def fastmcp_server():
56
  return server
57
 
58
 
59
- def run_server(host: str, port: int) -> None:
60
  try:
61
- app = fastmcp_server().http_app(transport="sse")
62
  server = uvicorn.Server(
63
  config=uvicorn.Config(app=app, host=host, port=port, log_level="error")
64
  )
@@ -109,6 +109,13 @@ def run_nested_server(host: str, port: int) -> None:
109
  sys.exit(0)
110
 
111
 
 
 
 
 
 
 
 
112
  async def test_nested_sse_server_resolves_correctly():
113
  # tests patch for
114
  # https://github.com/modelcontextprotocol/python-sdk/pull/659
 
56
  return server
57
 
58
 
59
+ def run_server(host: str, port: int, path: str | None = None) -> None:
60
  try:
61
+ app = fastmcp_server().http_app(transport="sse", path=path)
62
  server = uvicorn.Server(
63
  config=uvicorn.Config(app=app, host=host, port=port, log_level="error")
64
  )
 
109
  sys.exit(0)
110
 
111
 
112
+ async def test_run_server_on_path():
113
+ with run_server_in_process(run_server, "/help") as url:
114
+ async with Client(transport=SSETransport(f"{url}/help")) as client:
115
+ result = await client.ping()
116
+ assert result is True
117
+
118
+
119
  async def test_nested_sse_server_resolves_correctly():
120
  # tests patch for
121
  # https://github.com/modelcontextprotocol/python-sdk/pull/659