legion-mcp 0.5.7 → 0.5.8
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/.rubocop.yml +1 -0
- data/CHANGELOG.md +8 -0
- data/legion-mcp.gemspec +1 -1
- data/lib/legion/mcp/server.rb +3 -1
- data/lib/legion/mcp/tools/query_knowledge.rb +52 -0
- data/lib/legion/mcp/version.rb +1 -1
- metadata +16 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0ff0343837c41b8a3c90e88f6d307244d57d0b37ca8c48cc9c4b8b346aefeb51
|
|
4
|
+
data.tar.gz: 6e222e352d5f1484a4f40e8893c8c2c9b71315052d3bfbda72a48c6f4f2369a4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3fa4b7fab3a42f425bd63d91bc2a97802a12ecb5374313b85d21f959e4b8f63fff13ef8daf7d0c95f3de698bb07ad4cf3aacedbcddfbe391383a54d31a4b422b
|
|
7
|
+
data.tar.gz: 3d74c974da483a0384ebaee0fb2420541e2aa9f00de38e562be09ecef2673ab284080821e030616268e9b5947345e82bce8d29da7a7fc1d8dd3114f32c584299
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# legion-mcp Changelog
|
|
2
2
|
|
|
3
|
+
## [0.5.8] - 2026-03-26
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- `legion.query_knowledge` MCP tool: search document knowledge base with optional LLM synthesis (closes #3)
|
|
7
|
+
- Inputs: question (required), top_k (default 5), synthesize (default true)
|
|
8
|
+
- Guards with defined?() — returns error response if lex-knowledge not loaded
|
|
9
|
+
- Tool count: 56 → 57
|
|
10
|
+
|
|
3
11
|
## [0.5.7] - 2026-03-25
|
|
4
12
|
|
|
5
13
|
### Changed
|
data/legion-mcp.gemspec
CHANGED
|
@@ -27,9 +27,9 @@ Gem::Specification.new do |spec|
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
spec.add_dependency 'concurrent-ruby', '>= 1.2'
|
|
30
|
-
spec.add_dependency 'mcp', '~> 0.8'
|
|
31
30
|
spec.add_dependency 'legion-data', '>= 1.4.19'
|
|
32
31
|
spec.add_dependency 'legion-json', '>= 1.2.0'
|
|
33
32
|
spec.add_dependency 'legion-logging', '>= 1.2.8'
|
|
34
33
|
spec.add_dependency 'legion-settings', '>= 1.3.12'
|
|
34
|
+
spec.add_dependency 'mcp', '~> 0.8'
|
|
35
35
|
end
|
data/lib/legion/mcp/server.rb
CHANGED
|
@@ -64,6 +64,7 @@ require_relative 'tools/mind_growth_approve'
|
|
|
64
64
|
require_relative 'tools/mind_growth_build_queue'
|
|
65
65
|
require_relative 'tools/mind_growth_cognitive_profile'
|
|
66
66
|
require_relative 'tools/mind_growth_health'
|
|
67
|
+
require_relative 'tools/query_knowledge'
|
|
67
68
|
require_relative 'catalog_bridge'
|
|
68
69
|
require_relative 'resources/runner_catalog'
|
|
69
70
|
require_relative 'resources/extension_info'
|
|
@@ -127,7 +128,8 @@ module Legion
|
|
|
127
128
|
Tools::MindGrowthApprove,
|
|
128
129
|
Tools::MindGrowthBuildQueue,
|
|
129
130
|
Tools::MindGrowthCognitiveProfile,
|
|
130
|
-
Tools::MindGrowthHealth
|
|
131
|
+
Tools::MindGrowthHealth,
|
|
132
|
+
Tools::QueryKnowledge
|
|
131
133
|
].freeze
|
|
132
134
|
|
|
133
135
|
class << self
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module MCP
|
|
5
|
+
module Tools
|
|
6
|
+
class QueryKnowledge < ::MCP::Tool
|
|
7
|
+
tool_name 'legion.query_knowledge'
|
|
8
|
+
description 'Search the document knowledge base. Returns a synthesized answer and ranked source chunks.'
|
|
9
|
+
|
|
10
|
+
input_schema(
|
|
11
|
+
properties: {
|
|
12
|
+
question: { type: 'string', description: 'The question or search query' },
|
|
13
|
+
top_k: { type: 'integer', description: 'Number of source chunks to retrieve (default 5)' },
|
|
14
|
+
synthesize: { type: 'boolean', description: 'Whether to synthesize an LLM answer (default true)' }
|
|
15
|
+
},
|
|
16
|
+
required: %w[question]
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
class << self
|
|
20
|
+
def call(question:, top_k: 5, synthesize: true)
|
|
21
|
+
return error_response('lex-knowledge is not available') unless knowledge_available?
|
|
22
|
+
|
|
23
|
+
result = Legion::Extensions::Knowledge::Runners::Query.query(
|
|
24
|
+
question: question,
|
|
25
|
+
top_k: top_k,
|
|
26
|
+
synthesize: synthesize
|
|
27
|
+
)
|
|
28
|
+
text_response(result)
|
|
29
|
+
rescue StandardError => e
|
|
30
|
+
Legion::Logging.warn("QueryKnowledge#call failed: #{e.message}") if defined?(Legion::Logging)
|
|
31
|
+
error_response("Knowledge query failed: #{e.message}")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
|
|
36
|
+
def knowledge_available?
|
|
37
|
+
defined?(Legion::Extensions::Knowledge::Runners::Query)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def text_response(data)
|
|
41
|
+
::MCP::Tool::Response.new([{ type: 'text', text: Legion::JSON.dump(data) }])
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def error_response(msg)
|
|
45
|
+
body = { error: msg }
|
|
46
|
+
::MCP::Tool::Response.new([{ type: 'text', text: Legion::JSON.dump(body) }], error: true)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
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.5.
|
|
4
|
+
version: 0.5.8
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Esity
|
|
@@ -23,20 +23,6 @@ dependencies:
|
|
|
23
23
|
- - ">="
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
25
|
version: '1.2'
|
|
26
|
-
- !ruby/object:Gem::Dependency
|
|
27
|
-
name: mcp
|
|
28
|
-
requirement: !ruby/object:Gem::Requirement
|
|
29
|
-
requirements:
|
|
30
|
-
- - "~>"
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: '0.8'
|
|
33
|
-
type: :runtime
|
|
34
|
-
prerelease: false
|
|
35
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
-
requirements:
|
|
37
|
-
- - "~>"
|
|
38
|
-
- !ruby/object:Gem::Version
|
|
39
|
-
version: '0.8'
|
|
40
26
|
- !ruby/object:Gem::Dependency
|
|
41
27
|
name: legion-data
|
|
42
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -93,6 +79,20 @@ dependencies:
|
|
|
93
79
|
- - ">="
|
|
94
80
|
- !ruby/object:Gem::Version
|
|
95
81
|
version: 1.3.12
|
|
82
|
+
- !ruby/object:Gem::Dependency
|
|
83
|
+
name: mcp
|
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - "~>"
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '0.8'
|
|
89
|
+
type: :runtime
|
|
90
|
+
prerelease: false
|
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - "~>"
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '0.8'
|
|
96
96
|
description: Model Context Protocol server with semantic tool matching, observation
|
|
97
97
|
pipeline, and tiered inference for LegionIO
|
|
98
98
|
email:
|
|
@@ -190,6 +190,7 @@ files:
|
|
|
190
190
|
- lib/legion/mcp/tools/prompt_list.rb
|
|
191
191
|
- lib/legion/mcp/tools/prompt_run.rb
|
|
192
192
|
- lib/legion/mcp/tools/prompt_show.rb
|
|
193
|
+
- lib/legion/mcp/tools/query_knowledge.rb
|
|
193
194
|
- lib/legion/mcp/tools/rbac_assignments.rb
|
|
194
195
|
- lib/legion/mcp/tools/rbac_check.rb
|
|
195
196
|
- lib/legion/mcp/tools/rbac_grants.rb
|