legion-mcp 0.7.1 → 0.7.2

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: 30a63f2232747773e34419533d0b0ef00b6c10c396885a976b322702281f5062
4
- data.tar.gz: f7191a38ce628ffc0c61a46010ce8c7f6ac4188c213c5462de449c9a118fe0c1
3
+ metadata.gz: cd343295ee4f59ac0614a3058aabfac15045eb01dd0b5e9dc5506f420059d577
4
+ data.tar.gz: 0cb3173967bcdb22b7c2d230f173c26d4884dc05b2acbbb5d000041c2509e4aa
5
5
  SHA512:
6
- metadata.gz: 1bf54172fb099fb382a8d4921990b47ad005d545163656de251c2e025bc28dbcebc789752009298dc8cab87a539651b0ec56a440e1209d27cb619c66ea95e8dd
7
- data.tar.gz: 246f2c244d3e4429017e5ccdf339d2b0a00033a8d49df8f652ab8ca52c7ed9b0e1f1d6eb1cf765971d7ab3cebd7f410ebb8733e42f840bad931b2e4397c55933
6
+ metadata.gz: 56c5321aa074674433bf222fd3e513217b983e11712dad1d1fff24bab90e0de9acf0896c3d54f38a67f585ef666ffb0d5e538de787e28e04f9f8e00f59ba3787
7
+ data.tar.gz: 4950bfc2b5a43bb7ef7dabb34d3b93258611b9d85a551910793dac1229f463b464ea0c44cfc690bb7a729b44493fdb4b1fe0fe9801f0f0e4cc9cbe657b2dfc2d
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.7.2] - 2026-04-03
6
+
7
+ ### Fixed
8
+ - CatalogDispatcher sanitizes tool names to strip characters invalid for MCP (e.g., `?` from Ruby predicate methods)
9
+
5
10
  ## [0.7.1] - 2026-04-02
6
11
 
7
12
  ### Added
@@ -117,10 +117,11 @@ module Legion
117
117
  return [] unless Legion::Extensions::Catalog::Registry.respond_to?(:for_mcp)
118
118
 
119
119
  Legion::Extensions::Catalog::Registry.for_mcp.filter_map do |cap|
120
+ raw_name = cap.respond_to?(:mcp_name) ? cap.mcp_name : "legion.catalog.#{cap.function}"
120
121
  build_tool_class(
121
122
  runner_class: resolve_runner_class(cap),
122
123
  function: cap.function,
123
- tool_name: cap.respond_to?(:mcp_name) ? cap.mcp_name : "legion.catalog.#{cap.function}",
124
+ tool_name: sanitize_tool_name(raw_name),
124
125
  description: cap.respond_to?(:description) ? cap.description : "Auto-generated: #{cap.function}",
125
126
  input_schema: cap.respond_to?(:input_schema) ? cap.input_schema : { properties: {} },
126
127
  category: cap.respond_to?(:category) ? cap.category : nil,
@@ -137,6 +138,10 @@ module Legion
137
138
  segments = cap.extension.delete_prefix('lex-').split('-')
138
139
  (%w[Legion Extensions] + segments.map(&:capitalize) + ['Runners', cap.runner]).join('::')
139
140
  end
141
+
142
+ def sanitize_tool_name(name)
143
+ name.gsub(/[^A-Za-z0-9_.-]/, '')
144
+ end
140
145
  end
141
146
  end
142
147
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module MCP
5
- VERSION = '0.7.1'
5
+ VERSION = '0.7.2'
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.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity