Class: RosettAi::Mcp::Admin::SchemaValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/rosett_ai/mcp/admin/schema_validator.rb

Overview

Validates MCP server configurations against JSON Schema.

Uses conf/schemas/mcp_server_schema.json for validation.

Author:

  • hugo

  • claude

Instance Method Summary collapse

Constructor Details

#initialize(schema_path: nil) ⇒ SchemaValidator

Returns a new instance of SchemaValidator.

Parameters:

  • schema_path (Pathname, nil) (defaults to: nil)

    override schema file path



19
20
21
# File 'lib/rosett_ai/mcp/admin/schema_validator.rb', line 19

def initialize(schema_path: nil)
  @schema_path = schema_path || RosettAi.root.join('conf', 'schemas', 'mcp_server_schema.json')
end

Instance Method Details

#validate(server) ⇒ Hash

Validates a server configuration hash.

Parameters:

  • server (Hash)

    server configuration

Returns:

  • (Hash)

    result with :valid and :errors keys



27
28
29
30
31
32
33
34
35
# File 'lib/rosett_ai/mcp/admin/schema_validator.rb', line 27

def validate(server)
  schema = load_schema
  return { valid: true, errors: [] } unless schema

  data = normalize(server)
  errors = schema.validate(data).map { |e| e['error'] }

  { valid: errors.empty?, errors: errors }
end

#validate_all(registry) ⇒ Array<Hash>

Validates all servers in a registry.

Parameters:

  • registry (Registry)

    server registry

Returns:

  • (Array<Hash>)

    validation results



41
42
43
44
45
46
# File 'lib/rosett_ai/mcp/admin/schema_validator.rb', line 41

def validate_all(registry)
  registry.list.map do |server|
    result = validate(server)
    result.merge(name: server[:name])
  end
end