Skip to content

Commit f568e01

Browse files
committed
Make ListResourceTemplatesHandler not required
The server was throwing if this handler wasn't specified, and it should probably be optional anyway.
1 parent c36924b commit f568e01

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

src/ModelContextProtocol/Server/McpServer.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,13 +147,15 @@ private void SetResourcesHandler(McpServerOptions options)
147147
}
148148

149149
if (resourcesCapability.ListResourcesHandler is not { } listResourcesHandler ||
150-
resourcesCapability.ReadResourceHandler is not { } readResourceHandler ||
151-
resourcesCapability.ListResourceTemplatesHandler is not { } listResourceTemplatesHandler)
150+
resourcesCapability.ReadResourceHandler is not { } readResourceHandler)
152151
{
153152
throw new McpServerException("Resources capability was enabled, but ListResources and/or ReadResource handlers were not specified.");
154153
}
155154

156-
SetRequestHandler<ListResourceTemplatesRequestParams, ListResourceTemplatesResult>("resources/templates/list", (request, ct) => listResourceTemplatesHandler(new(this, request), ct));
155+
if (resourcesCapability.ListResourceTemplatesHandler is { } listResourceTemplatesHandler)
156+
{
157+
SetRequestHandler<ListResourceTemplatesRequestParams, ListResourceTemplatesResult>("resources/templates/list", (request, ct) => listResourceTemplatesHandler(new(this, request), ct));
158+
}
157159
SetRequestHandler<ListResourcesRequestParams, ListResourcesResult>("resources/list", (request, ct) => listResourcesHandler(new(this, request), ct));
158160
SetRequestHandler<ReadResourceRequestParams, ReadResourceResult>("resources/read", (request, ct) => readResourceHandler(new(this, request), ct));
159161

tests/ModelContextProtocol.Tests/Server/McpServerTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,13 @@ await Can_Handle_Requests(
319319
ResourceTemplates = [new() { UriTemplate = "test", Name = "Test Resource" }]
320320
});
321321
},
322+
ListResourcesHandler = (request, ct) =>
323+
{
324+
return Task.FromResult(new ListResourcesResult
325+
{
326+
Resources = [new() { Uri = "test", Name = "Test Resource" }]
327+
});
328+
},
322329
ReadResourceHandler = (request, ct) => throw new NotImplementedException(),
323330
}
324331
},

0 commit comments

Comments
 (0)