o
    i
                  	   @   s\  d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ ejsVd dlZed
 ejejd edZdeejej f ej!B e"B ddfddZ#	dde	ee"B  de
e dej$dB fddZ%de&de'e& de'e(e&e&f  fddZ)dd Z*e+dkre*  dS dS )    N)partial)urlparse)MemoryObjectReceiveStreamMemoryObjectSendStream)ClientSession)
sse_client)StdioServerParametersstdio_client)SessionMessage)RequestResponderignore)levelclientmessagereturnc                    s,   t | trtd|  d S td|  d S )Nz	Error: %sz Received message from server: %s)
isinstance	Exceptionloggererrorinfo)r    r   J/home/app/Keep/.python/lib/python3.10/site-packages/mcp/client/__main__.pymessage_handler   s
   
r   read_streamwrite_streamclient_infoc              	      sn   t | |t|d4 I d H }td | I d H  td W d   I d H  d S 1 I d H s0w   Y  d S )N)r   r   zInitializing sessionZInitialized)r   r   r   r   Z
initialize)r   r   r   sessionr   r   r   run_session$   s   
.r   command_or_urlargsenvc              	      s   t |}t| jdv r4t| 4 I d H }t| I d H  W d   I d H  d S 1 I d H s-w   Y  d S t| ||d}t|4 I d H }t| I d H  W d   I d H  d S 1 I d H s\w   Y  d S )N)httphttps)commandr   r    )dictr   schemer   r   r   r	   )r   r   r    Zenv_dictstreamsZserver_parametersr   r   r   main4   s   ..r'   c               	   C   sh   t  } | jddd | jdddd | jdd	d
dddg d |  }tjtt|j|j	|j
dd d S )Nr   zCommand or URL to connect to)helpr   *zAdditional arguments)nargsr(   z-ez--env   append)ZKEYZVALUEz9Environment variables to set. Can be used multiple times.)r*   actionmetavarr(   defaultZtrio)backend)argparseArgumentParseradd_argument
parse_argsanyiorunr   r'   r   r   r    )parserr   r   r   r   cliB   s   
"r8   __main__)N),r1   loggingsys	functoolsr   urllib.parser   r5   Zanyio.streams.memoryr   r   Z	mcp.typestypesZmcp.client.sessionr   Zmcp.client.sser   Zmcp.client.stdior   r	   Zmcp.shared.messager
   Zmcp.shared.sessionr   warnoptionswarningssimplefilterbasicConfigINFO	getLoggerr   ZServerRequestZClientResultZServerNotificationr   r   ZImplementationr   strlisttupler'   r8   __name__r   r   r   r   <module>   sH    




&
