mcp: support stateless streamable sessions (#277)
Support stateless streamable sessions by adding a GetSessionID function to StreamableHTTPOptions. If GetSessionID returns "", the session is stateless, and no validation is performed. This is implemented by providing the session a trivial initialization state. To implement this, some parts of #232 (distributed sessions) are copied over, since they add an API for creating an already-initialized session. In total, the following new API is added: - StreamableHTTPOptions.GetSessionID - ServerSessionOptions (a new parameter to Server.Connect) - ServerSessionState - ClientSessionOptions (a new parameter to Client.Connect, for symmetry) For #10
This commit is contained in:
parent
119a58314d
commit
dae88535ba
1 changed files with 305 additions and 119 deletions
29
mcp/session.go
Normal file
29
mcp/session.go
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
// Copyright 2025 The Go MCP SDK Authors. All rights reserved.
|
||||
// Use of this source code is governed by an MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package mcp
|
||||
|
||||
// hasSessionID is the interface which, if implemented by connections, informs
|
||||
// the session about their session ID.
|
||||
//
|
||||
// TODO(rfindley): remove SessionID methods from connections, when it doesn't
|
||||
// make sense. Or remove it from the Sessions entirely: why does it even need
|
||||
// to be exposed?
|
||||
type hasSessionID interface {
|
||||
SessionID() string
|
||||
}
|
||||
|
||||
// ServerSessionState is the state of a session.
|
||||
type ServerSessionState struct {
|
||||
// InitializeParams are the parameters from 'initialize'.
|
||||
InitializeParams *InitializeParams `json:"initializeParams"`
|
||||
|
||||
// InitializedParams are the parameters from 'notifications/initialized'.
|
||||
InitializedParams *InitializedParams `json:"initializedParams"`
|
||||
|
||||
// LogLevel is the logging level for the session.
|
||||
LogLevel LoggingLevel `json:"logLevel"`
|
||||
|
||||
// TODO: resource subscriptions
|
||||
}
|
||||
Loading…
Reference in a new issue