Skip to content

Commit b6b5b3b

Browse files
committed
Add Client extensions for ListResourceTemplates
1 parent 95b90de commit b6b5b3b

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

src/ModelContextProtocol/Client/McpClientExtensions.cs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,44 @@ public static Task<GetPromptResult> GetPromptAsync(this IMcpClient client, strin
139139
cancellationToken);
140140
}
141141

142+
/// <summary>
143+
/// Retrieves a sequence of available resources from the server.
144+
/// </summary>
145+
/// <param name="client">The client.</param>
146+
/// <param name="cancellationToken">A token to cancel the operation.</param>
147+
/// <returns>An asynchronous sequence of resource information.</returns>
148+
public static async IAsyncEnumerable<ResourceTemplate> ListResourceTemplatesAsync(
149+
this IMcpClient client, [EnumeratorCancellation] CancellationToken cancellationToken = default)
150+
{
151+
string? cursor = null;
152+
do
153+
{
154+
var resources = await ListResourceTemplatesAsync(client, cursor, cancellationToken).ConfigureAwait(false);
155+
foreach (var resource in resources.ResourceTemplates)
156+
{
157+
yield return resource;
158+
}
159+
160+
cursor = resources.NextCursor;
161+
}
162+
while (cursor is not null);
163+
}
164+
165+
/// <summary>
166+
/// Retrieves a list of available resources from the server.
167+
/// </summary>
168+
/// <param name="client">The client.</param>
169+
/// <param name="cursor">A cursor to paginate the results.</param>
170+
/// <param name="cancellationToken">A token to cancel the operation.</param>
171+
public static Task<ListResourceTemplatesResult> ListResourceTemplatesAsync(this IMcpClient client, string? cursor, CancellationToken cancellationToken = default)
172+
{
173+
Throw.IfNull(client);
174+
175+
return client.SendRequestAsync<ListResourceTemplatesResult>(
176+
CreateRequest("resources/templates/list", CreateCursorDictionary(cursor)),
177+
cancellationToken);
178+
}
179+
142180
/// <summary>
143181
/// Retrieves a sequence of available resources from the server.
144182
/// </summary>

0 commit comments

Comments
 (0)