Class: McpOnRuby::Server::RateLimiter

Inherits:
Object
  • Object
show all
Defined in:
lib/mcp_on_ruby/server.rb

Overview

Simple rate limiter

Instance Method Summary collapse

Constructor Details

#initialize(requests_per_minute) ⇒ RateLimiter

Returns a new instance of RateLimiter.



349
350
351
352
353
# File 'lib/mcp_on_ruby/server.rb', line 349

def initialize(requests_per_minute)
  @requests_per_minute = requests_per_minute
  @requests = {}
  @mutex = Mutex.new
end

Instance Method Details

#allowed?(ip) ⇒ Boolean

Returns:

  • (Boolean)


355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
# File 'lib/mcp_on_ruby/server.rb', line 355

def allowed?(ip)
  return true if @requests_per_minute <= 0
  
  @mutex.synchronize do
    now = Time.now.to_i
    minute = now / 60
    
    @requests[ip] ||= {}
    @requests[ip][minute] ||= 0
    
    # Clean old entries
    @requests[ip].delete_if { |m, _| m < minute }
    
    if @requests[ip][minute] >= @requests_per_minute
      false
    else
      @requests[ip][minute] += 1
      true
    end
  end
end