Class: VectorMCP::Sampling::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/vector_mcp/sampling/request.rb

Overview

Represents a sampling request to be sent to an MCP client. It validates the basic structure of the request.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ Request

Initializes a new Sampling::Request.

Parameters:

  • params (Hash) (defaults to: {})

    The parameters for the sampling request.

    • :messages Array Conversation history. Each message:
      • :role String "user" or "assistant".
      • :content Hash Message content.
      • :type String "text" or "image".
      • :text String Text content if type is "text".
      • :data String Base64 image data if type is "image".
      • :mime_type String Mime type if type is "image".
    • :model_preferences Hash Model selection preferences.
    • :system_prompt String System prompt.
    • :include_context String "none", "thisServer", "allServers".
    • :temperature Float Sampling temperature.
    • :max_tokens Integer Maximum tokens to generate.
    • :stop_sequences Array Stop sequences.
    • :metadata Hash Provider-specific parameters.

Raises:

  • (ArgumentError)

    if the basic structure is invalid.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/vector_mcp/sampling/request.rb', line 32

def initialize(params = {})
  params = params.transform_keys(&:to_sym) # Normalize keys

  @messages = params[:messages]
  @model_preferences = params[:model_preferences]
  @system_prompt = params[:system_prompt]
  @include_context = params[:include_context]
  @temperature = params[:temperature]
  @max_tokens = params[:max_tokens]
  @stop_sequences = params[:stop_sequences]
  @metadata = params[:metadata]

  validate!
end

Instance Attribute Details

#include_contextObject (readonly)

Returns the value of attribute include_context.



10
11
12
# File 'lib/vector_mcp/sampling/request.rb', line 10

def include_context
  @include_context
end

#max_tokensObject (readonly)

Returns the value of attribute max_tokens.



10
11
12
# File 'lib/vector_mcp/sampling/request.rb', line 10

def max_tokens
  @max_tokens
end

#messagesObject (readonly)

Returns the value of attribute messages.



10
11
12
# File 'lib/vector_mcp/sampling/request.rb', line 10

def messages
  @messages
end

#metadataObject (readonly)

Returns the value of attribute metadata.



10
11
12
# File 'lib/vector_mcp/sampling/request.rb', line 10

def 
  @metadata
end

#model_preferencesObject (readonly)

Returns the value of attribute model_preferences.



10
11
12
# File 'lib/vector_mcp/sampling/request.rb', line 10

def model_preferences
  @model_preferences
end

#stop_sequencesObject (readonly)

Returns the value of attribute stop_sequences.



10
11
12
# File 'lib/vector_mcp/sampling/request.rb', line 10

def stop_sequences
  @stop_sequences
end

#system_promptObject (readonly)

Returns the value of attribute system_prompt.



10
11
12
# File 'lib/vector_mcp/sampling/request.rb', line 10

def system_prompt
  @system_prompt
end

#temperatureObject (readonly)

Returns the value of attribute temperature.



10
11
12
# File 'lib/vector_mcp/sampling/request.rb', line 10

def temperature
  @temperature
end

Instance Method Details

#to_hHash

Returns the request parameters as a hash, suitable for JSON serialization.

Returns:

  • (Hash)


50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/vector_mcp/sampling/request.rb', line 50

def to_h
  {
    messages: @messages,
    modelPreferences: @model_preferences, # MCP uses camelCase
    systemPrompt: @system_prompt,
    includeContext: @include_context,
    temperature: @temperature,
    maxTokens: @max_tokens,
    stopSequences: @stop_sequences,
    metadata: @metadata
  }.compact # Remove nil values
end