Xj ddlZddlmZddlZddlmZmZddlmZddl m Z m Z m Z ddl mZddlmZddlmZddlmZmZdd lmZej0eZed e dd e d e d e dedzfdZy)N)asynccontextmanager)MemoryObjectReceiveStreamMemoryObjectSendStream)ValidationError)ReceiveScopeSend) WebSocket) deprecated)TransportSecurityMiddlewareTransportSecuritySettings)SessionMessagezThe WebSocket server transport is deprecated and will be removed in mcp 2.0. WebSocket was never part of the MCP specification; use the streamable HTTP transport instead.scopereceivesendsecurity_settingscX Kt||| t|}|j dd{}|# jd{t d j dd{t jd\ }t jd\} fd} fd } t j4d{} | j|| j| ||fdddd{y7777D7 #1d{7swYyxYww) a= WebSocket server transport for MCP. This is an ASGI application, suitable to be used with a framework like Starlette and a server like Hypercorn. Set `security_settings` to enable Host/Origin header validation before the handshake is accepted (same settings type as the SSE and Streamable HTTP transports). When validation fails this raises `ValueError` after rejecting the handshake. Deprecated: this transport will be removed in mcp 2.0. WebSocket was never part of the MCP specification; use the streamable HTTP transport instead. F)is_postNzRequest validation failedmcp) subprotocolrcK 4d{j23d{} tjj|}t |}j |d{N7b7K#t$r$}j |d{7Yd}~zd}~wwxYw796dddd{7y#1d{7swYyxYw#tj$rjd{7YywxYwwN) iter_texttypesJSONRPCMessagemodel_validate_jsonrrranyioClosedResourceErrorclose)msgclient_messageexcsession_messageread_stream_writer websockets h/mnt/ssd/data/Dropbox/adrian/vault-secondbrain/venv/lib/python3.12/site-packages/mcp/server/websocket.py ws_readerz#websocket_server..ws_reader>s $) C C!*!4!4!6CC#!).)=)=)Q)QRU)V '5^&DO,11/BBB CC+!055c::: ! C"7 C C C C C(( $//# # # $sC>C A.C B7B$A0B$B7A2 B7(B")B7.C 0B$2 B;BB BB7BB7$B7% C 0B31C 6C>7C =C >C C C> C &C;2C53C;8C>:C;;C>chK 4d{23d{}|jjdd}j|d{@7F7=7 6dddd{7y#1d{7swYyxYw#tj$rj d{7YywxYww)NT)by_alias exclude_none)messagemodel_dump_json send_textrrr)r#objr%write_stream_readers r& ws_writerz#websocket_server..ws_writerMs $* 3 3-@33/)11AA4^bAcC#--c222 332.A 3 3 3 3 3(( $//# # # $sB2BABA+AAA2A+ A A+BAA+A+ B$A'%B*B2+A=1A4 2A=9B<B2=B&B/&B)'B/,B2.B//B2) r r validate_requestr ValueErroracceptrcreate_memory_object_streamcreate_task_group start_soon)rrrrsecurityerror_response read_stream write_streamr'r0tgr$r%r/s @@@r&websocket_serverr<s'0%$/I*+<=H#44Y4NNN!oo455   u  ---',&G&G&J# (-(I(I!(L%L% $$&&(**B i  i L))***SO .F*****s|/D*D D*D $D*3D4AD* D D**D: D*DD* D*D*D*D*D'D D'#D*r)logging contextlibrranyio.streams.memoryrr pydantic_corerstarlette.typesrrr starlette.websocketsr typing_extensionsr mcp.typesrmcp.server.transport_securityr r mcp.shared.messager getLogger__name__loggerr<r&rLs* R)00*(`-   8 $ I ;? B* B* B* B*147 B*  B*rK