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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classBuilder for creating instances ofHttpServletStatelessServerTransport. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final StringFields inherited from class jakarta.servlet.http.HttpServlet
LEGACY_DO_HEAD -
Method Summary
Modifier and TypeMethodDescriptionbuilder()Create a builder for the server.reactor.core.publisher.Mono<Void>Gracefully closes all the transports with connected clients and releases any associated resources asynchronously.voiddestroy()Cleans up resources when the servlet is being destroyed.protected voiddoGet(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) Handles GET requests - returns 405 METHOD NOT ALLOWED as stateless transport doesn't support GET requests.protected voiddoPost(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) Handles POST requests for incoming JSON-RPC messages from clients.voidsetMcpHandler(McpStatelessServerHandler mcpHandler) Methods inherited from class jakarta.servlet.http.HttpServlet
doDelete, doHead, doOptions, doPatch, doPut, doTrace, getLastModified, init, isSensitiveHeader, service, serviceMethods inherited from class jakarta.servlet.GenericServlet
getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, logMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.modelcontextprotocol.spec.McpStatelessServerTransport
close, protocolVersion
-
Field Details
-
UTF_8
- See Also:
-
APPLICATION_JSON
- See Also:
-
TEXT_EVENT_STREAM
- See Also:
-
ACCEPT
- See Also:
-
FAILED_TO_SEND_ERROR_RESPONSE
- See Also:
-
-
Method Details
-
setMcpHandler
- Specified by:
setMcpHandlerin interfaceMcpStatelessServerTransport
-
closeGracefully
Description copied from interface:McpStatelessServerTransportGracefully closes all the transports with connected clients and releases any associated resources asynchronously.- Specified by:
closeGracefullyin interfaceMcpStatelessServerTransport- 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:
doGetin classjakarta.servlet.http.HttpServlet- Parameters:
request- The HTTP servlet requestresponse- The HTTP servlet response- Throws:
jakarta.servlet.ServletException- If a servlet-specific error occursIOException- 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:
doPostin classjakarta.servlet.http.HttpServlet- Parameters:
request- The HTTP servlet request containing the JSON-RPC messageresponse- The HTTP servlet response- Throws:
jakarta.servlet.ServletException- If a servlet-specific error occursIOException- 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:
destroyin interfacejakarta.servlet.Servlet- Overrides:
destroyin classjakarta.servlet.GenericServlet
-
builder
Create a builder for the server.- Returns:
- a fresh
HttpServletStatelessServerTransport.Builderinstance.
-