Forge
csharpf583a481
1namespace McpToolManifest;
2
3public static class ToolCatalogNameComparer
4{
5 public static IReadOnlyList<string> Compare(
6 IEnumerable<string> manifestToolNames,
7 IEnumerable<string> catalogToolNames)
8 {
9 var m = new HashSet<string>(
10 manifestToolNames.Where(s => !string.IsNullOrWhiteSpace(s)).Select(s => s.Trim()),
11 StringComparer.Ordinal);
12 var c = new HashSet<string>(
13 catalogToolNames.Where(s => !string.IsNullOrWhiteSpace(s)).Select(s => s.Trim()),
14 StringComparer.Ordinal);
15
16 var errors = new List<string>();
17 foreach (var x in m)
18 {
19 if (!c.Contains(x))
20 errors.Add($"In manifest but not in catalog: {x}");
21 }
22
23 foreach (var x in c)
24 {
25 if (!m.Contains(x))
26 errors.Add($"In catalog but not in manifest: {x}");
27 }
28
29 return errors;
30 }
31}
32
33
View only · write via MCP/CIDE