Module: ActionMCP
- Defined in:
- app/models/action_mcp/session.rb,
lib/action_mcp.rb,
lib/action_mcp/tool.rb,
app/models/action_mcp.rb,
lib/action_mcp/client.rb,
lib/action_mcp/engine.rb,
lib/action_mcp/prompt.rb,
lib/action_mcp/server.rb,
lib/action_mcp/content.rb,
lib/action_mcp/current.rb,
lib/action_mcp/gateway.rb,
lib/action_mcp/logging.rb,
lib/action_mcp/version.rb,
lib/action_mcp/resource.rb,
lib/action_mcp/callbacks.rb,
lib/action_mcp/transport.rb,
lib/action_mcp/capability.rb,
lib/action_mcp/renderable.rb,
lib/action_mcp/client/base.rb,
lib/action_mcp/gem_version.rb,
lib/action_mcp/test_helper.rb,
lib/action_mcp/client/roots.rb,
lib/action_mcp/client/tools.rb,
lib/action_mcp/content/base.rb,
lib/action_mcp/content/text.rb,
lib/action_mcp/server/roots.rb,
lib/action_mcp/server/tasks.rb,
lib/action_mcp/server/tools.rb,
lib/action_mcp/string_array.rb,
lib/action_mcp/base_response.rb,
lib/action_mcp/client/server.rb,
lib/action_mcp/configuration.rb,
lib/action_mcp/content/audio.rb,
lib/action_mcp/content/image.rb,
lib/action_mcp/integer_array.rb,
lib/action_mcp/logging/level.rb,
lib/action_mcp/logging/mixin.rb,
lib/action_mcp/logging/state.rb,
lib/action_mcp/registry_base.rb,
lib/action_mcp/tool_response.rb,
lib/action_mcp/client/catalog.rb,
lib/action_mcp/client/logging.rb,
lib/action_mcp/client/prompts.rb,
lib/action_mcp/client/toolbox.rb,
lib/action_mcp/log_subscriber.rb,
lib/action_mcp/logging/logger.rb,
lib/action_mcp/schema_helpers.rb,
lib/action_mcp/server/prompts.rb,
lib/action_mcp/tools_registry.rb,
lib/action_mcp/current_helpers.rb,
lib/action_mcp/filtered_logger.rb,
lib/action_mcp/prompt_response.rb,
lib/action_mcp/server/sampling.rb,
lib/action_mcp/client/blueprint.rb,
lib/action_mcp/client/messaging.rb,
lib/action_mcp/client/resources.rb,
lib/action_mcp/client/transport.rb,
lib/action_mcp/console_detector.rb,
lib/action_mcp/content/resource.rb,
lib/action_mcp/prompts_registry.rb,
lib/action_mcp/server/resources.rb,
lib/action_mcp/client/collection.rb,
lib/action_mcp/resource_response.rb,
lib/action_mcp/resource_template.rb,
lib/action_mcp/client/elicitation.rb,
lib/action_mcp/client/prompt_book.rb,
lib/action_mcp/gateway_identifier.rb,
lib/action_mcp/resource_callbacks.rb,
lib/action_mcp/server/elicitation.rb,
lib/action_mcp/server/error_aware.rb,
app/models/action_mcp/session/task.rb,
lib/action_mcp/gateway_identifiers.rb,
lib/action_mcp/logging/null_logger.rb,
lib/action_mcp/server/base_session.rb,
lib/action_mcp/server/capabilities.rb,
lib/action_mcp/client/session_store.rb,
lib/action_mcp/server/configuration.rb,
lib/action_mcp/server/session_store.rb,
lib/action_mcp/content/resource_link.rb,
lib/action_mcp/json_rpc_handler_base.rb,
lib/action_mcp/output_schema_builder.rb,
lib/action_mcp/server/base_messaging.rb,
lib/action_mcp/server/error_handling.rb,
lib/action_mcp/server/simple_pub_sub.rb,
lib/action_mcp/tagged_stream_logging.rb,
lib/action_mcp/uri_ambiguity_checker.rb,
app/models/action_mcp/session/message.rb,
lib/action_mcp/server/handlers/router.rb,
lib/action_mcp/types/float_array_type.rb,
app/jobs/action_mcp/tool_execution_job.rb,
app/models/action_mcp/session/resource.rb,
lib/action_mcp/client/json_rpc_handler.rb,
lib/action_mcp/client/request_timeouts.rb,
lib/action_mcp/server/json_rpc_handler.rb,
lib/action_mcp/server/sampling_request.rb,
lib/action_mcp/client/streamable_client.rb,
lib/action_mcp/server/messaging_service.rb,
lib/action_mcp/server/solid_mcp_adapter.rb,
lib/action_mcp/server/transport_handler.rb,
app/models/action_mcp/application_record.rb,
lib/action_mcp/client/test_session_store.rb,
lib/action_mcp/server/base_session_store.rb,
lib/action_mcp/server/response_collector.rb,
lib/action_mcp/server/test_session_store.rb,
lib/action_mcp/server/registry_management.rb,
app/models/action_mcp/session/subscription.rb,
lib/action_mcp/resource_templates_registry.rb,
lib/action_mcp/client/session_store_factory.rb,
lib/action_mcp/server/handlers/task_handler.rb,
lib/action_mcp/server/handlers/tool_handler.rb,
lib/action_mcp/server/session_store_factory.rb,
lib/action_mcp/client/volatile_session_store.rb,
lib/action_mcp/server/volatile_session_store.rb,
lib/action_mcp/server/handlers/prompt_handler.rb,
lib/generators/action_mcp/tool/tool_generator.rb,
lib/action_mcp/instrumentation/instrumentation.rb,
lib/action_mcp/server/handlers/logging_handler.rb,
lib/action_mcp/client/streamable_http_transport.rb,
lib/action_mcp/server/handlers/resource_handler.rb,
app/controllers/action_mcp/application_controller.rb,
lib/action_mcp/client/active_record_session_store.rb,
lib/action_mcp/instrumentation/controller_runtime.rb,
lib/action_mcp/server/active_record_session_store.rb,
lib/generators/action_mcp/prompt/prompt_generator.rb,
app/models/concerns/action_mcp/mcp_console_helpers.rb,
app/models/concerns/action_mcp/mcp_message_inspect.rb,
lib/action_mcp/test_helper/session_store_assertions.rb,
lib/generators/action_mcp/install/install_generator.rb,
lib/action_mcp/gateway_identifiers/devise_identifier.rb,
lib/action_mcp/gateway_identifiers/warden_identifier.rb,
lib/action_mcp/gateway_identifiers/api_key_identifier.rb,
lib/action_mcp/instrumentation/resource_instrumentation.rb,
lib/action_mcp/gateway_identifiers/request_env_identifier.rb,
lib/generators/action_mcp/identifier/identifier_generator.rb,
lib/action_mcp/test_helper/progress_notification_assertions.rb,
lib/generators/action_mcp/resource_template/resource_template_generator.rb
Overview
require_relative ‘../../../test/dummy/app/assets/stylesheets/pwa.tailwind.bootstrap.css’
Defined Under Namespace
Modules: Callbacks, Client, ConsoleDetector, Content, CurrentHelpers, GatewayIdentifiers, Generators, Instrumentation, Logging, MCPConsoleHelpers, MCPMessageInspect, Renderable, ResourceCallbacks, SchemaHelpers, Server, TaggedStreamLogging, TestHelper, Transport, Types, UriAmbiguityChecker Classes: ApplicationController, ApplicationRecord, BaseResponse, Capability, Configuration, Current, Engine, FilteredLogger, Gateway, GatewayIdentifier, IntegerArray, JsonRpcHandlerBase, LogSubscriber, OutputSchemaBuilder, Prompt, PromptResponse, PromptsRegistry, RegistryBase, Resource, ResourceResponse, ResourceTemplate, ResourceTemplatesRegistry, Session, StringArray, StructuredContentValidationError, Tool, ToolExecutionJob, ToolResponse, ToolsRegistry, UnauthorizedError
Constant Summary collapse
- SUPPORTED_VERSIONS =
Protocol version constants
[ "2025-11-25", # The Task Master - Tasks, icons, tool naming, polling SSE "2025-06-18" # Dr. Identity McBouncer - elicitation, structured output, resource links ].freeze
- LATEST_VERSION =
SUPPORTED_VERSIONS.first.freeze
- DEFAULT_PROTOCOL_VERSION =
Default to previous stable version for backwards compatibility
"2025-06-18"- VERSION =
"0.102.0"
Class Attribute Summary collapse
-
.logger ⇒ Object
Returns the value of attribute logger.
Class Method Summary collapse
-
.available_prompts ⇒ ActionMCP::RegistryBase::RegistryScope
Returns the available prompts.
-
.available_tools ⇒ ActionMCP::RegistryBase::RegistryScope
Returns the available tools.
-
.configuration ⇒ Object
Returns the configuration instance.
-
.configure {|configuration| ... } ⇒ Object
Configures the ActionMCP module.
-
.create_client(endpoint, transport: :streamable_http, session_store: nil, session_id: nil, protocol_version: nil, logger: Logger.new($stdout), **options) ⇒ Client::Base
Creates a client appropriate for the given endpoint.
-
.gem_version ⇒ Gem::Version
Returns the currently loaded version of Active MCP as a
Gem::Version. -
.prompts ⇒ Hash
Returns the prompts registry.
-
.server ⇒ #call
Returns a Rack-compatible application for serving MCP requests This makes ActionMCP.server work similar to ActionCable.server.
- .table_name_prefix ⇒ Object
-
.thread_profiles ⇒ Object
Thread-local storage for active profiles.
-
.tools ⇒ Hash
Returns the tools registry.
- .version ⇒ Object
- .with_profile(profile_name) ⇒ Object
Class Attribute Details
.logger ⇒ Object
Returns the value of attribute logger.
405 406 407 |
# File 'lib/action_mcp/configuration.rb', line 405 def logger @logger end |
Class Method Details
.available_prompts ⇒ ActionMCP::RegistryBase::RegistryScope
Returns the available prompts.
103 104 105 |
# File 'lib/action_mcp.rb', line 103 def available_prompts PromptsRegistry.available_prompts end |
.available_tools ⇒ ActionMCP::RegistryBase::RegistryScope
Returns the available tools.
96 97 98 |
# File 'lib/action_mcp.rb', line 96 def available_tools ToolsRegistry.available_tools end |
.configuration ⇒ Object
Returns the configuration instance.
64 65 66 |
# File 'lib/action_mcp.rb', line 64 def configuration @configuration ||= Configuration.new end |
.configure {|configuration| ... } ⇒ Object
Configures the ActionMCP module.
72 73 74 |
# File 'lib/action_mcp.rb', line 72 def configure yield(configuration) end |
.create_client(endpoint, transport: :streamable_http, session_store: nil, session_id: nil, protocol_version: nil, logger: Logger.new($stdout), **options) ⇒ Client::Base
Creates a client appropriate for the given endpoint.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/action_mcp/client.rb', line 38 def self.create_client(endpoint, transport: :streamable_http, session_store: nil, session_id: nil, protocol_version: nil, logger: Logger.new($stdout), **) unless endpoint =~ %r{\Ahttps?://} raise ArgumentError, "Only HTTP(S) endpoints are supported. STDIO and other transports are not supported." end # Create session store store = Client::SessionStoreFactory.create(session_store, **) # Create transport transport_instance = create_transport(transport, endpoint, session_store: store, session_id: session_id, protocol_version: protocol_version, logger: logger, **) logger.info("Creating #{transport} client for endpoint: #{endpoint}") # Pass session_id and protocol_version to the client Client::Base.new(transport: transport_instance, logger: logger, session_id: session_id, protocol_version: protocol_version, **) end |
.gem_version ⇒ Gem::Version
Returns the currently loaded version of Active MCP as a Gem::Version.
7 8 9 |
# File 'lib/action_mcp/gem_version.rb', line 7 def self.gem_version Gem::Version.new VERSION end |
.prompts ⇒ Hash
Returns the prompts registry.
89 90 91 |
# File 'lib/action_mcp.rb', line 89 def prompts PromptsRegistry.prompts end |
.server ⇒ #call
Returns a Rack-compatible application for serving MCP requests This makes ActionMCP.server work similar to ActionCable.server
49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/action_mcp.rb', line 49 def server @server ||= begin # Initialize the actual server for PubSub. # The return value is intentionally discarded as only the side effects are needed. Server.server # Return the Engine as the Rack application # The Engine will handle routing to the UnifiedController Engine end end |
.table_name_prefix ⇒ Object
4 5 6 |
# File 'app/models/action_mcp.rb', line 4 def self.table_name_prefix "action_mcp_" end |
.thread_profiles ⇒ Object
Thread-local storage for active profiles
408 409 410 |
# File 'lib/action_mcp/configuration.rb', line 408 def thread_profiles @thread_profiles ||= Concurrent::ThreadLocalVar.new(nil) end |
.tools ⇒ Hash
Returns the tools registry.
82 83 84 |
# File 'lib/action_mcp.rb', line 82 def tools ToolsRegistry.tools end |
.version ⇒ Object
8 |
# File 'lib/action_mcp/version.rb', line 8 alias version gem_version |
.with_profile(profile_name) ⇒ Object
422 423 424 425 426 427 428 429 430 431 432 433 434 435 |
# File 'lib/action_mcp/configuration.rb', line 422 def with_profile(profile_name) previous_profile = thread_profiles.value thread_profiles.value = profile_name # Apply the profile options when switching profiles configuration&. yield if block_given? ensure thread_profiles.value = previous_profile if block_given? # Reapply the previous profile's options when switching back configuration. if block_given? && configuration end |