Module: ModelContextProtocol::Methods

Extended by:
Methods
Included in:
Methods
Defined in:
lib/model_context_protocol/methods.rb

Defined Under Namespace

Classes: MissingRequiredCapabilityError

Constant Summary collapse

INITIALIZE =
"initialize"
PING =
"ping"
LOGGING_SET_LEVEL =
"logging/setLevel"
PROMPTS_GET =
"prompts/get"
PROMPTS_LIST =
"prompts/list"
COMPLETION_COMPLETE =
"completion/complete"
RESOURCES_LIST =
"resources/list"
RESOURCES_READ =
"resources/read"
RESOURCES_TEMPLATES_LIST =
"resources/templates/list"
RESOURCES_SUBSCRIBE =
"resources/subscribe"
RESOURCES_UNSUBSCRIBE =
"resources/unsubscribe"
TOOLS_CALL =
"tools/call"
TOOLS_LIST =
"tools/list"
SAMPLING_CREATE_MESSAGE =
"sampling/createMessage"
ALL_METHODS =
[
  SAMPLING_CREATE_MESSAGE,
  INITIALIZE,
  LOGGING_SET_LEVEL,
  PING,
  PROMPTS_GET,
  PROMPTS_LIST,
  COMPLETION_COMPLETE,
  RESOURCES_LIST,
  RESOURCES_READ,
  RESOURCES_TEMPLATES_LIST,
  RESOURCES_SUBSCRIBE,
  RESOURCES_UNSUBSCRIBE,
  TOOLS_CALL,
  TOOLS_LIST,
]

Instance Method Summary collapse

Instance Method Details

#ensure_capability!(method, capabilities) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/model_context_protocol/methods.rb', line 54

def ensure_capability!(method, capabilities)
  case method
  when PROMPTS_GET, PROMPTS_LIST, COMPLETION_COMPLETE
    unless capabilities[:prompts]
      raise MissingRequiredCapabilityError.new(method, :prompts)
    end
  when RESOURCES_LIST, RESOURCES_TEMPLATES_LIST, RESOURCES_READ, RESOURCES_SUBSCRIBE, RESOURCES_UNSUBSCRIBE
    unless capabilities[:resources]
      raise MissingRequiredCapabilityError.new(method, :resources)
    end

    if method == RESOURCES_SUBSCRIBE && !capabilities[:resources][:subscribe]
      raise MissingRequiredCapabilityError.new(method, :resources_subscribe)
    end
  when TOOLS_CALL, TOOLS_LIST
    unless capabilities[:tools]
      raise MissingRequiredCapabilityError.new(method, :tools)
    end
  when SAMPLING_CREATE_MESSAGE
    unless capabilities[:sampling]
      raise MissingRequiredCapabilityError.new(method, :sampling)
    end
  when LOGGING_SET_LEVEL
    # Logging is unsupported by the Server
    unless capabilities[:logging]
      raise MissingRequiredCapabilityError.new(method, :logging)
    end
  when INITIALIZE, PING
    # No specific capability required for initialize or ping
  end
end