# 단순 대화용 MCP 도구 정의 @mcp.tool() async def chat(input: str) -> str: """LLM과 일반적인 대화를 수행합니다.""" # GPT-4o에게 입력을 비동기로 전달하고 응답을 받음 result = await llm.ainvoke(input) # 답변이 .content에 있으면 문자열로 꺼내서 반환 if hasattr(result, "content"): return str(result.content) return str(result) # 없으면 전체 결과를 문자열로 반환 # SSE 서버 전송 계층 설정 ("/messages/" 경로로 POST 및 스트리밍 처리) sse = SseServerTransport("/messages/") # SSE 연결을 처리하는 엔드포인트 함수 정의 async def handle_sse(request: Request) -> None: # 클라이언트와의 SSE 연결을 수립하고, MCP 서버의 처리 루프를 실행 async with sse.connect_sse( request.scope, # HTTP 요청의 범위 정보 request.receive, # 클라이언트에서 수신되는 메시지 request._send, # 클라이언트로 전송할 메시지 ) as (read_stream, write_stream): # 읽기/쓰기 스트림 객체 확보 await mcp._mcp_server.run( # MCP 서버 실행 read_stream, # 클라이언트 입력 스트림 write_stream, # 클라이언트 출력 스트림 mcp._mcp_server.create_initialization_options(), # 초기화 옵션 )