@@ -62,6 +62,53 @@ describe('StreamableHTTPClientTransport', () => {
6262 ) ;
6363 } ) ;
6464
65+ it ( 'should include MCP standard headers on POST requests' , async ( ) => {
66+ const message : JSONRPCMessage = {
67+ jsonrpc : '2.0' ,
68+ method : 'tools/call' ,
69+ params : {
70+ name : 'read_file' ,
71+ arguments : { path : 'README.md' }
72+ } ,
73+ id : 'test-id'
74+ } ;
75+
76+ ( globalThis . fetch as Mock ) . mockResolvedValueOnce ( {
77+ ok : true ,
78+ status : 202 ,
79+ headers : new Headers ( )
80+ } ) ;
81+
82+ await transport . send ( message ) ;
83+
84+ const headers = ( globalThis . fetch as Mock ) . mock . calls . at ( - 1 ) ! [ 1 ] . headers as Headers ;
85+ expect ( headers . get ( 'mcp-method' ) ) . toBe ( 'tools/call' ) ;
86+ expect ( headers . get ( 'mcp-name' ) ) . toBe ( 'read_file' ) ;
87+ } ) ;
88+
89+ it ( 'should use params.uri for the MCP name header' , async ( ) => {
90+ const message : JSONRPCMessage = {
91+ jsonrpc : '2.0' ,
92+ method : 'resources/read' ,
93+ params : {
94+ uri : 'file:///README.md'
95+ } ,
96+ id : 'test-id'
97+ } ;
98+
99+ ( globalThis . fetch as Mock ) . mockResolvedValueOnce ( {
100+ ok : true ,
101+ status : 202 ,
102+ headers : new Headers ( )
103+ } ) ;
104+
105+ await transport . send ( message ) ;
106+
107+ const headers = ( globalThis . fetch as Mock ) . mock . calls . at ( - 1 ) ! [ 1 ] . headers as Headers ;
108+ expect ( headers . get ( 'mcp-method' ) ) . toBe ( 'resources/read' ) ;
109+ expect ( headers . get ( 'mcp-name' ) ) . toBe ( 'file:///README.md' ) ;
110+ } ) ;
111+
65112 it ( 'should send batch messages' , async ( ) => {
66113 const messages : JSONRPCMessage [ ] = [
67114 { jsonrpc : '2.0' , method : 'test1' , params : { } , id : 'id1' } ,
0 commit comments