더북(TheBook)
# 단순 대화용 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(),  # 초기화 옵션 
        )
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.