actionmcp 0.55.0 → 0.55.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 24a0298e6a7ed25d658bdb17c2161911a1c8e8ac199a5bd0e2b553a47e1d809f
4
- data.tar.gz: 2066c3f6af2375dee54736d44f67b022c791c5b85cb7022cc1abd3ae6e9627f8
3
+ metadata.gz: cf09101b39d54989921b8d3969dda8c5233843b95ee824fb83b39d6cd34f2944
4
+ data.tar.gz: 779085c0b7669076f55474fa3f80f528776930667206fe364834b6f67ccb38d1
5
5
  SHA512:
6
- metadata.gz: 896039f7d34cae5e00d8e5c01717b12e4d806c2502f5cd6bf8da0a4d1556f30e90f26a4cddd0e7817d72d70443b94054f1071ad3bf40ab48f64e8be3a96e1927
7
- data.tar.gz: a5a65421f027c10abcb0015ac8339ef06010c25a25c95eb24b7aba4f52504a813ee4105a10071ac68a66355671e0ee7894ca42a6785d67ccdfdc9f82f53163cd
6
+ metadata.gz: 5d6eed8dbf0f7fad93fc9f1c2eb1264f3e216c9a83717c0f1af62624e0b9ff848fe8f867b738252734fdb39d46e45f8b33f88587c1d458e4f866ab88c8e16802
7
+ data.tar.gz: 4563e80b5d9a69d12868091535b1b6e62500f4f233307b9b623a1f333573742e82c739ea06d51e14fca3c7d3e013dc4475cb0791b1e001c9dc56dfac6f77ef3d
@@ -10,6 +10,39 @@ module ActionMCP
10
10
  @client = client
11
11
  end
12
12
 
13
+ # Handle client-side JSON-RPC requests/responses
14
+ # @param request [JSON_RPC::Request, JSON_RPC::Notification, JSON_RPC::Response]
15
+ def call(request)
16
+ case request
17
+ when JSON_RPC::Request
18
+ handle_request(request)
19
+ when JSON_RPC::Notification
20
+ handle_notification(request)
21
+ when JSON_RPC::Response
22
+ handle_response(request)
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def handle_request(request)
29
+ id = request.id
30
+ rpc_method = request.method
31
+ params = request.params
32
+
33
+ handle_method(rpc_method, id, params)
34
+ end
35
+
36
+ def handle_notification(notification)
37
+ # Handle server notifications to client
38
+ puts "\e[33mReceived notification: #{notification.method}\e[0m"
39
+ end
40
+
41
+ def handle_response(response)
42
+ # Handle server responses to client requests
43
+ puts "\e[32mReceived response: #{response.id} - #{response.result ? 'success' : 'error'}\e[0m"
44
+ end
45
+
13
46
  protected
14
47
 
15
48
  # Handle client-specific methods
@@ -3,7 +3,7 @@
3
3
  module ActionMCP
4
4
  module Client
5
5
  # MCP client using Server-Sent Events (SSE) transport
6
- class SSEClient < Base
6
+ class StreamableClient < Base
7
7
  # Define a custom error class for connection issues
8
8
  class ConnectionError < StandardError; end
9
9
 
@@ -102,6 +102,37 @@ module ActionMCP
102
102
  def set_ready(state)
103
103
  @ready = state
104
104
  end
105
+
106
+ # Logging methods for transport classes
107
+ def log_debug(message)
108
+ @logger.debug("[ActionMCP::#{self.class.name.split('::').last}] #{message}")
109
+ end
110
+
111
+ def log_info(message)
112
+ @logger.info("[ActionMCP::#{self.class.name.split('::').last}] #{message}")
113
+ end
114
+
115
+ def log_error(message)
116
+ @logger.error("[ActionMCP::#{self.class.name.split('::').last}] #{message}")
117
+ end
118
+
119
+ private
120
+
121
+ def handle_connect
122
+ @connect_callback&.call
123
+ end
124
+
125
+ def handle_disconnect
126
+ @disconnect_callback&.call
127
+ end
128
+
129
+ def handle_error(error)
130
+ @error_callback&.call(error)
131
+ end
132
+
133
+ def handle_message(message)
134
+ @message_callback&.call(message)
135
+ end
105
136
  end
106
137
  end
107
138
  end
@@ -68,7 +68,7 @@ module ActionMCP
68
68
  Client::StreamableHttpTransport.new(endpoint, **options)
69
69
  when :sse
70
70
  # Legacy SSE transport (wrapped for compatibility)
71
- Client::LegacySSETransport.new(endpoint, **options)
71
+ Client::StreamableClient.new(endpoint, **options)
72
72
  else
73
73
  raise ArgumentError, "Unknown transport type: #{type}"
74
74
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require_relative "gem_version"
4
4
  module ActionMCP
5
- VERSION = "0.55.0"
5
+ VERSION = "0.55.1"
6
6
 
7
7
  class << self
8
8
  alias version gem_version
data/lib/action_mcp.rb CHANGED
@@ -28,7 +28,6 @@ Zeitwerk::Loader.for_gem.tap do |loader|
28
28
  )
29
29
 
30
30
  loader.inflector.inflect("action_mcp" => "ActionMCP")
31
- loader.inflector.inflect("sse_client" => "SSEClient")
32
31
  loader.inflector.inflect("sse_listener" => "SSEListener")
33
32
  loader.inflector.inflect("oauth" => "OAuth")
34
33
  loader.inflector.inflect("mcp_strategy" => "MCPStrategy")
@@ -2,7 +2,7 @@
2
2
 
3
3
  require "rails/generators"
4
4
 
5
- module ActionMcp
5
+ module ActionMCP
6
6
  module Generators
7
7
  class InstallGenerator < Rails::Generators::Base
8
8
  source_root File.expand_path("templates", __dir__)
@@ -33,6 +33,10 @@ module ActionMCP
33
33
  base = base[0...-6] if base.end_with?("Prompt")
34
34
  base.underscore.dasherize
35
35
  end
36
+
37
+ def description
38
+ "Describe what this prompt does"
39
+ end
36
40
  end
37
41
  end
38
42
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require "rails/generators"
4
4
 
5
- module ActionMcp
5
+ module ActionMCP
6
6
  module Generators
7
7
  class ResourceTemplateGenerator < Rails::Generators::NamedBase
8
8
  namespace "action_mcp:resource_template"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionmcp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.55.0
4
+ version: 0.55.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abdelkader Boudih
@@ -228,7 +228,7 @@ files:
228
228
  - lib/action_mcp/client/server.rb
229
229
  - lib/action_mcp/client/session_store.rb
230
230
  - lib/action_mcp/client/session_store_factory.rb
231
- - lib/action_mcp/client/sse_client.rb
231
+ - lib/action_mcp/client/streamable_client.rb
232
232
  - lib/action_mcp/client/streamable_http_transport.rb
233
233
  - lib/action_mcp/client/test_session_store.rb
234
234
  - lib/action_mcp/client/toolbox.rb