o
    h
                  	   @   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   T/var/www/html/openai_agents/venv/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 sessionInitialized)r   r   r   r   
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"   env_dictstreams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)KEYVALUEz9Environment variables to set. Can be used multiple times.)r.   actionmetavarr,   defaulttrio)backend)argparseArgumentParseradd_argument
parse_argsanyiorunr   r+   r    r!   r"   )parserr!   r   r   r   cliB   s   
"r?   __main__)N),r8   loggingsys	functoolsr   urllib.parser   r<   anyio.streams.memoryr   r   	mcp.typestypesmcp.client.sessionr   mcp.client.sser   mcp.client.stdior   r	   mcp.shared.messager
   mcp.shared.sessionr   warnoptionswarningssimplefilterbasicConfigINFO	getLoggerr   ServerRequestClientResultServerNotificationr   r   Implementationr   strlisttupler+   r?   __name__r   r   r   r   <module>   sH    




&
