Skip to content

Commit 07a616a

Browse files
refactor: consolidate header validation into single method
- Add _validate_request_headers method that combines session and protocol validation - Replace repeated calls to _validate_session and _validate_protocol_version - Improves code maintainability and extensibility for future header validations - No functional changes, all tests passing This refactoring makes it easier to add new header validations in the future by having a single entry point for all non-initialization request validations.
1 parent a0f6562 commit 07a616a

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/mcp/server/streamable_http.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -385,9 +385,7 @@ async def _handle_post_request(
385385
)
386386
await response(scope, receive, send)
387387
return
388-
elif not await self._validate_session(request, send):
389-
return
390-
elif not await self._validate_protocol_version(request, send):
388+
elif not await self._validate_request_headers(request, send):
391389
return
392390

393391
# For notifications and responses only, return 202 Accepted
@@ -562,9 +560,7 @@ async def _handle_get_request(self, request: Request, send: Send) -> None:
562560
await response(request.scope, request.receive, send)
563561
return
564562

565-
if not await self._validate_session(request, send):
566-
return
567-
if not await self._validate_protocol_version(request, send):
563+
if not await self._validate_request_headers(request, send):
568564
return
569565

570566
# Handle resumability: check for Last-Event-ID header
@@ -649,9 +645,7 @@ async def _handle_delete_request(self, request: Request, send: Send) -> None:
649645
await response(request.scope, request.receive, send)
650646
return
651647

652-
if not await self._validate_session(request, send):
653-
return
654-
if not await self._validate_protocol_version(request, send):
648+
if not await self._validate_request_headers(request, send):
655649
return
656650

657651
await self._terminate_session()
@@ -711,6 +705,13 @@ async def _handle_unsupported_request(self, request: Request, send: Send) -> Non
711705
)
712706
await response(request.scope, request.receive, send)
713707

708+
async def _validate_request_headers(self, request: Request, send: Send) -> bool:
709+
if not await self._validate_session(request, send):
710+
return False
711+
if not await self._validate_protocol_version(request, send):
712+
return False
713+
return True
714+
714715
async def _validate_session(self, request: Request, send: Send) -> bool:
715716
"""Validate the session ID in the request."""
716717
if not self.mcp_session_id:

0 commit comments

Comments
 (0)