
    hiU                        d Z ddlZddlZddlmZ  ej
                  d      Z	 ddlmZ dZ	dd	lmZ  G d
 d      ZddefdZedk(  ru eej&                        dkD  rXej&                  d   dk(  rF e       Zej+                         Z ed       ej1                         D ]  \  ZZ ede de         y e        yy# e
$ r dZ	ej                  d       Y w xY w)za
Genesis V2 MCP Server
=====================
FastMCP-based server exposing Genesis capabilities.
    N)Optionalzgenesis_v2.mcp.server)FastMCPTFz/FastMCP not installed. Run: pip install fastmcp)Identityc                   <    e Zd ZdZd
defdZd Zd Zd Zde	fdZ
y	)GenesisServera  
    MCP Server exposing Genesis capabilities.
    
    Tools:
    - genesis_query: Query the agent
    - genesis_vision: Vision analysis
    
    Resources:
    - identity://genesis/context: Agent identity/context
    - session://genesis/state: Current session state
    namec                     || _         t               | _        ddd| _        t        r1t        |      | _        | j                          | j                          y d | _        y )Ninitializedr   )statusqueries)	r   r   	_identity_session_stateMCP_AVAILABLEr   _mcp_register_tools_register_resources)selfr   s     ./mnt/e/genesis-system/genesis_v2/mcp/server.py__init__zGenesisServer.__init__%   sL    	!)61EDI  "$$&DI    c                       j                   sy j                   j                         dt        dt        f fd       } j                   j                         ddt        dt        dt        fd       }y)	zRegister MCP tools.Nqueryreturnc                 t    j                   dxx   dz  cc<   t        j                  d| dd  d       d|  S )z
            Query Genesis agent.
            
            Args:
                query: Natural language query
                
            Returns:
                Agent response
            r      zMCP query: N2   ...z[STUB] Query received: )r   loggerinfo)r   r   s    r   genesis_queryz4GenesisServer._register_tools.<locals>.genesis_query6   sC     	*a/*KK+eCRj\56,UG44r   	image_urlpromptc                 J    t         j                  d|dd  d       d| dd  S )a   
            Analyze image with Vision agent.
            
            Args:
                image_url: URL or base64 of image
                prompt: Analysis prompt
                
            Returns:
                Vision analysis result
            zMCP vision: N   r   z[STUB] Vision analysis for: )r   r   )r!   r"   s     r   genesis_visionz5GenesisServer._register_tools.<locals>.genesis_visionE   s3     KK,vcr{m3781)CR.1ABBr   )zDescribe this image)r   toolstr)r   r    r%   s   `  r   r   zGenesisServer._register_tools1   sr    yy			5 	5 	5 
	5 
		Cc 	C3 	CSV 	C 
	Cr   c                       j                   sy j                   j                  d       fd       } j                   j                  d       fd       }y)zRegister MCP resources.Nidentity://genesis/contextc                       j                   j                         r3 j                   j                   j                   j                  dd dz   dS ddiS )zGet agent identity and context.Ni  r   )personaruleserrorzIdentity not loaded)r   loadpersona_namerules_contentr   s   r   get_identityz7GenesisServer._register_resources.<locals>.get_identityY   sS     ~~""$#~~::!^^99$3?%G  233r   session://genesis/statec                       j                   S )zGet current session state.)r   r1   s   r   get_sessionz6GenesisServer._register_resources.<locals>.get_sessionc   s     &&&r   )r   resource)r   r2   r5   s   `  r   r   z!GenesisServer._register_resourcesT   sS    yy			8	9	4 
:	4 
		5	6	' 
7	'r   c                     | j                   st        j                  d       yt        j                  d| j                          | j                   j                          y)Start the MCP server.z)MCP not available. Install FastMCP first.NzStarting MCP server: )r   r   r-   r   r   runr1   s    r   r9   zGenesisServer.runh   s>    yyLLDE+DII;78		r   r   c                     | j                   t        ddgddgd}| j                  j                         r d|d<   | j                  j                  |d<   |S d	|d<   |S )
z$Test the server without starting it.r    r%   r)   r3   )r   mcp_availabletools	resourcesTidentity_loadedr+   F)r   r   r   r.   r/   )r   results     r   testzGenesisServer.testq   sq     II*%'7868QR	
 >> (,F$% $ ; ;F9  ).F$%r   Nz
genesis-v2)__name__
__module____qualname____doc__r'   r   r   r   r9   dictr@    r   r   r   r      s0    

S 
!CF'(d r   r   r   c                 :    t        |       }|j                          y)r8   N)r   r9   )r   servers     r   start_serverrJ      s    4 F
JJLr   __main__r   z--testzMCP Server Test Results:z  z: rA   )rE   loggingsystypingr   	getLoggerr   fastmcpr   r   ImportErrorwarninggenesis_v2.core.identityr   r   r'   rJ   rB   lenargvrI   r@   r?   printitemskeyvaluerG   r   r   <module>rZ      s     
 			2	3FM
 .i iXs  z
388}qSXXa[H4() ,,. 	'JCBse2eW%&	' 	 u  FM
NNDEFs   B> >CC