From 8c7d1550540747aa3d5a08d4cf0c33d97af0147f Mon Sep 17 00:00:00 2001 From: PederHP Date: Tue, 5 Aug 2025 21:26:56 +0200 Subject: [PATCH 1/4] Resource subscription is now supported --- src/ModelContextProtocol.Core/Server/McpServer.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ModelContextProtocol.Core/Server/McpServer.cs b/src/ModelContextProtocol.Core/Server/McpServer.cs index 6c5858f9..e14d0add 100644 --- a/src/ModelContextProtocol.Core/Server/McpServer.cs +++ b/src/ModelContextProtocol.Core/Server/McpServer.cs @@ -308,8 +308,7 @@ await originalListResourceTemplatesHandler(request, cancellationToken).Configure listChanged = true; - // TODO: Implement subscribe/unsubscribe logic for resource and resource template collections. - // subscribe = true; + subscribe = true; } ServerCapabilities.Resources.ListResourcesHandler = listResourcesHandler; From d2d98f14c4c9fae54d743df7455397986c867643 Mon Sep 17 00:00:00 2001 From: PederHP Date: Tue, 5 Aug 2025 21:42:12 +0200 Subject: [PATCH 2/4] Allow subscribing to resources, but subscribe is only true if full set of handlers present. --- src/ModelContextProtocol.Core/Server/McpServer.cs | 3 ++- src/ModelContextProtocol/McpServerHandlers.cs | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/ModelContextProtocol.Core/Server/McpServer.cs b/src/ModelContextProtocol.Core/Server/McpServer.cs index e14d0add..a4d72c73 100644 --- a/src/ModelContextProtocol.Core/Server/McpServer.cs +++ b/src/ModelContextProtocol.Core/Server/McpServer.cs @@ -308,7 +308,8 @@ await originalListResourceTemplatesHandler(request, cancellationToken).Configure listChanged = true; - subscribe = true; + // TODO: Implement subscribe/unsubscribe logic for resource and resource template collections + // subscribe = true; } ServerCapabilities.Resources.ListResourcesHandler = listResourcesHandler; diff --git a/src/ModelContextProtocol/McpServerHandlers.cs b/src/ModelContextProtocol/McpServerHandlers.cs index a07c81b5..8dcebeec 100644 --- a/src/ModelContextProtocol/McpServerHandlers.cs +++ b/src/ModelContextProtocol/McpServerHandlers.cs @@ -188,12 +188,17 @@ internal void OverwriteWithSetHandlers(McpServerOptions options) if (SubscribeToResourcesHandler is not null || UnsubscribeFromResourcesHandler is not null) { - resourcesCapability.SubscribeToResourcesHandler = SubscribeToResourcesHandler ?? resourcesCapability.SubscribeToResourcesHandler; - resourcesCapability.UnsubscribeFromResourcesHandler = UnsubscribeFromResourcesHandler ?? resourcesCapability.UnsubscribeFromResourcesHandler; resourcesCapability.Subscribe = true; } } + if (SubscribeToResourcesHandler is not null || UnsubscribeFromResourcesHandler is not null) + { + resourcesCapability.SubscribeToResourcesHandler = SubscribeToResourcesHandler ?? resourcesCapability.SubscribeToResourcesHandler; + resourcesCapability.UnsubscribeFromResourcesHandler = UnsubscribeFromResourcesHandler ?? resourcesCapability.UnsubscribeFromResourcesHandler; + } + + ToolsCapability? toolsCapability = options.Capabilities?.Tools; if (ListToolsHandler is not null || CallToolHandler is not null) { From ddf598430c855883338dfa669923c48b504adee8 Mon Sep 17 00:00:00 2001 From: PederHP Date: Tue, 5 Aug 2025 21:42:12 +0200 Subject: [PATCH 3/4] Allow subscribing to resources, but subscribe is only true if full set of handlers present. --- src/ModelContextProtocol.Core/Server/McpServer.cs | 3 ++- src/ModelContextProtocol/McpServerHandlers.cs | 12 ++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/ModelContextProtocol.Core/Server/McpServer.cs b/src/ModelContextProtocol.Core/Server/McpServer.cs index e14d0add..a4d72c73 100644 --- a/src/ModelContextProtocol.Core/Server/McpServer.cs +++ b/src/ModelContextProtocol.Core/Server/McpServer.cs @@ -308,7 +308,8 @@ await originalListResourceTemplatesHandler(request, cancellationToken).Configure listChanged = true; - subscribe = true; + // TODO: Implement subscribe/unsubscribe logic for resource and resource template collections + // subscribe = true; } ServerCapabilities.Resources.ListResourcesHandler = listResourcesHandler; diff --git a/src/ModelContextProtocol/McpServerHandlers.cs b/src/ModelContextProtocol/McpServerHandlers.cs index a07c81b5..0af79e97 100644 --- a/src/ModelContextProtocol/McpServerHandlers.cs +++ b/src/ModelContextProtocol/McpServerHandlers.cs @@ -185,13 +185,13 @@ internal void OverwriteWithSetHandlers(McpServerOptions options) resourcesCapability.ListResourceTemplatesHandler = ListResourceTemplatesHandler ?? resourcesCapability.ListResourceTemplatesHandler; resourcesCapability.ListResourcesHandler = ListResourcesHandler ?? resourcesCapability.ListResourcesHandler; resourcesCapability.ReadResourceHandler = ReadResourceHandler ?? resourcesCapability.ReadResourceHandler; + } - if (SubscribeToResourcesHandler is not null || UnsubscribeFromResourcesHandler is not null) - { - resourcesCapability.SubscribeToResourcesHandler = SubscribeToResourcesHandler ?? resourcesCapability.SubscribeToResourcesHandler; - resourcesCapability.UnsubscribeFromResourcesHandler = UnsubscribeFromResourcesHandler ?? resourcesCapability.UnsubscribeFromResourcesHandler; - resourcesCapability.Subscribe = true; - } + if (SubscribeToResourcesHandler is not null || UnsubscribeFromResourcesHandler is not null) + { + resourcesCapability.SubscribeToResourcesHandler = SubscribeToResourcesHandler ?? resourcesCapability.SubscribeToResourcesHandler; + resourcesCapability.UnsubscribeFromResourcesHandler = UnsubscribeFromResourcesHandler ?? resourcesCapability.UnsubscribeFromResourcesHandler; + resourcesCapability.Subscribe = true; } ToolsCapability? toolsCapability = options.Capabilities?.Tools; From 318bd9e3437457fa7017d7fc2669761d3c13f469 Mon Sep 17 00:00:00 2001 From: PederHP Date: Tue, 5 Aug 2025 21:47:07 +0200 Subject: [PATCH 4/4] Tweak --- src/ModelContextProtocol.Core/Server/McpServer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ModelContextProtocol.Core/Server/McpServer.cs b/src/ModelContextProtocol.Core/Server/McpServer.cs index a4d72c73..6c5858f9 100644 --- a/src/ModelContextProtocol.Core/Server/McpServer.cs +++ b/src/ModelContextProtocol.Core/Server/McpServer.cs @@ -308,7 +308,7 @@ await originalListResourceTemplatesHandler(request, cancellationToken).Configure listChanged = true; - // TODO: Implement subscribe/unsubscribe logic for resource and resource template collections + // TODO: Implement subscribe/unsubscribe logic for resource and resource template collections. // subscribe = true; }