active_mcp 0.10.3 → 0.10.5

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: 52bc4e16d14575dbf11222fbdcbd59282551f3c6ead55fb8bd16be7d98ab45c0
4
- data.tar.gz: 653b86697f28c509738527af695080c2976e9bef9184fa3b4b5761ff1ec0d3c2
3
+ metadata.gz: f7a6dec91d1f48ced13dc1699bf78b251961a4dfaf41b1c95531465c618c3ba2
4
+ data.tar.gz: e21b02b26027a3d87c44231f4cf7076febd82746e4a222fe1112a8b6b650ba12
5
5
  SHA512:
6
- metadata.gz: d74b26b70a1f3eb5c17c487078d93e94ba1e53080de4a8a12d09f3b9195bc5f60bba406e357d5a093c7d07a0882da2f9cf8ba57be7f87e9b4568b49081a2042b
7
- data.tar.gz: cafb6a68accab2b5e0a080121580634c3bac4c0993d6ecd56fe0e052e85800ba9c96fc3391cfde5160ee948bdec867213dc9bcd9e6fce3958013941a89d362ce
6
+ metadata.gz: eace2e1b1abdfca71fe7884d654e8d698a07e0c1f175462db46a80f798e2b8a31d2561a8b3c95f558ed3d3f374ab3013f341d3eb3733e79d6f9650617ac05137
7
+ data.tar.gz: 231879557b7ec110bf2810e0ee66566cbd1bc791d695bff869b9ac197c67cfdba16e3aea1aa1fd5b2821517c99726f50d3698cdd27d499d76fa165584d7e6b72
data/README.md CHANGED
@@ -456,7 +456,7 @@ MCP Resource Teamplates allow you to define template of resources.
456
456
 
457
457
  ### Creating Resource Templates
458
458
 
459
- Resources are Ruby classes `**ResourceTemplates`:
459
+ Resource teamplates are Ruby classes `**Resource`:
460
460
 
461
461
  ```ruby
462
462
  class UserResource < ActiveMcp::Resource::Base
@@ -482,7 +482,7 @@ class UserResource < ActiveMcp::Resource::Base
482
482
  end
483
483
  end
484
484
 
485
- argument :id, ->(value) do
485
+ argument :id, complete: ->(value, context) do
486
486
  User.all.pluck(:id).filter { _1.match(value) }
487
487
  end
488
488
 
@@ -528,7 +528,7 @@ Resources are Ruby classes `**Prompt`:
528
528
 
529
529
  ```ruby
530
530
  class HelloPrompt < ActiveMcp::Prompt::Base
531
- argument :name, required: true, description: "User name", complete: ->(value) do
531
+ argument :name, required: true, description: "User name", complete: ->(value, context) do
532
532
  User.all.pluck(:name).filter { _1.match(value) }
533
533
  end
534
534
 
@@ -8,11 +8,11 @@ module ActiveMcp
8
8
 
9
9
  if uri_template
10
10
  resource_class = refs.find { _1.uri_template == uri_template }
11
- values = resource_class.arguments[arg_name.to_sym].call(value)
11
+ values = resource_class.arguments[arg_name.to_sym].call(value, context)
12
12
  {values:, total: values.length}
13
13
  elsif ref_name
14
14
  prompt = refs.find { _1.prompt_name == ref_name }
15
- values = prompt.class.arguments.find { _1[:name] == arg_name.to_sym }[:complete].call(value)
15
+ values = prompt.class.arguments.find { _1[:name] == arg_name.to_sym }[:complete].call(value, context)
16
16
  {values:, total: values.length}
17
17
  end
18
18
  end
@@ -6,16 +6,13 @@ module ActiveMcp
6
6
  class << self
7
7
  attr_reader :schema, :arguments
8
8
 
9
- def resource_template_name
10
- end
11
-
12
9
  def description
13
10
  end
14
11
 
15
12
  def mime_type
16
13
  end
17
14
 
18
- def argument(name, complete)
15
+ def argument(name, complete:)
19
16
  @arguments = {}
20
17
  @arguments[name] = complete
21
18
  end
@@ -9,7 +9,7 @@ module ActiveMcp
9
9
 
10
10
  def visible_resources
11
11
  resources&.filter do |resource|
12
- !resource.class.respond_to?(:uri_template) && !resource.respond_to?(:visible?) || resource.visible?(context: @context)
12
+ !resource.respond_to?(:visible?) || resource.visible?(context: @context)
13
13
  end
14
14
  end
15
15
 
@@ -18,7 +18,7 @@ module ActiveMcp
18
18
  resource.class.respond_to?(:uri_template) && (!resource.respond_to?(:visible?) || resource.visible?(context: @context))
19
19
  end
20
20
 
21
- resource_instances.map(&:class)
21
+ resource_instances.map(&:class).uniq
22
22
  end
23
23
 
24
24
  def visible_tools
@@ -1,3 +1,3 @@
1
1
  module ActiveMcp
2
- VERSION = "0.10.3"
2
+ VERSION = "0.10.5"
3
3
  end
@@ -1,4 +1,10 @@
1
- class <%= class_name %>
1
+ class <%= class_name %> < ActiveMcp::Resource::Base
2
+ class << self
3
+ def mime_type
4
+ "application/json"
5
+ end
6
+ end
7
+
2
8
  def resource_name
3
9
  "<%= file_name %>"
4
10
  end
@@ -6,10 +12,6 @@ class <%= class_name %>
6
12
  def uri
7
13
  "data://localhost/<%= file_name %>"
8
14
  end
9
-
10
- def mime_type
11
- "application/json"
12
- end
13
15
 
14
16
  def description
15
17
  "<%= file_name.humanize %>"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_mcp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.3
4
+ version: 0.10.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Moeki Kawakami