@@ -36,8 +36,8 @@ def initialize(name:, transport_type:, request_timeout: 8000, reverse_proxy_url:
3636 notification_request
3737 end
3838
39- def request ( body , add_id : true , wait_for_response : true , **options )
40- @transport . request ( body , add_id : add_id , wait_for_response : wait_for_response , **options )
39+ def request ( body , **options )
40+ @transport . request ( body , **options )
4141 end
4242
4343 def tools ( refresh : false )
@@ -50,6 +50,11 @@ def resources(refresh: false)
5050 @resources ||= fetch_and_create_resources
5151 end
5252
53+ def resource_templates ( refresh : false )
54+ @resource_templates = nil if refresh
55+ @resource_templates ||= fetch_and_create_resources ( set_as_template : true )
56+ end
57+
5358 def execute_tool ( name :, parameters :)
5459 response = execute_tool_request ( name : name , parameters : parameters )
5560 result = response [ "result" ]
@@ -59,8 +64,12 @@ def execute_tool(name:, parameters:)
5964 result [ "content" ] . map { |content | content [ "text" ] } . join ( "\n " )
6065 end
6166
62- def resource_read_request ( uri :)
63- @resource_read_response = RubyLLM ::MCP ::Requests ::ResourceRead . new ( self , uri : uri ) . call
67+ def resource_read_request ( **args )
68+ RubyLLM ::MCP ::Requests ::ResourceRead . new ( self , **args ) . call
69+ end
70+
71+ def completion ( **args )
72+ RubyLLM ::MCP ::Requests ::Completion . new ( self , **args ) . call
6473 end
6574
6675 private
@@ -71,23 +80,23 @@ def initialize_request
7180 end
7281
7382 def notification_request
74- @notification_response = RubyLLM ::MCP ::Requests ::Notification . new ( self ) . call
83+ RubyLLM ::MCP ::Requests ::Notification . new ( self ) . call
7584 end
7685
7786 def tool_list_request
78- @tool_request = RubyLLM ::MCP ::Requests ::ToolList . new ( self ) . call
87+ RubyLLM ::MCP ::Requests ::ToolList . new ( self ) . call
7988 end
8089
81- def execute_tool_request ( name : , parameters : )
82- @execute_tool_response = RubyLLM ::MCP ::Requests ::ToolCall . new ( self , name : name , parameters : parameters ) . call
90+ def execute_tool_request ( ** args )
91+ RubyLLM ::MCP ::Requests ::ToolCall . new ( self , ** args ) . call
8392 end
8493
8594 def resources_list_request
86- @resources_request = RubyLLM ::MCP ::Requests ::ResourceList . new ( self ) . call
95+ RubyLLM ::MCP ::Requests ::ResourceList . new ( self ) . call
8796 end
8897
8998 def resource_template_list_request
90- @resource_template_list_response = RubyLLM ::MCP ::Requests ::ResourceTemplateList . new ( self ) . call
99+ RubyLLM ::MCP ::Requests ::ResourceTemplateList . new ( self ) . call
91100 end
92101
93102 def fetch_and_create_tools
@@ -99,12 +108,12 @@ def fetch_and_create_tools
99108 end
100109 end
101110
102- def fetch_and_create_resources
111+ def fetch_and_create_resources ( set_as_template : false )
103112 resources_response = resources_list_request
104113 resources_response = resources_response [ "result" ] [ "resources" ]
105114
106115 @resources = resources_response . map do |resource |
107- RubyLLM ::MCP ::Resource . new ( self , resource )
116+ RubyLLM ::MCP ::Resource . new ( self , resource , template : set_as_template )
108117 end
109118 end
110119 end
0 commit comments