From 6561d16ebc3fa07b159f5aef3eeb449cb837b667 Mon Sep 17 00:00:00 2001 From: or-givati Date: Mon, 24 Mar 2025 14:41:07 +0200 Subject: [PATCH] replace path matching from `getPathInfo` to `getRequestURI`. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `getRequestURI()` → full request path (without query). `getPathInfo()` → extra path after the servlet's mapping, or null if none. So if I am configuring my Servlet to be mapped on `/somePath` and initiating the Servlet: ``` new HttpServletSseServerTransport(new ObjectMapper(), "/somePath/message", "/somePath/sse") ``` it will work and won't fail. `getPathInfo` will return "/message" and "/sse". while `getRequestURI` will return "/somePath/message" and "/somePath/sse" and will not fail on the validation. --- .../transport/HttpServletSseServerTransportProvider.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mcp/src/main/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportProvider.java b/mcp/src/main/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportProvider.java index 152462b1d..64a1752d7 100644 --- a/mcp/src/main/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportProvider.java +++ b/mcp/src/main/java/io/modelcontextprotocol/server/transport/HttpServletSseServerTransportProvider.java @@ -170,8 +170,8 @@ public Mono notifyClients(String method, Map params) { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String pathInfo = request.getPathInfo(); - if (!sseEndpoint.equals(pathInfo)) { + String requestURI = request.getRequestURI(); + if (!sseEndpoint.equals(requestURI)) { response.sendError(HttpServletResponse.SC_NOT_FOUND); return; } @@ -225,8 +225,8 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) return; } - String pathInfo = request.getPathInfo(); - if (!messageEndpoint.equals(pathInfo)) { + String requestURI = request.getRequestURI(); + if (!messageEndpoint.equals(requestURI)) { response.sendError(HttpServletResponse.SC_NOT_FOUND); return; }