From e9ea290907cca17c0aeffa9e62e891720f01c72f Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Sun, 8 Mar 2026 15:52:10 -0400 Subject: [PATCH] fix(mcp): add null guards and safe parsing to pack_plate Co-Authored-By: Claude Opus 4.6 --- OpenNest.Mcp/Tools/NestingTools.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/OpenNest.Mcp/Tools/NestingTools.cs b/OpenNest.Mcp/Tools/NestingTools.cs index 48c8517..893823d 100644 --- a/OpenNest.Mcp/Tools/NestingTools.cs +++ b/OpenNest.Mcp/Tools/NestingTools.cs @@ -140,8 +140,21 @@ namespace OpenNest.Mcp.Tools if (plate == null) return $"Error: plate {plateIndex} not found"; + if (string.IsNullOrWhiteSpace(drawingNames)) + return "Error: drawingNames is required"; + + if (string.IsNullOrWhiteSpace(quantities)) + return "Error: quantities is required"; + var names = drawingNames.Split(',').Select(n => n.Trim()).ToArray(); - var qtys = quantities.Split(',').Select(q => int.Parse(q.Trim())).ToArray(); + var qtyStrings = quantities.Split(',').Select(q => q.Trim()).ToArray(); + var qtys = new int[qtyStrings.Length]; + + for (var i = 0; i < qtyStrings.Length; i++) + { + if (!int.TryParse(qtyStrings[i], out qtys[i])) + return $"Error: '{qtyStrings[i]}' is not a valid quantity"; + } if (names.Length != qtys.Length) return $"Error: drawing names count ({names.Length}) does not match quantities count ({qtys.Length})";