Class: RubyEventStore::MCP::Tools::StreamEvents

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_event_store/mcp/tools/stream_events.rb

Instance Method Summary collapse

Instance Method Details

#call(event_store, args) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/ruby_event_store/mcp/tools/stream_events.rb', line 32

def call(event_store, args)
  events = ReadEvents.of(
    event_store.read.stream(args.fetch("stream_name")),
    type: args["type"],
    after: args["after"],
    before: args["before"],
    from: args["from"],
    limit: args.fetch("limit", 20)
  )
  return "(no events)" if events.empty?
  format_events(events)
end

#nameObject



9
10
11
# File 'lib/ruby_event_store/mcp/tools/stream_events.rb', line 9

def name
  "stream_events"
end

#schemaObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/ruby_event_store/mcp/tools/stream_events.rb', line 13

def schema
  {
    name: name,
    description: "List events in a stream with optional filters",
    inputSchema: {
      type: "object",
      properties: {
        stream_name: { type: "string", description: "Stream name" },
        limit: { type: "integer", description: "Max number of events (default: 20)" },
        type: { type: "string", description: "Filter by event type class name" },
        after: { type: "string", description: "Filter events newer than timestamp (ISO8601)" },
        before: { type: "string", description: "Filter events older than timestamp (ISO8601)" },
        from: { type: "string", description: "Start reading from event ID (exclusive)" }
      },
      required: ["stream_name"]
    }
  }
end