Class: RosettAi::Init::McpRegistrar

Inherits:
Object
  • Object
show all
Defined in:
lib/rosett_ai/init/mcp_registrar.rb

Overview

Registers the rosett-ai MCP server in Claude Code settings.json.

Called by raictl init --global to enable AI client auto-discovery of rosett-ai tools via the MCP protocol (DES-RAI-MCP-002).

The registration is idempotent: if the rosett-ai entry already exists, no changes are made.

Author:

  • hugo

  • claude

Constant Summary collapse

MCP_SERVER_NAME =
'rosett-ai'

Instance Method Summary collapse

Constructor Details

#initialize(settings_path: nil) ⇒ McpRegistrar

Returns a new instance of McpRegistrar.

Parameters:

  • settings_path (String) (defaults to: nil)

    path to Claude Code settings.json



24
25
26
# File 'lib/rosett_ai/init/mcp_registrar.rb', line 24

def initialize(settings_path: nil)
  @settings_path = settings_path || default_settings_path
end

Instance Method Details

#registerHash

Registers the rosett-ai MCP server in settings.json.

Returns:

  • (Hash)

    result with :action (:registered, :already_registered, :skipped) and :path



32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/rosett_ai/init/mcp_registrar.rb', line 32

def register
  return skip_result('Settings file not found') unless File.exist?(@settings_path)

  settings = read_settings
  return already_registered_result if registered?(settings)

  settings['mcpServers'] ||= {}
  settings['mcpServers'][MCP_SERVER_NAME] = server_entry
  write_settings(settings)

  { action: :registered, path: @settings_path }
rescue JSON::ParserError => e
  skip_result("Invalid JSON in settings: #{e.message}")
end