Module: RosettAi::Mcp::SecurityLogger

Defined in:
lib/rosett_ai/mcp/security_logger.rb

Overview

Security event logger for MCP server.

Logs authentication, rate limiting, and origin validation events to stderr in structured format.

Author:

  • hugo

  • claude

Class Method Summary collapse

Class Method Details

.auth_failure(reason)

This method returns an undefined value.

Log a failed authentication attempt.

Parameters:

  • reason (String)

    failure reason



30
31
32
# File 'lib/rosett_ai/mcp/security_logger.rb', line 30

def auth_failure(reason)
  log(:warn, 'auth_failure', reason: reason)
end

.auth_success(client_id)

This method returns an undefined value.

Log a successful authentication event.

Parameters:

  • client_id (String)

    authenticated client identifier



22
23
24
# File 'lib/rosett_ai/mcp/security_logger.rb', line 22

def auth_success(client_id)
  log(:info, 'auth_success', client_id: client_id)
end

.log(level, event, **data)

This method returns an undefined value.

Parameters:

  • level (Symbol)

    log level

  • event (String)

    event name

  • data (Hash)

    event data



54
55
56
57
# File 'lib/rosett_ai/mcp/security_logger.rb', line 54

def log(level, event, **data)
  timestamp = Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
  warn "[rai-mcp] #{timestamp} #{level} #{event} #{data.map { |k, v| "#{k}=#{v}" }.join(' ')}"
end

.origin_rejected(origin)

This method returns an undefined value.

Log a rejected origin.

Parameters:

  • origin (String)

    the rejected origin



46
47
48
# File 'lib/rosett_ai/mcp/security_logger.rb', line 46

def origin_rejected(origin)
  log(:warn, 'origin_rejected', origin: origin)
end

.rate_limited(key)

This method returns an undefined value.

Log a rate-limited request.

Parameters:

  • key (String)

    bucket key that was limited



38
39
40
# File 'lib/rosett_ai/mcp/security_logger.rb', line 38

def rate_limited(key)
  log(:warn, 'rate_limited', bucket_key: key)
end