Skip to content

Commit 705be6b

Browse files
Address feedback
1 parent 616bd2a commit 705be6b

3 files changed

Lines changed: 8 additions & 7 deletions

File tree

src/ModelContextProtocol.Core/Server/AIFunctionMcpServerResource.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ private AIFunctionMcpServerResource(AIFunction function, ResourceTemplate resour
359359
return null;
360360
}
361361
}
362-
else if (new Uri(request.Params.Uri) != new Uri(ProtocolResource!.Uri))
362+
else if (UriTemplate.UriTemplateComparer.Instance.Equals(request.Params.Uri, ProtocolResource!.Uri))
363363
{
364364
return null;
365365
}

src/ModelContextProtocol.Core/Server/McpServer.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ private void ConfigureResources(McpServerOptions options)
228228
var unsubscribeHandler = resourcesCapability.UnsubscribeFromResourcesHandler ?? (static async (_, __) => new EmptyResult());
229229
var resources = resourcesCapability.ResourceCollection;
230230
var listChanged = resourcesCapability.ListChanged;
231-
var subcribe = resourcesCapability.Subscribe;
231+
var subscribe = resourcesCapability.Subscribe;
232232

233233
// Handle resources provided via DI.
234234
if (resources is { IsEmpty: false })
@@ -309,7 +309,7 @@ await originalListResourceTemplatesHandler(request, cancellationToken).Configure
309309
listChanged = true;
310310

311311
// TODO: Implement subscribe/unsubscribe logic for resource and resource template collections.
312-
// subcribe = true;
312+
// subscribe = true;
313313
}
314314

315315
ServerCapabilities.Resources.ListResourcesHandler = listResourcesHandler;
@@ -319,7 +319,7 @@ await originalListResourceTemplatesHandler(request, cancellationToken).Configure
319319
ServerCapabilities.Resources.SubscribeToResourcesHandler = subscribeHandler;
320320
ServerCapabilities.Resources.UnsubscribeFromResourcesHandler = unsubscribeHandler;
321321
ServerCapabilities.Resources.ListChanged = listChanged;
322-
ServerCapabilities.Resources.Subscribe = subcribe;
322+
ServerCapabilities.Resources.Subscribe = subscribe;
323323

324324
SetHandler(
325325
RequestMethods.ResourcesList,

src/ModelContextProtocol.Core/UriTemplate.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -461,8 +461,9 @@ static void AppendHex(ref DefaultInterpolatedStringHandler builder, char c)
461461
/// 2. Templated Uris use regular string equality.
462462
///
463463
/// We do this because non-templated resources are looked up directly from the resource dictionary
464-
/// and we need to make sure equality is implemented correctly. Templated Uris are resolved using
465-
/// linear traversal so there's no need for equality comparison to be fully accurate.
464+
/// and we need to make sure equality is implemented correctly. Templated Uris are resolved in a
465+
/// fallback step using linear traversal of the resource dictionary, so their equality is only
466+
/// there to distinguish between different templates.
466467
/// </summary>
467468
public sealed class UriTemplateComparer : IEqualityComparer<string>
468469
{
@@ -499,7 +500,7 @@ private static bool TryParseAsNonTemplatedUri(string? uriTemplate, [NotNullWhen(
499500
return false;
500501
}
501502

502-
return Uri.TryCreate(uriTemplate, UriKind.RelativeOrAbsolute, out uri);
503+
return Uri.TryCreate(uriTemplate, UriKind.Absolute, out uri);
503504
}
504505
}
505506
}

0 commit comments

Comments
 (0)