@@ -135,13 +135,15 @@ class StreamableHTTPServerTransport:
135135 _write_stream : MemoryObjectSendStream [SessionMessage ] | None = None
136136 _write_stream_reader : MemoryObjectReceiveStream [SessionMessage ] | None = None
137137 _security : TransportSecurityMiddleware
138+ _maximum_message_size : int = MAXIMUM_MESSAGE_SIZE
138139
139140 def __init__ (
140141 self ,
141142 mcp_session_id : str | None ,
142143 is_json_response_enabled : bool = False ,
143144 event_store : EventStore | None = None ,
144145 security_settings : TransportSecuritySettings | None = None ,
146+ maximum_message_size : int | None = None ,
145147 ) -> None :
146148 """
147149 Initialize a new StreamableHTTP server transport.
@@ -155,6 +157,8 @@ def __init__(
155157 resumability will be enabled, allowing clients to
156158 reconnect and resume messages.
157159 security_settings: Optional security settings for DNS rebinding protection.
160+ maximum_message_size: Optional configurable maximum message size specified
161+ in bytes
158162
159163 Raises:
160164 ValueError: If the session ID contains invalid characters.
@@ -166,6 +170,7 @@ def __init__(
166170 self .is_json_response_enabled = is_json_response_enabled
167171 self ._event_store = event_store
168172 self ._security = TransportSecurityMiddleware (security_settings )
173+ self ._maximum_message_size = maximum_message_size if maximum_message_size else MAXIMUM_MESSAGE_SIZE
169174 self ._request_streams : dict [
170175 RequestId ,
171176 tuple [
@@ -329,7 +334,7 @@ async def _handle_post_request(self, scope: Scope, request: Request, receive: Re
329334
330335 # Parse the body - only read it once
331336 body = await request .body ()
332- if len (body ) > MAXIMUM_MESSAGE_SIZE :
337+ if len (body ) > self . _maximum_message_size :
333338 response = self ._create_error_response (
334339 "Payload Too Large: Message exceeds maximum size" ,
335340 HTTPStatus .REQUEST_ENTITY_TOO_LARGE ,
0 commit comments