diff --git a/lib/model_context_protocol/server.rb b/lib/model_context_protocol/server.rb index e707566..1bfc882 100644 --- a/lib/model_context_protocol/server.rb +++ b/lib/model_context_protocol/server.rb @@ -20,7 +20,8 @@ module ModelContextProtocol include Instrumentation - attr_accessor :name, :tools, :prompts, :resources, :server_context, :configuration, :capabilities + attr_writer :capabilities + attr_accessor :name, :tools, :prompts, :resources, :server_context, :configuration def initialize( name: "model_context_protocol", @@ -30,7 +31,7 @@ module ModelContextProtocol resource_templates: [], server_context: nil, configuration: nil, - capabilities: { prompts: {}, resources: {}, tools: {} } + capabilities: nil ) @name = name @tools = tools.to_h { |t| [t.name_value, t] } @@ -40,7 +41,6 @@ module ModelContextProtocol @resource_index = index_resources_by_uri(resources) @server_context = server_context @configuration = ModelContextProtocol.configuration.merge(configuration) - @capabilities = capabilities @handlers = { Methods::RESOURCES_LIST => method(:list_resources), @@ -60,6 +60,10 @@ module ModelContextProtocol } end + def capabilities + @capabilities ||= determine_capabilities + end + def handle(request) JsonRpcHandler.handle(request) do |method| handle_request(request, method) @@ -150,6 +154,10 @@ module ModelContextProtocol } end + def determine_capabilities + { prompts: {}, resources: {}, tools: {} } + end + def server_info @server_info ||= { name:,