@@ -101,24 +101,8 @@ extension MCPTool {
101101 // Add default values for parameters that are missing from the arguments dictionary
102102 for param in metadata. parameters {
103103 if enrichedArguments [ param. name] == nil , let defaultValue = param. defaultValue {
104- // Convert the default value to the appropriate type based on the parameter type
105- switch param. type {
106- case " Int " :
107- if let intValue = Int ( defaultValue) {
108- enrichedArguments [ param. name] = intValue
109- }
110- case " Double " , " Float " :
111- if let doubleValue = Double ( defaultValue) {
112- enrichedArguments [ param. name] = doubleValue
113- }
114- case " Bool " :
115- if let boolValue = Bool ( defaultValue) {
116- enrichedArguments [ param. name] = boolValue
117- }
118- default :
119- // For string and other types, use the default value as is
120- enrichedArguments [ param. name] = defaultValue
121- }
104+
105+ enrichedArguments [ param. name] = defaultValue
122106 }
123107 }
124108
@@ -142,6 +126,8 @@ extension JSONSchema: Codable {
142126 case description
143127 /// The schema for array items
144128 case items
129+ /// The possible values for an enum schema
130+ case enumValues = " enum "
145131 }
146132
147133 /**
@@ -157,7 +143,8 @@ extension JSONSchema: Codable {
157143
158144 switch type {
159145 case " string " :
160- self = . string( description: description)
146+ let enumValues = try container. decodeIfPresent ( [ String ] . self, forKey: . enumValues)
147+ self = . string( description: description, enumValues: enumValues)
161148 case " number " :
162149 self = . number( description: description)
163150 case " boolean " :
@@ -193,9 +180,12 @@ extension JSONSchema: Codable {
193180 var container = encoder. container ( keyedBy: CodingKeys . self)
194181
195182 switch self {
196- case . string( let description) :
183+ case . string( let description, let enumValues ) :
197184 try container. encode ( " string " , forKey: . type)
198185 try container. encodeIfPresent ( description, forKey: . description)
186+ if let enumValues = enumValues {
187+ try container. encode ( enumValues, forKey: . enumValues)
188+ }
199189 case . number( let description) :
200190 try container. encode ( " number " , forKey: . type)
201191 try container. encodeIfPresent ( description, forKey: . description)
@@ -219,6 +209,10 @@ extension JSONSchema: Codable {
219209 }
220210
221211 try container. encodeIfPresent ( description, forKey: . description)
212+ case . enum( let values, let description) :
213+ try container. encode ( " string " , forKey: . type)
214+ try container. encodeIfPresent ( description, forKey: . description)
215+ try container. encode ( values, forKey: . enumValues)
222216 }
223217 }
224218}
0 commit comments