Skip to content

Commit 29b92a2

Browse files
committed
hook up isRequired in parameter info
1 parent f026b53 commit 29b92a2

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

Sources/SwiftMCP/Models/Tools/MCPToolParameterInfo.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@ public struct MCPToolParameterInfo: Sendable {
4141
- defaultValue: An optional default value for the parameter
4242
- enumValues: The possible values if this is an enum parameter
4343
*/
44-
public init(name: String, label: String, type: String, description: String? = nil, defaultValue: Sendable? = nil, enumValues: [String]? = nil) {
44+
public init(name: String, label: String, type: String, description: String? = nil, defaultValue: Sendable? = nil, enumValues: [String]? = nil, isRequired: Bool) {
4545
self.name = name
4646
self.label = label
4747
self.type = type
4848
self.description = description
4949
self.defaultValue = defaultValue
5050
self.enumValues = enumValues
51-
self.isRequired = defaultValue == nil
51+
self.isRequired = isRequired
5252
}
5353
}

Sources/SwiftMCPMacros/MCPToolMacro.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,9 @@ public struct MCPToolMacro: PeerMacro {
234234
let enumValuesStr = ".init(caseLabelsFrom: \(paramType).self)"
235235

236236
// Create parameter info with isRequired property
237-
parameterString += "MCPToolParameterInfo(name: \"\(paramName)\", label: \"\(paramLabel)\", type: \"\(paramType)\", description: \(paramDescription), defaultValue: \(defaultValue), enumValues: \(enumValuesStr))"
237+
let isOptionalType = paramType.hasSuffix("?") || paramType.hasSuffix("!")
238+
let isRequired = defaultValue == "nil" && !isOptionalType
239+
parameterString += "MCPToolParameterInfo(name: \"\(paramName)\", label: \"\(paramLabel)\", type: \"\(paramType)\", description: \(paramDescription), defaultValue: \(defaultValue), enumValues: \(enumValuesStr), isRequired: \(isRequired))"
238240

239241
// Store parameter info for wrapper function generation
240242
parameterInfos.append((name: paramName, label: paramLabel, type: paramType, defaultValue: defaultValue))

0 commit comments

Comments
 (0)