Module: Kward::MCP::ServerConfig
- Defined in:
- lib/kward/mcp/server_config.rb
Overview
Builds MCP clients from Kward configuration.
Class Method Summary collapse
- .client_from_settings(name, settings) ⇒ Object
- .clients_from_config(config) ⇒ Object
- .normalized_env(value) ⇒ Object
- .positive_number(value) ⇒ Object
Class Method Details
.client_from_settings(name, settings) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/kward/mcp/server_config.rb', line 21 def client_from_settings(name, settings) return nil unless settings.is_a?(Hash) return nil if settings["enabled"] == false command = settings["command"].to_s return nil if command.empty? Client.new( name: name, transport: StdioTransport.new( command: command, args: settings["args"] || [], env: normalized_env(settings["env"]), timeout_seconds: positive_number(settings["timeout_seconds"] || settings["timeoutSeconds"]) ) ) end |
.clients_from_config(config) ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/kward/mcp/server_config.rb', line 13 def clients_from_config(config) servers = ConfigFiles.mcp_servers(config) servers.filter_map do |name, settings| client_from_settings(name, settings) end end |
.normalized_env(value) ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/kward/mcp/server_config.rb', line 39 def normalized_env(value) return {} unless value.is_a?(Hash) value.each_with_object({}) do |(key, item), env| env[key.to_s] = item.to_s end end |
.positive_number(value) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/kward/mcp/server_config.rb', line 47 def positive_number(value) number = value.to_f number.positive? ? number : nil rescue StandardError nil end |