o
J-�gJ � @ sV d dl mZmZ d dlmZ d dlmZ d dlmZm Z d dl
mZ G dd� d�ZdS ) � )�FastMCP�Context)�SseServerTransport)� Starlette)�Mount�Route)�FastAPIc @ s, e Zd Zdd� Zdd� Zdd� Zdd� Zd S )
�SseCompatibleMcpServerc C s t |�| _|| _t� | _d S )N)r �mcp�portr �app)�self�namer � r �5/home/ubuntu/damn-vulnerable-mcs/common/sse_server.py�__init__ s
zSseCompatibleMcpServer.__init__c C s | j �d| �� � dS )z'Mount the SSE server to the FastAPI app�/N)r �mount�create_sse_server)r
r r r �mount_sse_server s z'SseCompatibleMcpServer.mount_sse_serverc s: t d��� �fdd�}td|d�td�jd�g}t|d�S ) zHCreate a Starlette app that handles SSE connections and message handlingz
/messages/c � sx ��� | j| j| j�4 I d H � }� jj�|d |d � jj�� �I d H W d �I d H d S 1 I d H s5w Y d S )Nr � )�connect_sse�scope�receive�_sendr
�_mcp_server�run�create_initialization_options)�request�streams�r
� transportr r �
handle_sse s ���.�z<SseCompatibleMcpServer.create_sse_server.<locals>.handle_sse�/sse)�endpointz /messages)r )�routes)r r r �handle_post_messager )r
r"