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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +186 -15
  3. data/app/controllers/action_mcp/application_controller.rb +47 -40
  4. data/app/controllers/action_mcp/oauth/endpoints_controller.rb +11 -10
  5. data/app/controllers/action_mcp/oauth/metadata_controller.rb +6 -10
  6. data/app/controllers/action_mcp/oauth/registration_controller.rb +15 -20
  7. data/app/models/action_mcp/oauth_client.rb +7 -5
  8. data/app/models/action_mcp/oauth_token.rb +2 -1
  9. data/app/models/action_mcp/session.rb +40 -5
  10. data/config/routes.rb +4 -2
  11. data/db/migrate/20250512154359_consolidated_migration.rb +3 -3
  12. data/db/migrate/20250608112101_add_oauth_to_sessions.rb +17 -8
  13. data/db/migrate/20250708105124_create_action_mcp_oauth_clients.rb +7 -5
  14. data/db/migrate/20250708105226_create_action_mcp_oauth_tokens.rb +3 -1
  15. data/db/migrate/20250715070713_add_consents_to_action_mcp_sess.rb +7 -0
  16. data/lib/action_mcp/base_response.rb +1 -1
  17. data/lib/action_mcp/client/base.rb +12 -13
  18. data/lib/action_mcp/client/collection.rb +3 -3
  19. data/lib/action_mcp/client/elicitation.rb +4 -4
  20. data/lib/action_mcp/client/json_rpc_handler.rb +11 -13
  21. data/lib/action_mcp/client/jwt_client_provider.rb +6 -5
  22. data/lib/action_mcp/client/oauth_client_provider.rb +8 -8
  23. data/lib/action_mcp/client/streamable_http_transport.rb +63 -27
  24. data/lib/action_mcp/client.rb +19 -4
  25. data/lib/action_mcp/configuration.rb +28 -53
  26. data/lib/action_mcp/engine.rb +5 -1
  27. data/lib/action_mcp/filtered_logger.rb +1 -1
  28. data/lib/action_mcp/gateway.rb +47 -137
  29. data/lib/action_mcp/gateway_identifier.rb +29 -0
  30. data/lib/action_mcp/json_rpc_handler_base.rb +0 -2
  31. data/lib/action_mcp/jwt_decoder.rb +4 -2
  32. data/lib/action_mcp/jwt_identifier.rb +28 -0
  33. data/lib/action_mcp/none_identifier.rb +19 -0
  34. data/lib/action_mcp/o_auth_identifier.rb +34 -0
  35. data/lib/action_mcp/oauth/active_record_storage.rb +1 -1
  36. data/lib/action_mcp/oauth/memory_storage.rb +1 -3
  37. data/lib/action_mcp/oauth/middleware.rb +13 -18
  38. data/lib/action_mcp/oauth/provider.rb +45 -65
  39. data/lib/action_mcp/omniauth/mcp_strategy.rb +23 -37
  40. data/lib/action_mcp/prompt.rb +2 -0
  41. data/lib/action_mcp/renderable.rb +1 -1
  42. data/lib/action_mcp/resource_template.rb +6 -2
  43. data/lib/action_mcp/server/{memory_session.rb → base_session.rb} +39 -26
  44. data/lib/action_mcp/server/base_session_store.rb +86 -0
  45. data/lib/action_mcp/server/capabilities.rb +2 -1
  46. data/lib/action_mcp/server/elicitation.rb +3 -9
  47. data/lib/action_mcp/server/error_handling.rb +14 -1
  48. data/lib/action_mcp/server/handlers/router.rb +31 -0
  49. data/lib/action_mcp/server/json_rpc_handler.rb +2 -5
  50. data/lib/action_mcp/server/{messaging.rb → messaging_service.rb} +38 -14
  51. data/lib/action_mcp/server/prompts.rb +4 -4
  52. data/lib/action_mcp/server/resources.rb +23 -4
  53. data/lib/action_mcp/server/session_store_factory.rb +1 -1
  54. data/lib/action_mcp/server/solid_mcp_adapter.rb +9 -10
  55. data/lib/action_mcp/server/tools.rb +62 -43
  56. data/lib/action_mcp/server/transport_handler.rb +2 -4
  57. data/lib/action_mcp/server/volatile_session_store.rb +1 -93
  58. data/lib/action_mcp/tagged_stream_logging.rb +2 -2
  59. data/lib/action_mcp/test_helper/progress_notification_assertions.rb +4 -4
  60. data/lib/action_mcp/test_helper/session_store_assertions.rb +5 -1
  61. data/lib/action_mcp/tool.rb +48 -37
  62. data/lib/action_mcp/types/float_array_type.rb +5 -3
  63. data/lib/action_mcp/version.rb +1 -1
  64. data/lib/action_mcp.rb +1 -1
  65. data/lib/generators/action_mcp/install/templates/application_gateway.rb +1 -0
  66. data/lib/tasks/action_mcp_tasks.rake +7 -5
  67. metadata +24 -18
  68. 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