Skip to content

SSE endpoint erros #80

Closed
Closed
@kirel

Description

@kirel

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions