Class HttpServletStatelessServerTransport

java.lang.Object
jakarta.servlet.GenericServlet
jakarta.servlet.http.HttpServlet
io.modelcontextprotocol.server.transport.HttpServletStatelessServerTransport
All Implemented Interfaces:
McpStatelessServerTransport, jakarta.servlet.Servlet, jakarta.servlet.ServletConfig, Serializable

@WebServlet(asyncSupported=true) public class HttpServletStatelessServerTransport extends jakarta.servlet.http.HttpServlet implements McpStatelessServerTransport
Implementation of an HttpServlet based McpStatelessServerTransport.
Author:
Christian Tzolov, Dariusz Jędrzejczyk
See Also:
  • Field Details

  • Method Details

    • setMcpHandler

      public void setMcpHandler(McpStatelessServerHandler mcpHandler)
      Specified by:
      setMcpHandler in interface McpStatelessServerTransport
    • closeGracefully

      public reactor.core.publisher.Mono<Void> closeGracefully()
      Description copied from interface: McpStatelessServerTransport
      Gracefully closes all the transports with connected clients and releases any associated resources asynchronously.
      Specified by:
      closeGracefully in interface McpStatelessServerTransport
      Returns:
      a reactor.core.publisher.Mono<Void> that completes when the connections have been closed.
    • doGet

      protected void doGet(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws jakarta.servlet.ServletException, IOException
      Handles GET requests - returns 405 METHOD NOT ALLOWED as stateless transport doesn't support GET requests.
      Overrides:
      doGet in class jakarta.servlet.http.HttpServlet
      Parameters:
      request - The HTTP servlet request
      response - The HTTP servlet response
      Throws:
      jakarta.servlet.ServletException - If a servlet-specific error occurs
      IOException - If an I/O error occurs
    • doPost

      protected void doPost(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws jakarta.servlet.ServletException, IOException
      Handles POST requests for incoming JSON-RPC messages from clients.
      Overrides:
      doPost in class jakarta.servlet.http.HttpServlet
      Parameters:
      request - The HTTP servlet request containing the JSON-RPC message
      response - The HTTP servlet response
      Throws:
      jakarta.servlet.ServletException - If a servlet-specific error occurs
      IOException - If an I/O error occurs
    • destroy

      public void destroy()
      Cleans up resources when the servlet is being destroyed.

      This method ensures a graceful shutdown before calling the parent's destroy method.

      Specified by:
      destroy in interface jakarta.servlet.Servlet
      Overrides:
      destroy in class jakarta.servlet.GenericServlet
    • builder

      Create a builder for the server.
      Returns:
      a fresh HttpServletStatelessServerTransport.Builder instance.