Closed
Description
Hi, I wanted to used the SSE endpoint but it fails. Here are relevant outputs. Any idea what's happening?
Command output
❯ npx @wong2/mcp-cli --sse http://ailab.lan:8008/mcp-server/sse
file:///Users/daniel/.npm/_npx/234164726e649089/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:292
const timeoutHandler = () => cancel(new McpError(ErrorCode.RequestTimeout, "Request timed out", { timeout }));
^
McpError: MCP error -32001: Request timed out
at Timeout.timeoutHandler (file:///Users/daniel/.npm/_npx/234164726e649089/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:292:49)
at listOnTimeout (node:internal/timers:608:17)
at process.processTimers (node:internal/timers:543:7) {
code: -32001,
data: { timeout: 60000 }
}
Node.js v23.11.0
Logs
INFO: 192.168.50.90:54203 - "GET /mcp-server/sse HTTP/1.1" 307 Temporary Redirect
2025-05-26T08:30:11.135822+0000 INFO new incoming SSE connection established
INFO: 192.168.50.90:54204 - "GET /mcp-server/sse/ HTTP/1.1" 200 OK
2025-05-26T08:30:11.149570+0000 INFO incoming SSE message received
INFO: 192.168.50.90:54203 - "POST /mcp-server/sse/messages?session_id=18cd336974084dde979b44c1d5262c1e HTTP/1.1" 200 OK
ERROR: Exception in ASGI application
+ Exception Group Traceback (most recent call last):
| File "/.venv/lib/python3.12/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
| result = await app( # type: ignore[func-returns-value]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/.venv/lib/python3.12/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
| return await self.app(scope, receive, send)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/.venv/lib/python3.12/site-packages/fastapi/applications.py", line 1054, in __call__
| await super().__call__(scope, receive, send)
| File "/.venv/lib/python3.12/site-packages/starlette/applications.py", line 112, in __call__
| await self.middleware_stack(scope, receive, send)
| File "/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 187, in __call__
| raise exc
| File "/.venv/lib/python3.12/site-packages/starlette/middleware/errors.py", line 165, in __call__
| await self.app(scope, receive, _send)
| File "/.venv/lib/python3.12/site-packages/starlette/middleware/cors.py", line 85, in __call__
| await self.app(scope, receive, send)
| File "/.venv/lib/python3.12/site-packages/opentelemetry/instrumentation/asgi/__init__.py", line 743, in __call__
| await self.app(scope, otel_receive, otel_send)
| File "/.venv/lib/python3.12/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
| await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
| File "/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/.venv/lib/python3.12/site-packages/starlette/routing.py", line 714, in __call__
| await self.middleware_stack(scope, receive, send)
| File "/.venv/lib/python3.12/site-packages/starlette/routing.py", line 734, in app
| await route.handle(scope, receive, send)
| File "/.venv/lib/python3.12/site-packages/starlette/routing.py", line 288, in handle
| await self.app(scope, receive, send)
| File "/.venv/lib/python3.12/site-packages/starlette/routing.py", line 76, in app
| await wrap_app_handling_exceptions(app, request)(scope, receive, send)
| File "/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
| raise exc
| File "/.venv/lib/python3.12/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
| await app(scope, receive, sender)
| File "/.venv/lib/python3.12/site-packages/starlette/routing.py", line 73, in app
| response = await f(request)
| ^^^^^^^^^^^^^^^^
| File "/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 301, in app
| raw_response = await run_endpoint_function(
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
| return await dependant.call(**values)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/mcp_bridge/mcp_server/sse.py", line 19, in handle_sse
| async with sse.connect_sse(request) as streams:
| ^^^^^^^^^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.12/contextlib.py", line 231, in __aexit__
| await self.gen.athrow(value)
| File "/mcp_bridge/mcp_server/sse_transport.py", line 100, in connect_sse
| async with anyio.create_task_group() as tg:
| ^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Exception Group Traceback (most recent call last):
| File "/mcp_bridge/mcp_server/sse_transport.py", line 108, in connect_sse
| yield (read_stream, write_stream)
| File "/mcp_bridge/mcp_server/sse.py", line 21, in handle_sse
| await server.run(streams[0], streams[1], options)
| File "/.venv/lib/python3.12/site-packages/mcp/server/lowlevel/server.py", line 495, in run
| async with AsyncExitStack() as stack:
| ^^^^^^^^^^^^^^^^
| File "/usr/local/lib/python3.12/contextlib.py", line 754, in __aexit__
| raise exc_details[1]
| File "/usr/local/lib/python3.12/contextlib.py", line 737, in __aexit__
| cb_suppress = await cb(*exc_details)
| ^^^^^^^^^^^^^^^^^^^^^^
| File "/.venv/lib/python3.12/site-packages/mcp/shared/session.py", line 220, in __aexit__
| return await self._task_group.__aexit__(exc_type, exc_val, exc_tb)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| File "/.venv/lib/python3.12/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__
| raise BaseExceptionGroup(
| ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
| File "/.venv/lib/python3.12/site-packages/mcp/server/session.py", line 147, in _receive_loop
| await super()._receive_loop()
| File "/.venv/lib/python3.12/site-packages/mcp/shared/session.py", line 353, in _receive_loop
| elif isinstance(message.message.root, JSONRPCRequest):
| ^^^^^^^^^^^^^^^
| File "/.venv/lib/python3.12/site-packages/pydantic/main.py", line 991, in __getattr__
| raise AttributeError(f'{type(self).__name__!r} object has no attribute {item!r}')
| AttributeError: 'JSONRPCMessage' object has no attribute 'message'
+------------------------------------
INFO: 192.168.50.90:54203 - "GET /mcp-server/sse HTTP/1.1" 307 Temporary Redirect
[I 2025-05-26 08:30:14,182.182 mcp.server.lowlevel.server] Processing request of type PingRequest
2025-05-26T08:30:14.346789+0000 INFO new incoming SSE connection established
INFO: 192.168.50.90:54208 - "GET /mcp-server/sse/ HTTP/1.1" 200 OK
Config:
{
"inference_server": {
"base_url": "http://{{ mcp_bridge_target_host }}:{{ mcp_bridge_target_port }}/v1",
"api_key": "litellm"
},
"mcp_servers": {
"fetch": {
"command": "uvx",
"args": [
"mcp-server-fetch"
]
},
"Home Assistant": {
"command": "uvx",
"args": [
"mcp-proxy"
],
"env": {
"SSE_URL": "http://192.168.50.5:8123/mcp_server/sse",
"API_ACCESS_TOKEN": "{{ ha_access_token }}"
}
},
"tavily-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"TAVILY_API_KEY": "{{ tavily_api_key }}"
}
},
"todoist-mcp": {
"command": "npx",
"args": [
"-y",
"kirel/todoist-mcp.git#npx"
],
"env": {
"TODOIST_API_KEY": "{{ todoist_api_token }}"
}
}
},
"network": {
"host": "0.0.0.0"
},
"logging": {
"log_level": "INFO"
}
}
Metadata
Metadata
Assignees
Labels
No labels