[GH-ISSUE #3] Support SSE transport in addition to stdio #3

Closed
opened 2026-10-18 21:10:04 +00:00 by bsakaguchi · 15 comments
Owner

Originally created by @lowlyocean on GitHub (Mar 30, 2025).
Original GitHub issue: https://github.com/open-webui/mcpo/issues/3

There are MCP server containers that expose over SSE rather than stdio - can we successfully proxy those to Open-WebUI as well?

Originally created by @lowlyocean on GitHub (Mar 30, 2025). Original GitHub issue: https://github.com/open-webui/mcpo/issues/3 There are MCP server containers that expose over SSE rather than stdio - can we successfully proxy those to Open-WebUI as well?
Author
Owner

@tjbck commented on GitHub (Mar 30, 2025):

would love to see PRs for this!

<!-- gh-comment-id:2764810526 --> @tjbck commented on GitHub (Mar 30, 2025): would love to see PRs for this!
Author
Owner

@dtinth commented on GitHub (Apr 1, 2025):

I’m currently using Supergateway to make mcpo work with SSE MCP servers.

graph TD
    A[Open Web UI] -- OpenAPI Tool Server Protocol --> B[mcpo]
    B[mcpo] -- MCP over stdio --> C[Supergateway]
    C[Supergateway] -- MCP over HTTPS/SSE --> D[MCP server]

My setup:

# Dockerfile
FROM python:3.12-slim-bookworm
RUN apt-get update && apt-get install -y \
    curl \
    gnupg \
    && curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
    && apt-get install -y nodejs \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
RUN pip install mcpo
RUN npm install -g supergateway
CMD mcpo --config /config.json
# docker-compose.yml
services:
  mcpo:
    build: .
    volumes:
      - ./config.json:/config.json:ro
    ports:
      - 127.0.0.1:37705:8000
// config.json
{
  "mcpServers": {
    "puppeteer": {
      "command": "supergateway",
      "args": ["--sse", "https://mcp-server-728d3008-180f-4c91-9c28-74624ae7f1b5.supermachine.app"]
    }
  }
}
<!-- gh-comment-id:2769481407 --> @dtinth commented on GitHub (Apr 1, 2025): I’m currently using [Supergateway](https://github.com/supercorp-ai/supergateway) to make `mcpo` work with SSE MCP servers. ```mermaid graph TD A[Open Web UI] -- OpenAPI Tool Server Protocol --> B[mcpo] B[mcpo] -- MCP over stdio --> C[Supergateway] C[Supergateway] -- MCP over HTTPS/SSE --> D[MCP server] ``` My setup: ```dockerfile # Dockerfile FROM python:3.12-slim-bookworm RUN apt-get update && apt-get install -y \ curl \ gnupg \ && curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ && apt-get install -y nodejs \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* RUN pip install mcpo RUN npm install -g supergateway CMD mcpo --config /config.json ``` ```yaml # docker-compose.yml services: mcpo: build: . volumes: - ./config.json:/config.json:ro ports: - 127.0.0.1:37705:8000 ``` ```jsonc // config.json { "mcpServers": { "puppeteer": { "command": "supergateway", "args": ["--sse", "https://mcp-server-728d3008-180f-4c91-9c28-74624ae7f1b5.supermachine.app"] } } } ```
Author
Owner

@iamdaveloper commented on GitHub (Apr 3, 2025):

In this appoach, mcpo and supergateway are same purpose? Can we connect supergateway directly (skip mcpo)?

<!-- gh-comment-id:2774112550 --> @iamdaveloper commented on GitHub (Apr 3, 2025): In this appoach, mcpo and supergateway are same purpose? Can we connect supergateway directly (skip mcpo)?
Author
Owner

@dtinth commented on GitHub (Apr 3, 2025):

@iamdaveloper Not right now because

  • Open WebUI

    • Supports OpenAPI-based tool servers
    • Does not support MCP-based tool servers
  • mcpo

    • Provides OpenAPI-based tool server
    • Supports stdio-based MCP servers
    • Does not support SSE-based MCP servers
  • Supergateway

    • Supports and provides SSE-based MCP servers
    • Supports and provides stdio-based MCP servers
    • Neither supports nor provides OpenAPI-based tool servers

That is, until mcpo gains native SSE support. Right now it is hardcoded to use stdio transport from mcp.client.stdio:

github.com/open-webui/mcpo@e55975a876/src/mcpo/main.py (L128-L138)

This may be implemented by making mcpo able to use mcp.client.sse. Maybe someone can vibe up a PR to implement support for this?

<!-- gh-comment-id:2774871443 --> @dtinth commented on GitHub (Apr 3, 2025): @iamdaveloper Not right now because - Open WebUI - Supports OpenAPI-based tool servers - Does not support MCP-based tool servers - mcpo - Provides OpenAPI-based tool server - Supports stdio-based MCP servers - Does not support SSE-based MCP servers - Supergateway - Supports and provides SSE-based MCP servers - Supports and provides stdio-based MCP servers - Neither supports nor provides OpenAPI-based tool servers That is, until `mcpo` gains native SSE support. Right now it is hardcoded to use stdio transport from `mcp.client.stdio`: https://github.com/open-webui/mcpo/blob/e55975a876daff96eb7f792d3a5bcf4677386606/src/mcpo/main.py#L128-L138 This may be implemented by making mcpo able to use [`mcp.client.sse`](https://github.com/modelcontextprotocol/python-sdk/blob/v1.6.0/src/mcp/client/sse.py). Maybe someone can vibe up a PR to implement support for this?
Author
Owner

@eric2788 commented on GitHub (Apr 3, 2025):

can we skip stdio and using supergateway with mcpo? 🤔 It seems we can also use npx -y to run supergateway

<!-- gh-comment-id:2776267994 --> @eric2788 commented on GitHub (Apr 3, 2025): can we skip stdio and using supergateway with mcpo? 🤔 It seems we can also use `npx -y` to run supergateway
Author
Owner

@tjbck commented on GitHub (Apr 9, 2025):

Related: https://github.com/orgs/modelcontextprotocol/discussions/16

<!-- gh-comment-id:2788093498 --> @tjbck commented on GitHub (Apr 9, 2025): Related: https://github.com/orgs/modelcontextprotocol/discussions/16
Author
Owner

@bmen25124 commented on GitHub (Apr 9, 2025):

@tjbck Antropic released new specifications a while ago.

https://x.com/alexalbert__/status/1904908450473324721

I mean, we can add SSE support, but honestly, I prefer streamable HTTP over SSE. Since it is much easier to develop.

<!-- gh-comment-id:2791078153 --> @bmen25124 commented on GitHub (Apr 9, 2025): @tjbck Antropic released [new specifications](https://github.com/modelcontextprotocol/modelcontextprotocol/tree/main/docs/specification) a while ago. https://x.com/alexalbert__/status/1904908450473324721 I mean, we can add SSE support, but honestly, I prefer streamable HTTP over SSE. Since it is much easier to develop.
Author
Owner

@lowlyocean commented on GitHub (Apr 10, 2025):

I mean, we can add SSE support, but honestly, I prefer streamable HTTP over SSE. Since it is much easier to develop.

Just keep in mind many MCP servers may not be updated to this new release. There's always excitement when a new tech arrives, but shortly after you wind up with (an abundance of) unmaintained implementations

skipping straight to streamable HTTP over SSE may render a large swath of servers inaccessible

<!-- gh-comment-id:2791272493 --> @lowlyocean commented on GitHub (Apr 10, 2025): > I mean, we can add SSE support, but honestly, I prefer streamable HTTP over SSE. Since it is much easier to develop. Just keep in mind many MCP servers may not be updated to this new release. There's always excitement when a new tech arrives, but shortly after you wind up with (an abundance of) unmaintained implementations skipping straight to streamable HTTP over SSE may render a large swath of servers inaccessible
Author
Owner

@bmen25124 commented on GitHub (Apr 10, 2025):

@lowlyocean SSE is not adapted by industry from my point of view. Even Claude Desktop doesn't have a support.

But you made your point, So, I'm not against it.

<!-- gh-comment-id:2791397334 --> @bmen25124 commented on GitHub (Apr 10, 2025): @lowlyocean SSE is not adapted by industry from my point of view. Even Claude Desktop doesn't have a support. But you made your point, So, I'm not against it.
Author
Owner

@nohaz-h commented on GitHub (Apr 12, 2025):

I have submitted a PR #69 that allows SSE connection without the use of supergateway in case others want to test it out.

<!-- gh-comment-id:2798761726 --> @nohaz-h commented on GitHub (Apr 12, 2025): I have submitted a PR #69 that allows SSE connection without the use of supergateway in case others want to test it out.
Author
Owner

@dtinth commented on GitHub (Apr 12, 2025):

Now that SSE transport is now deprecated in favor of Streamable HTTP transport introduced in latest draft, should the scope of this issue be changed to that one instead?

<!-- gh-comment-id:2798888226 --> @dtinth commented on GitHub (Apr 12, 2025): Now that [SSE transport is now deprecated](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#backwards-compatibility) in favor of [Streamable HTTP transport](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http) introduced in latest draft, should the scope of this issue be changed to that one instead?
Author
Owner

@tjbck commented on GitHub (Apr 12, 2025):

https://github.com/open-webui/mcpo/pull/69 merged, feel free to create a new issue post regarding the http transport protocol support.

<!-- gh-comment-id:2798994616 --> @tjbck commented on GitHub (Apr 12, 2025): https://github.com/open-webui/mcpo/pull/69 merged, feel free to create a new issue post regarding the http transport protocol support.
Author
Owner

@eric2788 commented on GitHub (Apr 13, 2025):

Now that SSE transport is now deprecated in favor of Streamable HTTP transport introduced in latest draft, should the scope of this issue be changed to that one instead?

Considering of backward support, sse should still be included

<!-- gh-comment-id:2799567504 --> @eric2788 commented on GitHub (Apr 13, 2025): > Now that [SSE transport is now deprecated](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#backwards-compatibility) in favor of [Streamable HTTP transport](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http) introduced in latest draft, should the scope of this issue be changed to that one instead? Considering of backward support, sse should still be included
Author
Owner

@taylorwilsdon commented on GitHub (May 11, 2025):

Here ya go @eric2788 / @dtinth - https://github.com/open-webui/mcpo/pull/129
Give it a try let me know what you think!

<!-- gh-comment-id:2870058460 --> @taylorwilsdon commented on GitHub (May 11, 2025): Here ya go @eric2788 / @dtinth - https://github.com/open-webui/mcpo/pull/129 Give it a try let me know what you think!
Author
Owner

@fundoop commented on GitHub (Jul 2, 2025):

Maybe you can try to use fastmcp to transfer the server type

<!-- gh-comment-id:3027142654 --> @fundoop commented on GitHub (Jul 2, 2025): Maybe you can try to use fastmcp to transfer the server type
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
open-webui/mcpo#3
No description provided.