File tree Expand file tree Collapse file tree 3 files changed +49
-0
lines changed
Expand file tree Collapse file tree 3 files changed +49
-0
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ ' @modelcontextprotocol/server ' : patch
3+ ---
4+
5+ fix(server): propagate negotiated protocol version to transport in _ oninitialize
Original file line number Diff line number Diff line change @@ -433,6 +433,8 @@ export class Server extends Protocol<ServerContext> {
433433 ? requestedVersion
434434 : ( this . _supportedProtocolVersions [ 0 ] ?? LATEST_PROTOCOL_VERSION ) ;
435435
436+ this . transport ?. setProtocolVersion ?.( protocolVersion ) ;
437+
436438 return {
437439 protocolVersion,
438440 capabilities : this . getCapabilities ( ) ,
Original file line number Diff line number Diff line change 1+ import type { JSONRPCMessage } from '@modelcontextprotocol/core' ;
2+ import { InMemoryTransport , LATEST_PROTOCOL_VERSION } from '@modelcontextprotocol/core' ;
3+ import { Server } from '../../src/server/server.js' ;
4+
5+ describe ( 'Server' , ( ) => {
6+ describe ( '_oninitialize' , ( ) => {
7+ it ( 'should propagate negotiated protocol version to transport' , async ( ) => {
8+ const server = new Server ( { name : 'test' , version : '1.0.0' } , { capabilities : { } } ) ;
9+
10+ const [ clientTransport , serverTransport ] = InMemoryTransport . createLinkedPair ( ) ;
11+
12+ const setProtocolVersion = vi . fn ( ) ;
13+ ( serverTransport as { setProtocolVersion ?: ( version : string ) => void } ) . setProtocolVersion = setProtocolVersion ;
14+
15+ await server . connect ( serverTransport ) ;
16+
17+ // Collect response from the server
18+ const responsePromise = new Promise < JSONRPCMessage > ( resolve => {
19+ clientTransport . onmessage = msg => resolve ( msg ) ;
20+ } ) ;
21+ await clientTransport . start ( ) ;
22+
23+ // Send initialize request directly
24+ await clientTransport . send ( {
25+ jsonrpc : '2.0' ,
26+ id : 1 ,
27+ method : 'initialize' ,
28+ params : {
29+ protocolVersion : LATEST_PROTOCOL_VERSION ,
30+ capabilities : { } ,
31+ clientInfo : { name : 'test-client' , version : '1.0.0' }
32+ }
33+ } as JSONRPCMessage ) ;
34+
35+ await responsePromise ;
36+
37+ expect ( setProtocolVersion ) . toHaveBeenCalledWith ( LATEST_PROTOCOL_VERSION ) ;
38+
39+ await server . close ( ) ;
40+ } ) ;
41+ } ) ;
42+ } ) ;
You can’t perform that action at this time.
0 commit comments