actionmcp 0.71.0 → 0.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +186 -15
- data/app/controllers/action_mcp/application_controller.rb +47 -40
- data/app/controllers/action_mcp/oauth/endpoints_controller.rb +11 -10
- data/app/controllers/action_mcp/oauth/metadata_controller.rb +6 -10
- data/app/controllers/action_mcp/oauth/registration_controller.rb +15 -20
- data/app/models/action_mcp/oauth_client.rb +7 -5
- data/app/models/action_mcp/oauth_token.rb +2 -1
- data/app/models/action_mcp/session.rb +40 -5
- data/config/routes.rb +4 -2
- data/db/migrate/20250512154359_consolidated_migration.rb +3 -3
- data/db/migrate/20250608112101_add_oauth_to_sessions.rb +17 -8
- data/db/migrate/20250708105124_create_action_mcp_oauth_clients.rb +7 -5
- data/db/migrate/20250708105226_create_action_mcp_oauth_tokens.rb +3 -1
- data/db/migrate/20250715070713_add_consents_to_action_mcp_sess.rb +7 -0
- data/lib/action_mcp/base_response.rb +1 -1
- data/lib/action_mcp/client/base.rb +12 -13
- data/lib/action_mcp/client/collection.rb +3 -3
- data/lib/action_mcp/client/elicitation.rb +4 -4
- data/lib/action_mcp/client/json_rpc_handler.rb +11 -13
- data/lib/action_mcp/client/jwt_client_provider.rb +6 -5
- data/lib/action_mcp/client/oauth_client_provider.rb +8 -8
- data/lib/action_mcp/client/streamable_http_transport.rb +63 -27
- data/lib/action_mcp/client.rb +19 -4
- data/lib/action_mcp/configuration.rb +28 -53
- data/lib/action_mcp/engine.rb +5 -1
- data/lib/action_mcp/filtered_logger.rb +1 -1
- data/lib/action_mcp/gateway.rb +47 -137
- data/lib/action_mcp/gateway_identifier.rb +29 -0
- data/lib/action_mcp/json_rpc_handler_base.rb +0 -2
- data/lib/action_mcp/jwt_decoder.rb +4 -2
- data/lib/action_mcp/jwt_identifier.rb +28 -0
- data/lib/action_mcp/none_identifier.rb +19 -0
- data/lib/action_mcp/o_auth_identifier.rb +34 -0
- data/lib/action_mcp/oauth/active_record_storage.rb +1 -1
- data/lib/action_mcp/oauth/memory_storage.rb +1 -3
- data/lib/action_mcp/oauth/middleware.rb +13 -18
- data/lib/action_mcp/oauth/provider.rb +45 -65
- data/lib/action_mcp/omniauth/mcp_strategy.rb +23 -37
- data/lib/action_mcp/prompt.rb +2 -0
- data/lib/action_mcp/renderable.rb +1 -1
- data/lib/action_mcp/resource_template.rb +6 -2
- data/lib/action_mcp/server/{memory_session.rb → base_session.rb} +39 -26
- data/lib/action_mcp/server/base_session_store.rb +86 -0
- data/lib/action_mcp/server/capabilities.rb +2 -1
- data/lib/action_mcp/server/elicitation.rb +3 -9
- data/lib/action_mcp/server/error_handling.rb +14 -1
- data/lib/action_mcp/server/handlers/router.rb +31 -0
- data/lib/action_mcp/server/json_rpc_handler.rb +2 -5
- data/lib/action_mcp/server/{messaging.rb → messaging_service.rb} +38 -14
- data/lib/action_mcp/server/prompts.rb +4 -4
- data/lib/action_mcp/server/resources.rb +23 -4
- data/lib/action_mcp/server/session_store_factory.rb +1 -1
- data/lib/action_mcp/server/solid_mcp_adapter.rb +9 -10
- data/lib/action_mcp/server/tools.rb +62 -43
- data/lib/action_mcp/server/transport_handler.rb +2 -4
- data/lib/action_mcp/server/volatile_session_store.rb +1 -93
- data/lib/action_mcp/tagged_stream_logging.rb +2 -2
- data/lib/action_mcp/test_helper/progress_notification_assertions.rb +4 -4
- data/lib/action_mcp/test_helper/session_store_assertions.rb +5 -1
- data/lib/action_mcp/tool.rb +48 -37
- data/lib/action_mcp/types/float_array_type.rb +5 -3
- data/lib/action_mcp/version.rb +1 -1
- data/lib/action_mcp.rb +1 -1
- data/lib/generators/action_mcp/install/templates/application_gateway.rb +1 -0
- data/lib/tasks/action_mcp_tasks.rake +7 -5
- metadata +24 -18
- data/lib/action_mcp/server/notifications.rb +0 -58
@@ -1,58 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module ActionMCP
|
4
|
-
module Server
|
5
|
-
module Notifications
|
6
|
-
# Notify client that the resources list has changed
|
7
|
-
def send_resources_list_changed_notification
|
8
|
-
send_jsonrpc_notification("notifications/resources/list_changed")
|
9
|
-
end
|
10
|
-
|
11
|
-
# Notify client that a specific resource has been updated
|
12
|
-
def send_resource_updated_notification(uri)
|
13
|
-
send_jsonrpc_notification("notifications/resources/updated", { uri: })
|
14
|
-
end
|
15
|
-
|
16
|
-
# Notify client that the tools list has changed
|
17
|
-
def send_tools_list_changed_notification
|
18
|
-
send_jsonrpc_notification("notifications/tools/list_changed")
|
19
|
-
end
|
20
|
-
|
21
|
-
# Notify client that the prompts list has changed
|
22
|
-
def send_prompts_list_changed_notification
|
23
|
-
send_jsonrpc_notification("notifications/prompts/list_changed")
|
24
|
-
end
|
25
|
-
|
26
|
-
# Send a logging message to the client
|
27
|
-
def send_logging_message_notification(level:, data:, logger: nil)
|
28
|
-
params = {
|
29
|
-
level: level,
|
30
|
-
data: data
|
31
|
-
}
|
32
|
-
params[:logger] = logger if logger.present?
|
33
|
-
|
34
|
-
send_jsonrpc_notification("notifications/logging/message", params)
|
35
|
-
end
|
36
|
-
|
37
|
-
# Updated to match MCP 2025-03-26 specification
|
38
|
-
def send_progress_notification(progressToken:, progress:, total: nil, message: nil, **options)
|
39
|
-
params = {
|
40
|
-
progressToken: progressToken,
|
41
|
-
progress: progress
|
42
|
-
}
|
43
|
-
# Only include total and message if they are present (not nil)
|
44
|
-
params[:total] = total unless total.nil?
|
45
|
-
params[:message] = message if message.present?
|
46
|
-
params.merge!(options) if options.any?
|
47
|
-
|
48
|
-
send_jsonrpc_notification("notifications/progress", params)
|
49
|
-
end
|
50
|
-
|
51
|
-
# Backward compatibility method for old API
|
52
|
-
def send_progress_notification_legacy(token:, value:, message: nil)
|
53
|
-
Rails.logger.warn("DEPRECATION: send_progress_notification with token/value is deprecated. Use progressToken/progress instead.")
|
54
|
-
send_progress_notification(progressToken: token, progress: value, message: message)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|