Class: MCP::Rails::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/mcp/rails/configuration.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/mcp/rails/configuration.rb', line 18

def initialize
  # Server defaults
  @server_name = "mcp-server"
  @server_version = "1.0.0"

  # Output defaults
  @output_directory = ::Rails.root.join("tmp", "mcp") if defined?(::Rails)
  @bypass_key_path = ::Rails.root.join("tmp", "mcp", "bypass_key.txt") if defined?(::Rails)

  # Environment variables to include in tool calls
  @env_vars = []

  # Initialize engine configurations hash
  @engine_configurations = {}
end

Instance Attribute Details

#bypass_key_pathObject



52
53
54
# File 'lib/mcp/rails/configuration.rb', line 52

def bypass_key_path
  Pathname.new(@bypass_key_path || ::Rails.root.join("tmp", "mcp", "bypass_key.txt"))
end

#engine_configurationsObject (readonly)

Engine configurations



16
17
18
# File 'lib/mcp/rails/configuration.rb', line 16

def engine_configurations
  @engine_configurations
end

#env_varsObject

Environment variables to include in tool calls



13
14
15
# File 'lib/mcp/rails/configuration.rb', line 13

def env_vars
  @env_vars
end

#output_directoryObject



56
57
58
# File 'lib/mcp/rails/configuration.rb', line 56

def output_directory
  Pathname.new(@output_directory || ::Rails.root.join("tmp", "mcp"))
end

#server_nameObject

Server configuration



7
8
9
# File 'lib/mcp/rails/configuration.rb', line 7

def server_name
  @server_name
end

#server_versionObject

Server configuration



7
8
9
# File 'lib/mcp/rails/configuration.rb', line 7

def server_version
  @server_version
end

Instance Method Details

#base_urlObject



34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/mcp/rails/configuration.rb', line 34

def base_url
  return @base_url if defined?(@base_url)

  if defined?(::Rails)
    mailer_options = ::Rails.application.config.action_mailer.default_url_options || {}
    host = mailer_options[:host] || "localhost"
    port = mailer_options[:port] || "3000"
    protocol = mailer_options[:protocol] || "http"
    "#{protocol}://#{host}:#{port}"
  else
    "http://localhost:3000"
  end
end

#base_url=(url) ⇒ Object



48
49
50
# File 'lib/mcp/rails/configuration.rb', line 48

def base_url=(url)
  @base_url = url
end

#for_engine(engine) ⇒ Object

Get configuration for a specific engine



67
68
69
70
71
72
73
74
75
# File 'lib/mcp/rails/configuration.rb', line 67

def for_engine(engine)
  return self unless engine
  engine_config = @engine_configurations[engine.engine_name]

  dup.tap do |config|
    config.server_name = engine.engine_name
    config.instance_variable_set(:@env_vars, (self.env_vars + engine_config.env_vars).uniq)
  end
end

#register_engine(engine, settings = {}) ⇒ Object

Register an engine’s configuration



61
62
63
64
# File 'lib/mcp/rails/configuration.rb', line 61

def register_engine(engine, settings = {})
  engine_name = engine.respond_to?(:engine_name) ? engine.engine_name : engine
  @engine_configurations[engine_name] = EngineConfiguration.new(settings)
end