Skip to content

Commit c00b87d

Browse files
author
Gorre Surya
committed
fix: set UTF-8 charset before reading request body in servlet transports
All three servlet-based server transports called request.getReader() without first setting the character encoding. Per the Jakarta Servlet spec, getReader() defaults to ISO-8859-1 when the Content-Type header has no explicit charset parameter. Since application/json without a charset is valid per RFC 8259, non-ASCII characters in tool names, argument values, and notification data were silently corrupted. The analogous server-side fix was applied to StdioServerTransportProvider in #826 and to the HTTP response path in #881. This commit completes the fix by applying request.setCharacterEncoding("UTF-8") before getReader() in HttpServletStreamableServerTransportProvider, HttpServletSseServerTransportProvider, and HttpServletStatelessServerTransport. Fixes #880
1 parent d182338 commit c00b87d

3 files changed

Lines changed: 3 additions & 0 deletions

File tree

mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
386386
}
387387

388388
try {
389+
request.setCharacterEncoding(UTF_8);
389390
BufferedReader reader = request.getReader();
390391
StringBuilder body = new StringBuilder();
391392
String line;

mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStatelessServerTransport.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
154154
}
155155

156156
try {
157+
request.setCharacterEncoding(UTF_8);
157158
BufferedReader reader = request.getReader();
158159
StringBuilder body = new StringBuilder();
159160
String line;

mcp-core/src/main/java/io/modelcontextprotocol/server/transport/HttpServletStreamableServerTransportProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
428428
McpTransportContext transportContext = this.contextExtractor.extract(request);
429429

430430
try {
431+
request.setCharacterEncoding(UTF_8);
431432
BufferedReader reader = request.getReader();
432433
StringBuilder body = new StringBuilder();
433434
String line;

0 commit comments

Comments
 (0)