Skip to content

class ActionController::MCPServer::RequestContext
inherits Reference #

the MCP request a route is running for, available to the route as mcp_context.

Routes annotated @[AC::MCP(long_running: true)] are streamed to clients that accept an event stream: they can report progress, and are cancelled when the client disconnects

@[AC::MCP(long_running: true)]
@[AC::Route::GET("/:id/export")]
def export(id : Int64) : Nil
  rows = Row.where(widget_id: id)
  rows.each_with_index do |row, index|
    break if mcp_context.try &.cancelled?
    response << row.to_csv
    mcp_context.try &.progress(index + 1, rows.size)
  end
end

Constructors#

.new(progress_token : JSON::Any | Nil = nil)#

View source

Methods#

#cancelled? : Bool#

the client disconnected, the route should stop work

View source

#done : Channel(Nil)#

closed when the request is cancelled, select on it to stop waiting

View source

#full=(full : Bool)#

true once the response has reached the route's max_bytes

View source

#full? : Bool#

true once the response has reached the route's max_bytes

View source

#progress(progress : Number, total : Number | Nil = nil, message : String | Nil = nil) : Nil#

reports progress to the client, ignored when the client didn't request progress. Progress must increase, values that don't are ignored

View source

#progress_token : JSON::Any | ::Nil#

the _meta.progressToken of the request, progress isn't reported without one

View source