File tree Expand file tree Collapse file tree 3 files changed +48
-20
lines changed
Expand file tree Collapse file tree 3 files changed +48
-20
lines changed Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ def client(*args, **kwargs)
1919 def support_complex_parameters!
2020 require_relative "mcp/providers/open_ai/complex_parameter_support"
2121 require_relative "mcp/providers/anthropic/complex_parameter_support"
22+ require_relative "mcp/providers/gemini/complex_parameter_support"
2223 end
2324 end
2425end
Original file line number Diff line number Diff line change @@ -5,20 +5,36 @@ module MCP
55 module Providers
66 module Anthropic
77 module ComplexParameterSupport
8+ module_function
9+
810 def clean_parameters ( parameters )
911 parameters . transform_values do |param |
10- format = {
11- type : param . type ,
12- description : param . description
13- } . compact
12+ build_properties ( param ) . compact
13+ end
14+ end
1415
15- if param . type == "array"
16- format [ :items ] = param . items
17- elsif param . type == "object"
18- format [ :properties ] = clean_parameters ( param . properties )
19- end
16+ def required_parameters ( parameters )
17+ parameters . select { |_ , param | param . required } . keys
18+ end
2019
21- format
20+ def build_properties ( param )
21+ case param . type
22+ when :array
23+ {
24+ type : param . type ,
25+ items : { type : param . item_type }
26+ }
27+ when :object
28+ {
29+ type : param . type ,
30+ properties : clean_parameters ( param . properties ) ,
31+ required : required_parameters ( param . properties )
32+ }
33+ else
34+ {
35+ type : param . type ,
36+ description : param . description
37+ }
2238 end
2339 end
2440 end
Original file line number Diff line number Diff line change @@ -5,18 +5,29 @@ module MCP
55 module Providers
66 module OpenAI
77 module ComplexParameterSupport
8+ module_function
9+
810 def param_schema ( param )
9- format = {
10- type : param . type ,
11- description : param . description
12- } . compact
11+ properties = case param . type
12+ when :array
13+ {
14+ type : param . type ,
15+ items : { type : param . item_type }
16+ }
17+ when :object
18+ {
19+ type : param . type ,
20+ properties : param . properties . transform_values { |value | param_schema ( value ) } ,
21+ required : param . properties . select { |_ , p | p . required } . keys
22+ }
23+ else
24+ {
25+ type : param . type ,
26+ description : param . description
27+ }
28+ end
1329
14- if param . type == "array"
15- format [ :items ] = param . items
16- elsif param . type == "object"
17- format [ :properties ] = param . properties . transform_values { |value | param_schema ( value ) }
18- end
19- format
30+ properties . compact
2031 end
2132 end
2233 end
You can’t perform that action at this time.
0 commit comments