legion-mcp 0.6.2 → 0.6.3
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/CHANGELOG.md +5 -0
- data/lib/legion/mcp/server.rb +3 -1
- data/lib/legion/mcp/tools/absorb.rb +60 -0
- data/lib/legion/mcp/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bfce8f2adcb9e23e5ed0f4cbeef3cd1b9652b9e75e8ed9220ecbed03cd062a3b
|
|
4
|
+
data.tar.gz: 1ea9a7387eed8be7ea87adee85017837306bca5abd41fdf546c3452e8e196ea3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b8aa048bf6f665695e4588b31018ea849903a004149b56d0bd0032194c1cd474dc2086c2bb934205fbf85116ff90e58f6bfec9d8c524b270c4624c0607b56b0e
|
|
7
|
+
data.tar.gz: 47bd47cf386c0b89ddc415abbf36aa5554ddad5cdd6165a937750f2307e46e19bda219bffda2bd9ce4faa6fd5be3db50b284f66b885684cc9e1c4c15e98534c6
|
data/CHANGELOG.md
CHANGED
data/lib/legion/mcp/server.rb
CHANGED
|
@@ -67,6 +67,7 @@ require_relative 'tools/mind_growth_health'
|
|
|
67
67
|
require_relative 'tools/query_knowledge'
|
|
68
68
|
require_relative 'tools/knowledge_health'
|
|
69
69
|
require_relative 'tools/knowledge_context'
|
|
70
|
+
require_relative 'tools/absorb'
|
|
70
71
|
require_relative 'catalog_bridge'
|
|
71
72
|
require_relative 'resources/runner_catalog'
|
|
72
73
|
require_relative 'resources/extension_info'
|
|
@@ -133,7 +134,8 @@ module Legion
|
|
|
133
134
|
Tools::MindGrowthHealth,
|
|
134
135
|
Tools::QueryKnowledge,
|
|
135
136
|
Tools::KnowledgeHealth,
|
|
136
|
-
Tools::KnowledgeContext
|
|
137
|
+
Tools::KnowledgeContext,
|
|
138
|
+
Tools::Absorb
|
|
137
139
|
].freeze
|
|
138
140
|
|
|
139
141
|
@tool_registry = Concurrent::Array.new(STATIC_TOOLS)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module MCP
|
|
5
|
+
module Tools
|
|
6
|
+
class Absorb < ::MCP::Tool
|
|
7
|
+
tool_name 'legion.absorb'
|
|
8
|
+
description 'Absorb content from a URL or resource into the knowledge system. ' \
|
|
9
|
+
'Dispatches to the registered absorber that matches the input pattern.'
|
|
10
|
+
|
|
11
|
+
input_schema(
|
|
12
|
+
properties: {
|
|
13
|
+
input: { type: 'string', description: 'URL, file path, or resource identifier to absorb' },
|
|
14
|
+
scope: { type: 'string', enum: %w[local global all],
|
|
15
|
+
description: 'Knowledge scope (default: global)' }
|
|
16
|
+
},
|
|
17
|
+
required: %w[input]
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
class << self
|
|
21
|
+
def call(input:, scope: 'global')
|
|
22
|
+
return error_response('AbsorberDispatch not available') unless dispatch_available?
|
|
23
|
+
|
|
24
|
+
scope_str = scope.to_s
|
|
25
|
+
allowed_scopes = { 'local' => :local, 'global' => :global, 'all' => :all }
|
|
26
|
+
return error_response("invalid scope: #{scope}") unless allowed_scopes.key?(scope_str)
|
|
27
|
+
|
|
28
|
+
result = Legion::Extensions::Actors::AbsorberDispatch.dispatch(
|
|
29
|
+
input: input,
|
|
30
|
+
context: { scope: allowed_scopes[scope_str] }
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
if result[:success]
|
|
34
|
+
text_response(result)
|
|
35
|
+
else
|
|
36
|
+
error_response(result[:error] || 'absorption failed')
|
|
37
|
+
end
|
|
38
|
+
rescue StandardError => e
|
|
39
|
+
Legion::Logging.warn("Absorb MCP tool failed: #{e.message}") if defined?(Legion::Logging)
|
|
40
|
+
error_response("Absorption failed: #{e.message}")
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def dispatch_available?
|
|
46
|
+
defined?(Legion::Extensions::Actors::AbsorberDispatch)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def text_response(data)
|
|
50
|
+
::MCP::Tool::Response.new([{ type: 'text', text: Legion::JSON.dump(data) }])
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def error_response(msg)
|
|
54
|
+
::MCP::Tool::Response.new([{ type: 'text', text: Legion::JSON.dump({ error: msg }) }], error: true)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
data/lib/legion/mcp/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: legion-mcp
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
@@ -145,6 +145,7 @@ files:
|
|
|
145
145
|
- lib/legion/mcp/settings.rb
|
|
146
146
|
- lib/legion/mcp/tier_router.rb
|
|
147
147
|
- lib/legion/mcp/tool_governance.rb
|
|
148
|
+
- lib/legion/mcp/tools/absorb.rb
|
|
148
149
|
- lib/legion/mcp/tools/ask_peer.rb
|
|
149
150
|
- lib/legion/mcp/tools/broadcast_peers.rb
|
|
150
151
|
- lib/legion/mcp/tools/create_chain.rb
|