[PR #129] [MERGED] feat: Add Support for MCP Streamable HTTP Transport, general QoL improvements #182

Closed
opened 2026-10-18 21:12:29 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/open-webui/mcpo/pull/129
Author: @taylorwilsdon
Created: 5/11/2025
Status: ✅ Merged
Merged: 5/11/2025
Merged by: @tjbck

Base: dev ← Head: add_streamable_http


📝 Commits (8)

  • e37d0eb Merge pull request #108 from open-webui/dev
  • cd6ea93 Add streamable http support
  • 2be873e clean up + trim trailing whitepsace
  • 70f4e64 update changelog + readme
  • d23bfbf fix duplicate key issue for ssl_keyfile
  • 5abf0d3 consolidate startup logging
  • 7534c34 Update pyproject.toml
  • 0cdb378 bump packages

📊 Changes

6 files changed (+403 additions, -270 deletions)

View changed files

📝 CHANGELOG.md (+6 -0)
📝 README.md (+31 -1)
📝 pyproject.toml (+2 -1)
📝 src/mcpo/__init__.py (+1 -1)
📝 src/mcpo/main.py (+84 -9)
📝 uv.lock (+279 -258)

📄 Description

Pull Request Checklist

Before submitting, make sure you've checked the following:

  • Target branch: Please verify that the pull request targets the dev branch.
  • Description: Provide a concise description of the changes made in this pull request.
  • Changelog: Ensure a changelog entry following the format of Keep a Changelog is added at the bottom of the PR description.
  • Dependencies: Are there any new dependencies? Have you updated the dependency versions in the documentation?
  • Testing: Have you written and run sufficient tests to validate the changes?
  • Code review: Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards?
  • Prefix: To clearly categorize this pull request, prefix the pull request title using one of the following:
    • feat: Introduces a new feature or enhancement to the codebase

Changelog Entry

Description

This PR adds native support for Streamable HTTP MCP transports in mcpo, complementing existing support for stdio and sse. It includes all necessary logic, CLI options, config support, and updated documentation for using Streamable HTTP as a transport mechanism. This change broadens the compatibility and robustness of mcpo for modern MCP server implementations, particularly those that require session management or resumability.

Added

  • 🌐 Streamable HTTP Transport Support:
    • New --server-type "streamablehttp" CLI flag and config entry support.
    • Integration with mcp.client.streamable_http.streamablehttp_client.
    • Lifespan management and FastAPI session wiring for streamable clients.
  • 🧪 Developer Guide Additions:
    • New section in README.md on how to run local development servers and test modifications interactively.
  • 📝 Logging:
    • Structured logging added to main.py with detailed startup information and server introspection.

Changed

  • Updated pyproject.toml to use mcp[cli]>=1.8.0 to ensure the streamable client is available.
  • Enhanced dynamic FastAPI sub-app registration logic to support new transport types.
  • Improved robustness around config parsing, including fallback handling and type validation.

Deprecated

  • None

Removed

  • None

Fixed

  • Ensures trailing slashes are normalized for Streamable HTTP URLs to avoid unnecessary redirects.
  • Minor consistency updates for option flags (e.g., --ssl-keyfile now properly aliased as -K).

Security

  • None

Breaking Changes

  • None. This PR is fully backwards compatible with stdio and sse.

Additional Information

  • Adds support for MCP servers that expose the Streamable HTTP transport layer, which is increasingly common in modern deployments requiring long-lived or resumable sessions.
  • Related: mcp>=1.8.0 must be installed with [cli] extras for Streamable support.

Screenshots or Videos

Screenshot 2025-05-11 at 2 50 25 PM Screenshot 2025-05-11 at 2 50 33 PM
  • N/A

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/open-webui/mcpo/pull/129 **Author:** [@taylorwilsdon](https://github.com/taylorwilsdon) **Created:** 5/11/2025 **Status:** ✅ Merged **Merged:** 5/11/2025 **Merged by:** [@tjbck](https://github.com/tjbck) **Base:** `dev` ← **Head:** `add_streamable_http` --- ### 📝 Commits (8) - [`e37d0eb`](https://github.com/open-webui/mcpo/commit/e37d0ebd27934378364f534bd8ee6ae82a370536) Merge pull request #108 from open-webui/dev - [`cd6ea93`](https://github.com/open-webui/mcpo/commit/cd6ea93224c2400fd8f6098b478d505965c7c921) Add streamable http support - [`2be873e`](https://github.com/open-webui/mcpo/commit/2be873eee1c5b3412d744579900c168c09ff3b2a) clean up + trim trailing whitepsace - [`70f4e64`](https://github.com/open-webui/mcpo/commit/70f4e64b28db9d95fb63dc2907114c0522ee4809) update changelog + readme - [`d23bfbf`](https://github.com/open-webui/mcpo/commit/d23bfbf4fbf2bb5df5025ee6215d43c5f0921fcf) fix duplicate key issue for ssl_keyfile - [`5abf0d3`](https://github.com/open-webui/mcpo/commit/5abf0d36347a54ca18fd708504145d2bd18acc03) consolidate startup logging - [`7534c34`](https://github.com/open-webui/mcpo/commit/7534c34dad3ae98b6e3ecb1cf2dff09a5fe65b35) Update pyproject.toml - [`0cdb378`](https://github.com/open-webui/mcpo/commit/0cdb378d9a207520743fb9d20ce97d1a900b4af3) bump packages ### 📊 Changes **6 files changed** (+403 additions, -270 deletions) <details> <summary>View changed files</summary> 📝 `CHANGELOG.md` (+6 -0) 📝 `README.md` (+31 -1) 📝 `pyproject.toml` (+2 -1) 📝 `src/mcpo/__init__.py` (+1 -1) 📝 `src/mcpo/main.py` (+84 -9) 📝 `uv.lock` (+279 -258) </details> ### 📄 Description # Pull Request Checklist **Before submitting, make sure you've checked the following:** - [x] **Target branch:** Please verify that the pull request targets the `dev` branch. - [x] **Description:** Provide a concise description of the changes made in this pull request. - [x] **Changelog:** Ensure a changelog entry following the format of [Keep a Changelog](https://keepachangelog.com/) is added at the bottom of the PR description. - [x] **Dependencies:** Are there any new dependencies? Have you updated the dependency versions in the documentation? - [x] **Testing:** Have you written and run sufficient tests to validate the changes? - [x] **Code review:** Have you performed a self-review of your code, addressing any coding standard issues and ensuring adherence to the project's coding standards? - [x] **Prefix:** To clearly categorize this pull request, prefix the pull request title using one of the following: - **feat**: Introduces a new feature or enhancement to the codebase # Changelog Entry ### Description This PR adds native support for Streamable HTTP MCP transports in `mcpo`, complementing existing support for `stdio` and `sse`. It includes all necessary logic, CLI options, config support, and updated documentation for using Streamable HTTP as a transport mechanism. This change broadens the compatibility and robustness of `mcpo` for modern MCP server implementations, particularly those that require session management or resumability. ### Added - 🌐 **Streamable HTTP Transport Support**: - New `--server-type "streamablehttp"` CLI flag and config entry support. - Integration with `mcp.client.streamable_http.streamablehttp_client`. - Lifespan management and FastAPI session wiring for streamable clients. - 🧪 Developer Guide Additions: - New section in `README.md` on how to run local development servers and test modifications interactively. - 📝 Logging: - Structured logging added to `main.py` with detailed startup information and server introspection. ### Changed - Updated `pyproject.toml` to use `mcp[cli]>=1.8.0` to ensure the streamable client is available. - Enhanced dynamic FastAPI sub-app registration logic to support new transport types. - Improved robustness around config parsing, including fallback handling and type validation. ### Deprecated - None ### Removed - None ### Fixed - Ensures trailing slashes are normalized for Streamable HTTP URLs to avoid unnecessary redirects. - Minor consistency updates for option flags (e.g., `--ssl-keyfile` now properly aliased as `-K`). ### Security - None ### Breaking Changes - **None.** This PR is fully backwards compatible with `stdio` and `sse`. --- ### Additional Information - Adds support for MCP servers that expose the Streamable HTTP transport layer, which is increasingly common in modern deployments requiring long-lived or resumable sessions. - Related: `mcp>=1.8.0` must be installed with `[cli]` extras for Streamable support. ### Screenshots or Videos <img width="716" alt="Screenshot 2025-05-11 at 2 50 25 PM" src="https://github.com/user-attachments/assets/468301e8-3fbc-4588-bdf2-3189fe711010" /> <img width="901" alt="Screenshot 2025-05-11 at 2 50 33 PM" src="https://github.com/user-attachments/assets/c317045b-85d2-4406-8796-9f5d54fa202c" /> - N/A --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-18 21:12:29 +00:00
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#182
No description provided.