diff --git a/lib/model_context_protocol/methods.rb b/lib/model_context_protocol/methods.rb index 721d11ff..02ac4b7f 100644 --- a/lib/model_context_protocol/methods.rb +++ b/lib/model_context_protocol/methods.rb @@ -36,7 +36,7 @@ def initialize(method, capability) def ensure_capability!(method, capabilities) case method - when PROMPTS_GET, PROMPTS_LIST, COMPLETION_COMPLETE + when PROMPTS_GET, PROMPTS_LIST unless capabilities[:prompts] raise MissingRequiredCapabilityError.new(method, :prompts) end @@ -56,6 +56,10 @@ def ensure_capability!(method, capabilities) 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] diff --git a/lib/model_context_protocol/server.rb b/lib/model_context_protocol/server.rb index f0653fcc..fb1e9a68 100644 --- a/lib/model_context_protocol/server.rb +++ b/lib/model_context_protocol/server.rb @@ -60,6 +60,7 @@ def initialize( # No op handlers for currently unsupported methods Methods::RESOURCES_SUBSCRIBE => ->(_) {}, Methods::RESOURCES_UNSUBSCRIBE => ->(_) {}, + Methods::COMPLETION_COMPLETE => ->(_) {}, Methods::LOGGING_SET_LEVEL => ->(_) {}, } end diff --git a/test/model_context_protocol/methods_test.rb b/test/model_context_protocol/methods_test.rb index e8ff5222..f35b3b77 100644 --- a/test/model_context_protocol/methods_test.rb +++ b/test/model_context_protocol/methods_test.rb @@ -19,6 +19,13 @@ class MethodsTest < ActiveSupport::TestCase assert_equal "Server does not support sampling (required for sampling/createMessage)", error.message end + test "ensure_capability! for completion/complete raises an error if completions capability is not present" do + error = assert_raises(Methods::MissingRequiredCapabilityError) do + Methods.ensure_capability!(Methods::COMPLETION_COMPLETE, {}) + end + assert_equal "Server does not support completions (required for completion/complete)", error.message + end + test "ensure_capability! for logging/setLevel raises an error if logging capability is not present" do error = assert_raises(Methods::MissingRequiredCapabilityError) do Methods.ensure_capability!(Methods::LOGGING_SET_LEVEL, {})