Module: RubyLLM::MCP

Defined in:
lib/ruby_llm/mcp.rb,
lib/ruby_llm/mcp/auth.rb,
lib/ruby_llm/mcp/task.rb,
lib/ruby_llm/mcp/tool.rb,
lib/ruby_llm/mcp/error.rb,
lib/ruby_llm/mcp/roots.rb,
lib/ruby_llm/mcp/client.rb,
lib/ruby_llm/mcp/errors.rb,
lib/ruby_llm/mcp/native.rb,
lib/ruby_llm/mcp/prompt.rb,
lib/ruby_llm/mcp/result.rb,
lib/ruby_llm/mcp/sample.rb,
lib/ruby_llm/mcp/content.rb,
lib/ruby_llm/mcp/logging.rb,
lib/ruby_llm/mcp/railtie.rb,
lib/ruby_llm/mcp/version.rb,
lib/ruby_llm/mcp/handlers.rb,
lib/ruby_llm/mcp/progress.rb,
lib/ruby_llm/mcp/resource.rb,
lib/ruby_llm/mcp/attachment.rb,
lib/ruby_llm/mcp/completion.rb,
lib/ruby_llm/mcp/elicitation.rb,
lib/ruby_llm/mcp/auth/security.rb,
lib/ruby_llm/mcp/configuration.rb,
lib/ruby_llm/mcp/native/client.rb,
lib/ruby_llm/mcp/auth/discoverer.rb,
lib/ruby_llm/mcp/native/json_rpc.rb,
lib/ruby_llm/mcp/native/messages.rb,
lib/ruby_llm/mcp/native/protocol.rb,
lib/ruby_llm/mcp/auth/url_builder.rb,
lib/ruby_llm/mcp/handlers/promise.rb,
lib/ruby_llm/mcp/native/transport.rb,
lib/ruby_llm/mcp/schema_validator.rb,
lib/ruby_llm/mcp/resource_template.rb,
lib/ruby_llm/mcp/auth/browser/pages.rb,
lib/ruby_llm/mcp/auth/token_manager.rb,
lib/ruby_llm/mcp/auth/browser/opener.rb,
lib/ruby_llm/mcp/auth/memory_storage.rb,
lib/ruby_llm/mcp/auth/oauth_provider.rb,
lib/ruby_llm/mcp/extensions/registry.rb,
lib/ruby_llm/mcp/native/notification.rb,
lib/ruby_llm/mcp/server_capabilities.rb,
lib/ruby_llm/mcp/auth/session_manager.rb,
lib/ruby_llm/mcp/extensions/constants.rb,
lib/ruby_llm/mcp/native/task_registry.rb,
lib/ruby_llm/mcp/notification_handler.rb,
lib/ruby_llm/mcp/adapters/base_adapter.rb,
lib/ruby_llm/mcp/auth/client_registrar.rb,
lib/ruby_llm/mcp/native/transports/sse.rb,
lib/ruby_llm/mcp/handlers/async_response.rb,
lib/ruby_llm/mcp/native/messages/helpers.rb,
lib/ruby_llm/mcp/native/response_handler.rb,
lib/ruby_llm/mcp/native/transports/stdio.rb,
lib/ruby_llm/mcp/adapters/mcp_sdk_adapter.rb,
lib/ruby_llm/mcp/auth/browser/http_server.rb,
lib/ruby_llm/mcp/extensions/configuration.rb,
lib/ruby_llm/mcp/native/messages/requests.rb,
lib/ruby_llm/mcp/adapters/ruby_llm_adapter.rb,
lib/ruby_llm/mcp/extensions/apps/constants.rb,
lib/ruby_llm/mcp/handlers/concerns/logging.rb,
lib/ruby_llm/mcp/handlers/concerns/options.rb,
lib/ruby_llm/mcp/handlers/sampling_handler.rb,
lib/ruby_llm/mcp/native/messages/responses.rb,
lib/ruby_llm/mcp/auth/grant_strategies/base.rb,
lib/ruby_llm/mcp/auth/http_response_handler.rb,
lib/ruby_llm/mcp/handlers/approval_decision.rb,
lib/ruby_llm/mcp/handlers/concerns/timeouts.rb,
lib/ruby_llm/mcp/auth/browser_oauth_provider.rb,
lib/ruby_llm/mcp/auth/transport_oauth_helper.rb,
lib/ruby_llm/mcp/handlers/concerns/lifecycle.rb,
lib/ruby_llm/mcp/auth/browser/callback_server.rb,
lib/ruby_llm/mcp/handlers/elicitation_handler.rb,
lib/ruby_llm/mcp/native/cancellable_operation.rb,
lib/ruby_llm/mcp/auth/browser/callback_handler.rb,
lib/ruby_llm/mcp/extensions/apps/tool_metadata.rb,
lib/ruby_llm/mcp/handlers/elicitation_registry.rb,
lib/ruby_llm/mcp/native/messages/notifications.rb,
lib/ruby_llm/mcp/handlers/concerns/guard_checks.rb,
lib/ruby_llm/mcp/handlers/concerns/error_handling.rb,
lib/ruby_llm/mcp/handlers/concerns/tool_filtering.rb,
lib/ruby_llm/mcp/extensions/apps/resource_metadata.rb,
lib/ruby_llm/mcp/handlers/concerns/async_execution.rb,
lib/ruby_llm/mcp/handlers/concerns/model_filtering.rb,
lib/ruby_llm/mcp/native/transports/streamable_http.rb,
lib/ruby_llm/mcp/native/transports/support/timeout.rb,
lib/generators/ruby_llm/mcp/oauth/install_generator.rb,
lib/ruby_llm/mcp/auth/flows/authorization_code_flow.rb,
lib/ruby_llm/mcp/auth/flows/client_credentials_flow.rb,
lib/ruby_llm/mcp/handlers/concerns/approval_actions.rb,
lib/ruby_llm/mcp/handlers/concerns/sampling_actions.rb,
lib/ruby_llm/mcp/handlers/human_in_the_loop_handler.rb,
lib/ruby_llm/mcp/handlers/human_in_the_loop_registry.rb,
lib/generators/ruby_llm/mcp/install/install_generator.rb,
lib/ruby_llm/mcp/handlers/concerns/elicitation_actions.rb,
lib/ruby_llm/mcp/native/transports/support/http_client.rb,
lib/ruby_llm/mcp/handlers/concerns/registry_integration.rb,
lib/ruby_llm/mcp/native/transports/support/rate_limiter.rb,
lib/ruby_llm/mcp/auth/grant_strategies/authorization_code.rb,
lib/ruby_llm/mcp/auth/grant_strategies/client_credentials.rb

