mcp: export ClientSessionOptions.ProtocolVersion (#1127)
## Summary
`ClientSessionOptions.protocolVersion` was unexported and documented as
test-only, so external consumers of `Client.Connect` could not request a
specific protocol revision.
This exports the field as `ProtocolVersion` with the same semantics:
- empty → request the latest supported version (unchanged default)
- non-empty → send that version in initialize/discover
- existing negotiate-down path is unchanged
## Usage
```go
cs, err := client.Connect(ctx, transport, &mcp.ClientSessionOptions{
ProtocolVersion: "2025-11-25",
})
```
## Testing
- `go test ./mcp/ -count=1` (pass)
Fixes #1113
Co-authored-by: arimu1 <19286898+arimu1@users.noreply.github.com>
Co-authored-by: Guglielmo Colombo <guglielmoc@google.com>
This commit is contained in:
parent
0d0cdbc943
commit
1acd66e9d7
1 changed files with 73 additions and 72 deletions
|
|
@ -245,11 +245,12 @@ func (e unsupportedProtocolVersionError) Error() string {
|
|||
return fmt.Sprintf("unsupported protocol version: %q", e.version)
|
||||
}
|
||||
|
||||
// ClientSessionOptions is reserved for future use.
|
||||
// ClientSessionOptions configures a client session created by [Client.Connect].
|
||||
type ClientSessionOptions struct {
|
||||
// protocolVersion overrides the protocol version sent in the initialize
|
||||
// request, for testing. If empty, latestProtocolVersion is used.
|
||||
protocolVersion string
|
||||
// ProtocolVersion is the protocol version sent in the initialize (or
|
||||
// discover) request. If empty, the latest supported version is used.
|
||||
// The server may negotiate a different mutually supported version.
|
||||
ProtocolVersion string
|
||||
}
|
||||
|
||||
func (c *Client) capabilities(protocolVersion string) *ClientCapabilities {
|
||||
|
|
@ -311,8 +312,8 @@ func (c *Client) Connect(ctx context.Context, t Transport, opts *ClientSessionOp
|
|||
}
|
||||
|
||||
protocolVersion := latestProtocolVersion
|
||||
if opts != nil && opts.protocolVersion != "" {
|
||||
protocolVersion = opts.protocolVersion
|
||||
if opts != nil && opts.ProtocolVersion != "" {
|
||||
protocolVersion = opts.ProtocolVersion
|
||||
}
|
||||
|
||||
if protocolVersion >= protocolVersion20260728 {
|
||||
|
|
|
|||
Loading…
Reference in a new issue