-
Notifications
You must be signed in to change notification settings - Fork 2.4k
feat: upgrade to rmcp 0.12.0 and sacp 10.0.0 by removing SSE transport #6304
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
|
cc @alexhancock FYI |
|
I am reworking this and almost done.. to use toast notification on existing sse config so users can know and still be able to delete or change them without manual editing config files |
beae3e2 to
30d16ca
Compare
Remove SSE transport (dropped in rmcp 0.11.0). SSE extensions show warnings and can be deleted, but will not start. Use streamable HTTP or mcp-proxy for migration. Signed-off-by: Adrian Cole <[email protected]>
30d16ca to
1c4bc62
Compare
| let warnings = goose::config::get_warnings(); | ||
| Ok(Json(ExtensionResponse { | ||
| extensions, | ||
| warnings, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
so the key here to allow the UI to respond with a warning in a compatible way is to add an extra field to the response. This is used later in the screenshots of the PR
| /// Server-sent events client with a URI endpoint | ||
| /// SSE transport is no longer supported - kept only for config file compatibility | ||
| #[serde(rename = "sse")] | ||
| Sse { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this retains only the minimal fields to keep the UI working, so that errors can be displayed and it can actually delete sse extensions
| .collect() | ||
| } | ||
|
|
||
| pub fn get_warnings() -> Vec<String> { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I chose to not unit test this because it is more distracting in this case, and hopefully we can reap all sse code in a version or two including this
|
|
||
| [dev-dependencies] | ||
| sacp = "10.0.0-alpha.3" | ||
| sacp = { workspace = true } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sacp now can be a top level dep as we can use a later version of rmcp compatibly
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR upgrades to rmcp 0.12.0 and sacp 10.0.0 by removing the deprecated SSE transport, which was dropped from the MCP spec due to load balancer incompatibility. The upgrade brings custom requests/notifications support and improved graceful shutdown.
Key changes:
- SSE transport removed from all codebases (Rust, TypeScript, docs)
- SSE config kept for backward compatibility with warnings
- Migration path provided via mcp-proxy for legacy SSE extensions
- Updated to use new RMCP/SACP builder patterns
Reviewed changes
Copilot reviewed 67 out of 69 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| Cargo.toml | Upgraded rmcp to 0.12.0, sacp to 10.0.0 |
| crates/goose/Cargo.toml | Removed SSE transport features |
| crates/goose/src/agents/extension.rs | Deprecated SSE variant, kept for compatibility |
| crates/goose/src/agents/extension_manager.rs | SSE returns error instead of attempting connection |
| crates/goose/src/config/extensions.rs | Added warning generation for SSE extensions |
| crates/goose-server/src/routes/config_management.rs | Added warnings field to API response |
| crates/goose-cli/src/cli.rs | Removed --with-remote-extension flag |
| crates/goose-cli/src/session/builder.rs | Removed remote_extensions handling |
| crates/goose-cli/src/commands/configure.rs | Removed SSE option from configure dialog |
| crates/goose-cli/src/commands/acp.rs | Updated to use new SACP builder patterns |
| crates/goose/tests/acp_integration_test.rs | Updated tests to use new API constructors |
| ui/desktop/src/utils/providerUtils.ts | SSE fails immediately with error message |
| ui/desktop/src/components/settings/extensions/utils.ts | Removed SSE form handling |
| ui/desktop/src/components/settings/extensions/ExtensionsSection.tsx | Added warning banner for SSE extensions |
| ui/desktop/src/components/ConfigContext.tsx | Added extensionWarnings state |
| ui/desktop/openapi.json | Updated SSE schema to compatibility-only mode |
| documentation/static/servers.json | Updated JetBrains/Pieces to use stdio/HTTP |
| documentation/docs/**/*.md | Replaced SSE references with Streamable HTTP |
Files not reviewed (1)
- ui/desktop/package-lock.json: Language not supported
Signed-off-by: Adrian Cole <[email protected]>
baxen
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great! I tested locally and handling of old extensions worked on the CLI and UI. Tested normal usage as well just to be sure the new version of rmcp is not impacting anything - things working great
## Summary Update MCP extension documentation to remove SSE transport option and standardize on "Streamable HTTP" naming. ### Type of Change - [x] Documentation ### Testing Documentation only - no code changes. ### Related Issues Part of #6304 Signed-off-by: Adrian Cole <[email protected]>
#6319 Signed-off-by: Adrian Cole <[email protected]>
|
split off the docs update to #6319 to decouple the merge, but still keep the changes ready when folks are in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 49 out of 51 changed files in this pull request and generated no new comments.
Files not reviewed (1)
- ui/desktop/package-lock.json: Language not supported
## Summary Update MCP extension documentation to remove SSE transport option and standardize on "Streamable HTTP" naming. ### Type of Change - [x] Documentation ### Testing Documentation only - no code changes. ### Related Issues Part of #6304 Signed-off-by: Adrian Cole <[email protected]>
## Summary Update MCP extension documentation to remove SSE transport option and standardize on "Streamable HTTP" naming. ### Type of Change - [x] Documentation ### Testing Documentation only - no code changes. ### Related Issues Part of #6304 Signed-off-by: Adrian Cole <[email protected]>
Summary
Upgrade to rmcp 0.12.0 and sacp 10.0.0 by removing SSE transport (dropped in rmcp 0.11.0).
The rmcp upgrade has the following impact:
SSE Transport Removed - Breaking change, use streamable HTTP instead. SSE removed from MCP spec due to sticky session requirements and load balancer incompatibility.
Custom Requests - Send arbitrary request methods beyond MCP spec and await responses. Codex sends
codex/sandbox-state/updateto set sandbox policy before tool execution, awaiting ack to guarantee ordering.Custom Notifications - Bidirectional fire-and-forget messages for arbitrary methods. mcp-use sends
custom/heartbeatandcustom/broadcastto push server events to clients.Streamable HTTP Graceful Shutdown - Server now terminates cleanly when clients are connected. Previously desktop apps couldn't quit because open MCP connections blocked shutdown.
More features soon - Task support for long-running operations with progress tracking, and improved elicitation enums with single/multi select and titles.
SSE Migration
SSE extensions can be migrated to http streamable alternatives or worst case mcp-proxy
Migration (use mcp-proxy):
Type of Change
AI Assistance
Testing
./target/release/goose configure→ SSE visible, warning shown, can delete./target/release/goose run→ Warning printed, SSE fails to startjust run-ui→ Yellow alert, SSE visible, can deleteRelated Issues
Screenshots/Demos (for UX changes)
All these tests show there is a warning and people can actually delete sse extensions without manual config
These used a valid sse server that at least allows anonymous tools/list
CLI Session Run
CLI Configure Toggle Extensions
CLI Configure Remove Extension
UI warns but doesn't fail completely on SSE
UI Extensions Section
Navigate to Settings > Extensions
