File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1313
1414from mcp import types
1515from mcp .shared ._httpx_utils import McpHttpClientFactory , create_mcp_http_client
16+ from mcp .shared .exceptions import HttpError
1617from mcp .shared .message import SessionMessage
1718
1819logger = logging .getLogger (__name__ )
@@ -142,10 +143,28 @@ async def post_writer(endpoint_url: str):
142143 exclude_unset = True ,
143144 ),
144145 )
146+ if response .status_code in (401 , 403 ):
147+ status_label = "Unauthorized" if response .status_code == 401 else "Forbidden"
148+ exc = HttpError (
149+ response .status_code ,
150+ f"HTTP { response .status_code } { status_label } " ,
151+ )
152+ await read_stream_writer .send (exc )
153+ raise exc
145154 response .raise_for_status ()
146155 logger .debug (f"Client message sent successfully: { response .status_code } " )
147- except Exception : # pragma: lax no cover
156+ except HttpError : # pragma: lax no cover
157+ raise
158+ except httpx .HTTPStatusError as exc : # pragma: lax no cover
148159 logger .exception ("Error in post_writer" )
160+ http_exc = HttpError (
161+ exc .response .status_code ,
162+ f"HTTP { exc .response .status_code } " ,
163+ )
164+ await read_stream_writer .send (http_exc )
165+ except Exception as exc : # pragma: lax no cover
166+ logger .exception ("Error in post_writer" )
167+ await read_stream_writer .send (exc )
149168 finally :
150169 await write_stream .aclose ()
151170
You can’t perform that action at this time.
0 commit comments