@@ -198,6 +198,60 @@ describe.each(zodTestMatrix)('$zodVersionLabel', (entry: ZodMatrixEntry) => {
198198 message : 'Completed step 3 of 3'
199199 } ) ;
200200 } ) ;
201+
202+ /***
203+ * Test: Extensions capability registration
204+ */
205+ test ( 'should register and advertise server extensions capability' , async ( ) => {
206+ const mcpServer = new McpServer ( {
207+ name : 'test server' ,
208+ version : '1.0'
209+ } ) ;
210+ const client = new Client ( {
211+ name : 'test client' ,
212+ version : '1.0'
213+ } ) ;
214+
215+ mcpServer . server . registerCapabilities ( {
216+ extensions : {
217+ 'io.modelcontextprotocol/test-extension' : { listChanged : true }
218+ }
219+ } ) ;
220+
221+ const [ clientTransport , serverTransport ] = InMemoryTransport . createLinkedPair ( ) ;
222+ await Promise . all ( [ client . connect ( clientTransport ) , mcpServer . connect ( serverTransport ) ] ) ;
223+
224+ const capabilities = client . getServerCapabilities ( ) ;
225+ expect ( capabilities ?. extensions ) . toBeDefined ( ) ;
226+ expect ( capabilities ?. extensions ?. [ 'io.modelcontextprotocol/test-extension' ] ) . toEqual ( { listChanged : true } ) ;
227+ } ) ;
228+
229+ test ( 'should advertise client extensions capability to server' , async ( ) => {
230+ const mcpServer = new McpServer ( {
231+ name : 'test server' ,
232+ version : '1.0'
233+ } ) ;
234+ const client = new Client (
235+ {
236+ name : 'test client' ,
237+ version : '1.0'
238+ } ,
239+ {
240+ capabilities : {
241+ extensions : {
242+ 'io.modelcontextprotocol/test-extension' : { streaming : true }
243+ }
244+ }
245+ }
246+ ) ;
247+
248+ const [ clientTransport , serverTransport ] = InMemoryTransport . createLinkedPair ( ) ;
249+ await Promise . all ( [ client . connect ( clientTransport ) , mcpServer . connect ( serverTransport ) ] ) ;
250+
251+ const capabilities = mcpServer . server . getClientCapabilities ( ) ;
252+ expect ( capabilities ?. extensions ) . toBeDefined ( ) ;
253+ expect ( capabilities ?. extensions ?. [ 'io.modelcontextprotocol/test-extension' ] ) . toEqual ( { streaming : true } ) ;
254+ } ) ;
201255 } ) ;
202256
203257 describe ( 'ResourceTemplate' , ( ) => {
0 commit comments