Module: MCP::Methods

Extended by:
Methods
Included in:
Methods
Defined in:
lib/mcp/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"

Instance Method Summary collapse

Instance Method Details

#ensure_capability!(method, capabilities) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/mcp/methods.rb', line 37

def ensure_capability!(method, capabilities)
  case method
  when PROMPTS_GET, PROMPTS_LIST
    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 COMPLETION_COMPLETE
    unless capabilities[:completions]
      raise MissingRequiredCapabilityError.new(method, :completions)
    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