Class: MCPClient::ServerFactory
- Inherits:
-
Object
- Object
- MCPClient::ServerFactory
- Defined in:
- lib/mcp_client/server_factory.rb
Overview
Factory for creating MCP server instances based on configuration
Class Method Summary collapse
-
.create(config, logger: nil) ⇒ MCPClient::ServerBase
Create a server instance based on configuration.
-
.create_sse_server(config, logger) ⇒ MCPClient::ServerSSE
Create an SSE-based server.
-
.create_stdio_server(config, logger) ⇒ MCPClient::ServerStdio
Create a stdio-based server.
-
.prepare_command(config) ⇒ String, Array
Prepare command by combining command and args.
Class Method Details
.create(config, logger: nil) ⇒ MCPClient::ServerBase
Create a server instance based on configuration
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/mcp_client/server_factory.rb', line 10 def self.create(config, logger: nil) logger_to_use = config[:logger] || logger case config[:type] when 'stdio' create_stdio_server(config, logger_to_use) when 'sse' create_sse_server(config, logger_to_use) else raise ArgumentError, "Unknown server type: #{config[:type]}" end end |
.create_sse_server(config, logger) ⇒ MCPClient::ServerSSE
Create an SSE-based server
45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/mcp_client/server_factory.rb', line 45 def self.create_sse_server(config, logger) # Handle both :url and :base_url (config parser uses :url) base_url = config[:base_url] || config[:url] MCPClient::ServerSSE.new( base_url: base_url, headers: config[:headers] || {}, read_timeout: config[:read_timeout] || 30, ping: config[:ping] || 10, retries: config[:retries] || 0, retry_backoff: config[:retry_backoff] || 1, name: config[:name], logger: logger ) end |
.create_stdio_server(config, logger) ⇒ MCPClient::ServerStdio
Create a stdio-based server
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/mcp_client/server_factory.rb', line 27 def self.create_stdio_server(config, logger) cmd = prepare_command(config) MCPClient::ServerStdio.new( command: cmd, retries: config[:retries] || 0, retry_backoff: config[:retry_backoff] || 1, read_timeout: config[:read_timeout] || MCPClient::ServerStdio::READ_TIMEOUT, name: config[:name], logger: logger, env: config[:env] || {} ) end |
.prepare_command(config) ⇒ String, Array
Prepare command by combining command and args
63 64 65 66 67 68 69 |
# File 'lib/mcp_client/server_factory.rb', line 63 def self.prepare_command(config) if config[:args] && !config[:args].empty? [config[:command]] + Array(config[:args]) else config[:command] end end |