Class: LittleGhost::MCP::SigV4Signer

Inherits:
Object
  • Object
show all
Defined in:
lib/little_ghost/mcp/client.rb

Overview

SigV4Signer adds AWS Signature Version 4 authentication to MCP requests. Requires the application-provided aws-sigv4 gem and uses its normal AWS credentials-provider chain unless one is supplied explicitly.

Instance Method Summary collapse

Constructor Details

#initialize(service:, region:, credentials_provider: nil) ⇒ SigV4Signer

Configures signing for service and region.



373
374
375
376
377
378
379
380
381
382
# File 'lib/little_ghost/mcp/client.rb', line 373

def initialize(service:, region:, credentials_provider: nil)
  require "aws-sigv4"
  @signer = Aws::Sigv4::Signer.new(
    service: service,
    region: region,
    credentials_provider: credentials_provider
  )
rescue LoadError
  raise ConfigurationError, "MCP SigV4 signing requires the optional aws-sigv4 gem"
end

Instance Method Details

#call(request) ⇒ Object

Signs request in place immediately before transport.



385
386
387
388
389
390
391
392
393
# File 'lib/little_ghost/mcp/client.rb', line 385

def call(request)
  signature = @signer.sign_request(
    http_method: request.method,
    url: request.uri,
    headers: request.to_hash.transform_values { |values| Array(values).join(",") },
    body: request.body
  )
  signature.headers.each { |name, value| request[name] = value }
end