Class: McpInspector::Transport::ClientAdapter
- Inherits:
-
BaseAdapter
- Object
- BaseAdapter
- McpInspector::Transport::ClientAdapter
- Defined in:
- lib/mcp_inspector/transport/client_adapter.rb
Instance Method Summary collapse
- #connect(server_config) ⇒ Object
- #disconnect ⇒ Object
- #execute_tool(name, arguments = {}) ⇒ Object
- #get_prompt(name, arguments = {}) ⇒ Object
-
#initialize(timeout: 30) ⇒ ClientAdapter
constructor
A new instance of ClientAdapter.
- #list_prompts ⇒ Object
- #list_resources ⇒ Object
- #list_tools ⇒ Object
- #read_resource(uri) ⇒ Object
- #server_info ⇒ Object
Methods inherited from BaseAdapter
Constructor Details
#initialize(timeout: 30) ⇒ ClientAdapter
Returns a new instance of ClientAdapter.
7 8 9 10 11 |
# File 'lib/mcp_inspector/transport/client_adapter.rb', line 7 def initialize(timeout: 30) super @client = nil @server_config = nil end |
Instance Method Details
#connect(server_config) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/mcp_inspector/transport/client_adapter.rb', line 13 def connect(server_config) @server_config = server_config begin with_timeout do case server_config.transport when "stdio" connect_stdio when "sse" connect_sse when "websocket" connect_websocket else raise ConnectionError, "Unsupported transport: #{server_config.transport}" end end @connected = true rescue => e @connected = false raise ConnectionError, "Failed to connect to #{server_config.name}: #{e.message}" end end |
#disconnect ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/mcp_inspector/transport/client_adapter.rb', line 36 def disconnect if @client && @client.respond_to?(:disconnect) @client.disconnect end @client = nil @connected = false end |
#execute_tool(name, arguments = {}) ⇒ Object
80 81 82 83 84 85 86 87 |
# File 'lib/mcp_inspector/transport/client_adapter.rb', line 80 def execute_tool(name, arguments = {}) with_timeout do response = @client.call_tool(name, arguments) normalize_response(response) end rescue => e raise OperationError, "Failed to execute tool '#{name}': #{e.message}" end |
#get_prompt(name, arguments = {}) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/mcp_inspector/transport/client_adapter.rb', line 102 def get_prompt(name, arguments = {}) if @client.respond_to?(:get_prompt) with_timeout do response = @client.get_prompt(name, arguments) normalize_response(response) end else raise OperationError, "Prompts are not supported by this server" end rescue => e raise OperationError, "Failed to get prompt '#{name}': #{e.message}" end |
#list_prompts ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/mcp_inspector/transport/client_adapter.rb', line 66 def list_prompts if @client.respond_to?(:list_prompts) with_timeout do response = @client.list_prompts normalize_response(response) end else # Return empty prompts list if not supported [] end rescue => e raise OperationError, "Failed to list prompts: #{e.message}" end |
#list_resources ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/mcp_inspector/transport/client_adapter.rb', line 53 def list_resources if @client.respond_to?(:list_resources) with_timeout do response = @client.list_resources normalize_response(response) end else [] end rescue => e raise OperationError, "Failed to list resources: #{e.message}" end |
#list_tools ⇒ Object
44 45 46 47 48 49 50 51 |
# File 'lib/mcp_inspector/transport/client_adapter.rb', line 44 def list_tools with_timeout do response = @client.list_tools normalize_response(response) end rescue => e raise OperationError, "Failed to list tools: #{e.message}" end |
#read_resource(uri) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/mcp_inspector/transport/client_adapter.rb', line 89 def read_resource(uri) if @client.respond_to?(:read_resource) with_timeout do response = @client.read_resource(uri) normalize_response(response) end else raise OperationError, "Resource reading is not supported by this server" end rescue => e raise OperationError, "Failed to read resource '#{uri}': #{e.message}" end |
#server_info ⇒ Object
115 116 117 118 119 120 121 122 |
# File 'lib/mcp_inspector/transport/client_adapter.rb', line 115 def server_info { name: @server_config.name, transport: @server_config.transport, connected: connected?, capabilities: detect_capabilities } end |