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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5fb13bd52360660f5ec746ccd39b61938e88f6162d6fec55e7e6d059b8e587ef
4
- data.tar.gz: 54686c0f6a9e748903766e4492b83fed3bd1780295795fd17bcd14142f3a1703
3
+ metadata.gz: 0ff0343837c41b8a3c90e88f6d307244d57d0b37ca8c48cc9c4b8b346aefeb51
4
+ data.tar.gz: 6e222e352d5f1484a4f40e8893c8c2c9b71315052d3bfbda72a48c6f4f2369a4
5
5
  SHA512:
6
- metadata.gz: 4a2830fb09b04b792a8b15e118e39b71135db74cc1e9a8e701940283b12bad28b406003005b3a39effda3c213b6b73e360dc767c91152a0c466f50196ec7b99e
7
- data.tar.gz: adfb0ea1edb2f5851e9ca7855687a976f33d6959ed891ca95e0666dd738fd74934234132d26a2c72315a39308150f845544caba3a306d4bebb05bbbc1e0971c2
6
+ metadata.gz: 3fa4b7fab3a42f425bd63d91bc2a97802a12ecb5374313b85d21f959e4b8f63fff13ef8daf7d0c95f3de698bb07ad4cf3aacedbcddfbe391383a54d31a4b422b
7
+ data.tar.gz: 3d74c974da483a0384ebaee0fb2420541e2aa9f00de38e562be09ecef2673ab284080821e030616268e9b5947345e82bce8d29da7a7fc1d8dd3114f32c584299
data/.rubocop.yml CHANGED
@@ -10,6 +10,7 @@ AllCops:
10
10
  Metrics/BlockLength:
11
11
  Exclude:
12
12
  - 'spec/**/*'
13
+ - '*.gemspec'
13
14
 
14
15
  Naming/PredicateMethod:
15
16
  Enabled: false
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
@@ -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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module MCP
5
- VERSION = '0.5.7'
5
+ VERSION = '0.5.8'
6
6
  end
7
7
  end
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.7
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