Skip to content

Conversation

@domdomegg
Copy link
Member

SSE transport has been removed from the MCP specification in favor of streamable HTTP. This removes all SSE-specific transport code.

Changes

  • Remove transport-sse-client and transport-sse-server features
  • Remove SseClientTransport and SseServer types
  • Remove SSE-specific examples (counter_sse, counter_sse_directly)
  • Migrate auth examples from SSE to streamable HTTP
  • Update tests to remove SSE transport usage
  • Update documentation

Breaking changes

The following have been removed:

  • transport-sse-client feature
  • transport-sse-client-reqwest feature
  • transport-sse-server feature
  • SseClientTransport type
  • SseServer type
  • sse_client and sse_server modules

Users should migrate to streamable HTTP transport. See StreamableHttpClientTransport and StreamableHttpService for the replacement APIs.

Ref: #561 (comment)

@github-actions github-actions bot added T-documentation Documentation improvements T-dependencies Dependencies related changes T-test Testing related changes T-config Configuration file changes T-core Core library changes T-examples Example code changes T-transport Transport layer changes labels Nov 25, 2025
SSE transport has been removed from the MCP specification in favor of
streamable HTTP. This removes all SSE-specific transport code:

- Remove `transport-sse-client` and `transport-sse-server` features
- Remove `SseClientTransport` and `SseServer` types
- Remove SSE-specific examples (`counter_sse`, `counter_sse_directly`)
- Migrate auth examples from SSE to streamable HTTP
- Update tests to remove SSE transport usage
- Update documentation

BREAKING CHANGE: The following have been removed:
- `transport-sse-client` feature
- `transport-sse-client-reqwest` feature
- `transport-sse-server` feature
- `SseClientTransport` type
- `SseServer` type
- `sse_client` and `sse_server` modules

Users should migrate to streamable HTTP transport which provides
equivalent functionality. See `StreamableHttpClientTransport` and
`StreamableHttpService` for the replacement APIs.

Ref: #561 (comment)
@domdomegg domdomegg force-pushed the adamj/remove-sse-transport branch from dc6cada to ba3d8ef Compare November 25, 2025 20:07
@jokemanfire
Copy link
Collaborator

I think removing SSE now is too early for SDK.

@seuros
Copy link

seuros commented Nov 27, 2025

SSE is super unstable ... There is no reason to promote it .

It not a bug, it just the wrong architecture.

SSE needs sticky sessions and it very hostile load balancers. HTTP streamable is preferred way to connect remotely.

@jokemanfire
Copy link
Collaborator

SSE is super unstable ... There is no reason to promote it .

It not a bug, it just the wrong architecture.

SSE needs sticky sessions and it very hostile load balancers. HTTP streamable is preferred way to connect remotely.

This is not promoting it, but rather it existed in spec 2024-11-05 before, and we cannot start deleting it directly. Marking it as obsolete and deleting it in a later version would be more suitable for code evolution. As an SDK, we are not following the upper application layer, but rather adopting a gradual strategy based on specifications, especially for features that need to be abandoned.

@seuros
Copy link

seuros commented Nov 28, 2025

This is an SDK not a consumer API.

You can drop and refactor as much you need to make the SDK cleaner and more secure. It won't force auto update on people repos.

This is a Rust context, that means if someone upgrade blindly, the compiler will not warn, it will refuse to obey. There is no (I shipped it, production blew because protocol was removed... javascript/ruby/python style)

They have 2 options:

  • Use new spec (will take them 2 minutes)
  • Pin old version of the SDK forever.

Your thinking is not wrong, but this SDK case is an exception. The SSE spec was rushed and was afterthought, it never worked more than few minutes.

The STDIO in 2024 is still used in few abandoned repos, but SSE had no production implementation , zero serious user base.

IDEs implemented remote MCP after HTTP streamable got released, and Claude code and other are supporting spec of June 2025+.

I will stand corrected if you show me 1 single serious app that still depends on 2024 SSE.


The work is already done by @domdomegg. We just have to merge it.

@alexhancock
Copy link
Collaborator

I reviewed and approved before seeing this conversation @jokemanfire @seuros

@jokemanfire I am interested to hear if you have concerns about simply removing it now

@domdomegg You may also be able to provide context on what you've seen other SDKs do, etc

@jokemanfire
Copy link
Collaborator

I still prefer to mark n+1 as dropped and n+2 as deleted for the evolution of Rust code.But @seuros as mentioned, there's zero serious user base, feel free to do this.

@alexhancock
Copy link
Collaborator

Yeah, I agree. Merging. Thanks @domdomegg

@alexhancock alexhancock merged commit eb5a7f7 into main Dec 2, 2025
11 checks passed
@github-actions github-actions bot mentioned this pull request Dec 2, 2025
nazq added a commit to nazq/test_mcp_servers that referenced this pull request Dec 8, 2025
BREAKING CHANGE: Remove SSE transport (/sse, /message endpoints)

Changes:
- Remove SSE transport - deprecated in MCP spec, removed in rmcp 0.11
- Add error module with thiserror for standardized error handling
- Add clippy.toml for fine-grained lint configuration
- Add Config builder pattern for fluent API
- Enhance test helpers with start_with_auth() and test client utilities
- Update documentation to reflect Streamable HTTP only

refs:
- modelcontextprotocol/rust-sdk#561
- modelcontextprotocol/rust-sdk#562
@github-actions github-actions bot mentioned this pull request Dec 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

T-config Configuration file changes T-core Core library changes T-dependencies Dependencies related changes T-documentation Documentation improvements T-examples Example code changes T-test Testing related changes T-transport Transport layer changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants