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
- .configured_servers(config) ⇒ Object
- .normalized_env(value) ⇒ Object
- .positive_number(value) ⇒ Object
Class Method Details
.client_from_settings(name, settings) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/kward/mcp/server_config.rb', line 25 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 |
# File 'lib/kward/mcp/server_config.rb', line 13 def clients_from_config(config) configured_servers(config).filter_map do |name, settings| client_from_settings(name, settings) end end |
.configured_servers(config) ⇒ Object
19 20 21 22 23 |
# File 'lib/kward/mcp/server_config.rb', line 19 def configured_servers(config) ConfigFiles.mcp_servers(config).select do |_name, settings| settings.is_a?(Hash) && settings["enabled"] != false end end |
.normalized_env(value) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/kward/mcp/server_config.rb', line 43 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
51 52 53 54 55 56 |
# File 'lib/kward/mcp/server_config.rb', line 51 def positive_number(value) number = value.to_f number.positive? ? number : nil rescue StandardError nil end |