Skip to content

Commit ceb176f

Browse files
committed
fix(server): propagate negotiated protocol version to transport
1 parent 108f2f3 commit ceb176f

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@modelcontextprotocol/server': patch
3+
---
4+
5+
fix(server): propagate negotiated protocol version to transport in _oninitialize

packages/server/src/server/server.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff 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(),
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { Client } from '@modelcontextprotocol/client';
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+
const client = new Client({ name: 'test-client', version: '1.0.0' });
10+
11+
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
12+
13+
const setProtocolVersion = vi.fn();
14+
(serverTransport as { setProtocolVersion?: (version: string) => void }).setProtocolVersion = setProtocolVersion;
15+
16+
await server.connect(serverTransport);
17+
await client.connect(clientTransport);
18+
19+
expect(setProtocolVersion).toHaveBeenCalledWith(LATEST_PROTOCOL_VERSION);
20+
21+
await client.close();
22+
await server.close();
23+
});
24+
});
25+
});

0 commit comments

Comments
 (0)