Skip to content
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

feat: StreamableHTTPServerTransport implement #230

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

gylove1994
Copy link

Motivation and Context

To support streamable-http in mcp-2025-03-26

How Has This Been Tested?

The StreamableHTTPServerTransport has been extensively tested with the following scenarios:

  1. Session Management
  • Session ID generation and validation
  • Session ID inclusion in response headers
  • Rejection of invalid session IDs
  1. Request Handling
  • GET requests with and without proper Accept headers
  • POST requests for JSON-RPC messages
  • Handling of batch messages
  • DELETE requests for session closure
  • Validation of Content-Type headers
  1. Message Replay
  • Message replay functionality using Last-Event-ID
  • Proper message sequencing and delivery
  1. Message Targeting
  • Correct routing of response messages to requesting connections
  • Verification that responses aren't broadcast to all connections
  1. Error Handling
  • Invalid JSON data processing
  • Invalid JSON-RPC message handling
  • Proper error response formatting

All tests use mock HTTP requests and responses to simulate the StreamableHTTP specification.

Breaking Changes

None

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update

Checklist

  • I have read the MCP Documentation
  • My code follows the repository's style guidelines
  • New and existing tests pass locally
  • I have added appropriate error handling
  • I have added or updated documentation as needed

Additional context

Related issues: #220

@wjw99830
Copy link

Is it proper to maintain id in transport layer? It seems like a part of an application layer.

@gylove1994
Copy link
Author

Session Management is part of the specification. See https://spec.modelcontextprotocol.io/specification/2025-03-26/basic/transports/#session-management

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants