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 @@ -438,6 +438,8 @@ export class Server extends Protocol<ServerContext> {
438438 ? requestedVersion
439439 : ( this . _supportedProtocolVersions [ 0 ] ?? LATEST_PROTOCOL_VERSION ) ;
440440
441+ this . transport ?. setProtocolVersion ?.( protocolVersion ) ;
442+
441443 return {
442444 protocolVersion,
443445 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