Slide 47
Slide 47 text
44& 4FSWFS4FOU&WFOUT
def DataProcessingTool.call(server_context:)
server_context.report_progress(0, total: 100)
data = fetch_data
server_context.report_progress(50, total: 100)
result = process(data)
server_context.report_progress(100, total: 100) # data: {"method":"notifications/progress",...}\n\n
MCP::Tool::Response.new([{type: "text", text: result}])
end
def handle_request_with_sse_response(...)
body = proc do |stream|
@sessions[session_id][:post_request_streams][request_id] = stream
response = dispatch_handle_json(body_string, server_session)
send_to_stream(stream, response) # data: {"jsonrpc":"2.0","id":"1","result":{...}}\n\n
stream.close
end
[200, SSE_HEADERS, body]
end
def send_to_stream(stream, data)
stream.write(
"data: #{data.to_json}\n\n"
)
stream.flush
end
5SBOTQPSU 4%,JOUFSOBM
5PPM VTFSDPEF
DBMMFEJOTJEFEJTQBUDI@IBOEMF@KTPO
3BDL4USFBNJOH#PEZ
1VNBDBMMTCPEZDBMM TUSFBN
# data: {"jsonrpc":"2.0","id":"1","result":{...}}\n\n
# data: {"jsonrpc":"2.0","id":"1","result":{...}}\n\n
# data: {"jsonrpc":"2.0","id":"1","result":{...}}\n\n
# data: {"jsonrpc":"2.0","id":"1","result":{...}}\n\n