Defined Under Namespace

Modules: Adapters, Auth, Errors, Extensions, Generators, Handlers, Logging, Native, OAuth, SchemaValidator Classes: Annotation, Attachment, Client, Completion, Configuration, Content, Elicitation, Error, Notification, NotificationHandler, Progress, Prompt, Railtie, Resource, ResourceTemplate, Result, Roots, Sample, ServerCapabilities, Task, Tool

Constant Summary collapse

VERSION =
"1.0.1"

Class Method Summary collapse

Class Method Details

.add_client(options) ⇒ Object



39
40
41
# File 'lib/ruby_llm/mcp.rb', line 39

def add_client(options)
  clients[options[:name]] ||= Client.new(**options)
end

.clientObject



49
50
51
# File 'lib/ruby_llm/mcp.rb', line 49

def client(...)
  Client.new(...)
end

.clients(config = RubyLLM::MCP.config.mcp_configuration) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/ruby_llm/mcp.rb', line 29

def clients(config = RubyLLM::MCP.config.mcp_configuration)
  if @clients.nil?
    @clients = {}
    config.map do |options|
      @clients[options[:name]] ||= Client.new(**options)
    end
  end
  @clients
end

.close_connectionObject



66
67
68
69
70
# File 'lib/ruby_llm/mcp.rb', line 66

def close_connection
  clients.each_value do |client|
    client.stop if client.alive?
  end
end

.configObject Also known as: configuration



91
92
93
# File 'lib/ruby_llm/mcp.rb', line 91

def config
  @config ||= Configuration.new
end

.configure {|config| ... } ⇒ Object

Yields:



87
88
89
# File 'lib/ruby_llm/mcp.rb', line 87

def configure
  yield config
end

.establish_connectionObject



53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/ruby_llm/mcp.rb', line 53

def establish_connection(&)
  clients.each_value(&:start)
  if block_given?
    begin
      yield clients
    ensure
      close_connection
    end
  else
    clients
  end
end

.loggerObject



98
99
100
# File 'lib/ruby_llm/mcp.rb', line 98

def logger
  config.logger
end

.mcp_configurationsObject



81
82
83
84
85
# File 'lib/ruby_llm/mcp.rb', line 81

def mcp_configurations
  config.mcp_configuration.each_with_object({}) do |config, acc|
    acc[config[:name]] = config
  end
end

.remove_client(name) ⇒ Object



43
44
45
46
47
# File 'lib/ruby_llm/mcp.rb', line 43

def remove_client(name)
  client = clients.delete(name)
  client&.stop
  client
end

.tools(blacklist: [], whitelist: []) ⇒ Object



72
73
74
75
76
77
78
79
# File 'lib/ruby_llm/mcp.rb', line 72

def tools(blacklist: [], whitelist: [])
  tools = @clients.values.map(&:tools)
                  .flatten
                  .reject { |tool| blacklist.include?(tool.name) }

  tools = tools.select { |tool| whitelist.include?(tool.name) } if whitelist.any?
  tools.uniq(&:name)
end