Class: DocOpsLab::MCP::ResourcePack
- Inherits:
-
Object
- Object
- DocOpsLab::MCP::ResourcePack
show all
- Defined in:
- lib/docopslab/mcp/resource_pack.rb
Overview
Resolves MCP resources from a YAML manifest and packaged assets.
Defined Under Namespace
Classes: Resource
Instance Method Summary
collapse
Constructor Details
#initialize(manifest:, asset_root:) ⇒ ResourcePack
Returns a new instance of ResourcePack.
9
10
11
12
13
14
|
# File 'lib/docopslab/mcp/resource_pack.rb', line 9
def initialize manifest:, asset_root:
raise ArgumentError, 'asset_root is required' if asset_root.nil? || asset_root == ''
@manifest = manifest
@asset_root = asset_root
end
|
Instance Method Details
#find(uri) ⇒ Object
32
33
34
|
# File 'lib/docopslab/mcp/resource_pack.rb', line 32
def find uri
resources.find { |entry| entry.uri == uri }
end
|
#list ⇒ Object
28
29
30
|
# File 'lib/docopslab/mcp/resource_pack.rb', line 28
def list
resources.map(&:uri)
end
|
#read(uri) ⇒ Object
36
37
38
39
40
41
42
43
|
# File 'lib/docopslab/mcp/resource_pack.rb', line 36
def read uri
resource = find(uri)
raise ArgumentError, "Unknown MCP resource: #{uri}" unless resource
raise Errno::ENOENT, "Missing MCP resource file: #{resource.path}" unless File.exist?(resource.path)
File.read(resource.path)
end
|
#resources ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/docopslab/mcp/resource_pack.rb', line 16
def resources
@manifest.resources.map do |entry|
normalized = @manifest.normalize_resource(entry)
Resource.new(
uri: normalized[:uri],
name: normalized[:name],
description: normalized[:description],
mime_type: normalized[:mime_type],
path: File.join(@asset_root, normalized[:packaged_name]))
end
end
|