The http-custom-header-server-validation scenario never sends an empty string for the annotated parameter, so a server that treats an empty Mcp-Param-* header as missing still passes. The client half is already covered: http-custom-headers sends empty_val: '' and expects the header to arrive present and empty.
The Go SDK server had exactly this bug (modelcontextprotocol/go-sdk#1288). I tried adding one more accept case to the existing scenario, with body "" and an empty header. go-sdk's current main fails it (10/11), and the fix in go-sdk#1289 passes 11/11. Happy to open the PR if you want this.
The
http-custom-header-server-validationscenario never sends an empty string for the annotated parameter, so a server that treats an emptyMcp-Param-*header as missing still passes. The client half is already covered:http-custom-headerssendsempty_val: ''and expects the header to arrive present and empty.The Go SDK server had exactly this bug (modelcontextprotocol/go-sdk#1288). I tried adding one more accept case to the existing scenario, with body
""and an empty header. go-sdk's current main fails it (10/11), and the fix in go-sdk#1289 passes 11/11. Happy to open the PR if you want this.