o
    h                     @   s<   d Z ddlZddlmZ ddlmZ e  G dd dZdS )u*   MCPクライアント管理モジュール    N)load_dotenv)MCPServerStdioc                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )	MCPClientu3   MCPサーバーへの接続を管理するクラスc                 C   s   d | _ d | _d S )Nplaywright_serverslack_serverself r
   -/var/www/html/openai_agents/src/mcp/client.py__init__   s   
zMCPClient.__init__c                    st   t dg dddd| _| j I dH  t dddgtd	td
tdddddd| _| j I dH  | S )u?   非同期コンテキストマネージャーのエントリーnpx)-yz@playwright/mcp@latestz--image-responses=omit)commandargs   )paramsclient_session_timeout_secondsNr   z"@modelcontextprotocol/server-slackSLACK_BOT_TOKENSLACK_TEAM_IDSLACK_CHANNEL_IDS)r   r   r   )r   r   env<      )r   r   max_retry_attempts)r   r   
__aenter__osgetenvr   r   r
   r
   r   r      s*   	zMCPClient.__aenter__c                    sB   | j r| j |||I dH  | jr| j|||I dH  dS dS )u6   非同期コンテキストマネージャーの終了N)r   	__aexit__r   )r	   exc_typeexc_valexc_tbr
   r
   r   r   .   s   zMCPClient.__aexit__c                 C   s   | j | jgS )u0   接続済みのMCPサーバーリストを取得r   r   r
   r
   r   get_mcp_servers5   s   zMCPClient.get_mcp_serversN)__name__
__module____qualname____doc__r   r   r   r"   r
   r
   r
   r   r   	   s    r   )r&   r   dotenvr   agents.mcp.serverr   r   r
   r
   r
   r   <module>   s    