Class: RailsAiBridge::Tools::ListRegistry
- Defined in:
- lib/rails_ai_bridge/tools/list_registry.rb
Overview
MCP tool for querying the skill pack registry catalog.
A single entry point replacing the previous +rails_list_skills+, +rails_list_agents+, and +rails_list_packs+ tools. The required +type+ parameter routes to the appropriate catalog view:
- type: "skills" — all available skills across loaded packs
- type: "agents" — all available agents/workflows
- type: "packs" — loaded packs with version, priority, and summary
Defined Under Namespace
Classes: RegistryCatalogFormatter
Constant Summary collapse
- DESCRIPTION_MAX_LENGTH =
80- SETUP_DOC_PATH =
'docs/skill-registry-guide.md'- SETUP_MESSAGE =
<<~MSG.freeze No registry manifest found at `%<path>s`. To use skill registry tools, create a registry manifest file. See `#{SETUP_DOC_PATH}` for a step-by-step guide. Quick start — add `config/rails_ai_bridge_registry.json` to your Rails app: ```json { "version": "1.0.0", "packs": {}, "default_stack": [] } ``` Then configure the registry in `config/initializers/rails_ai_bridge.rb`: ```ruby RailsAiBridge.configure do |config| config.registry.registry_manifest_path = "config/rails_ai_bridge_registry.json" end ``` Once configured, add packs and run `rails ai:skills:list` to verify. MSG
- UNKNOWN_TYPE_MESSAGE =
'Unknown type `%<type>s`. Valid values: "skills", "agents", "packs".'
Class Method Summary collapse
-
.call(type:, pack: nil, _server_context: nil) ⇒ MCP::Tool::Response
Formatted catalog or a setup/error message.
Methods inherited from BaseTool
cached_context, cached_section, config, rails_app, reset_cache!, text_response
Class Method Details
.call(type:, pack: nil, _server_context: nil) ⇒ MCP::Tool::Response
Returns formatted catalog or a setup/error message.
83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/rails_ai_bridge/tools/list_registry.rb', line 83 def self.call(type:, pack: nil, _server_context: nil) # The input_schema enum constraint above rejects unknown types before this # method is called. The guard below is retained as a defence-in-depth # fallback for callers that bypass the MCP SDK (e.g. direct Ruby tests or # future transport layers that skip schema validation). return text_response(format(UNKNOWN_TYPE_MESSAGE, type: type)) unless %w[skills agents packs].include?(type) resolver = Registry.build_resolver return text_response(format(SETUP_MESSAGE, path: manifest_path)) unless resolver text_response(RegistryCatalogFormatter.new(resolver, type: type, pack_filter: pack).format) end |