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
|
.client ⇒ Object
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_connection ⇒ Object
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
|
.config ⇒ Object
Also known as:
configuration
91
92
93
|
# File 'lib/ruby_llm/mcp.rb', line 91
def config
@config ||= Configuration.new
end
|
87
88
89
|
# File 'lib/ruby_llm/mcp.rb', line 87
def configure
yield config
end
|
.establish_connection ⇒ Object
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
|
.logger ⇒ Object
98
99
100
|
# File 'lib/ruby_llm/mcp.rb', line 98
def logger
config.logger
end
|
.mcp_configurations ⇒ Object
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
|
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
|