Spaces:
Running
Running
Merge pull request #405 from jlowin/sse-path
Browse filesFix bug that sets message path and sse path to same value
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=
|
| 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(
|
|
|
|
|
|
|
| 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
|