Add server "completions" capability (#232)

* Split apart Capabilities.cs

No code changes, just moving each type to its own file.

* Add server completions capability
This commit is contained in:
Stephen Toub 2025-04-07 16:59:37 -04:00 • committed by GitHub
commit 82510d5629
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -198,44 +198,29 @@ public class McpServerTests : LoggedTest
public async Task Can_Handle_Completion_Requests()
{
await Can_Handle_Requests(
serverCapabilities: null,
new()
{
Completions = new()
{
CompleteHandler = (request, ct) =>
Task.FromResult(new CompleteResult
{
Completion = new()
{
Values = ["test"],
Total = 2,
HasMore = true
}
})
}
},
method: RequestMethods.CompletionComplete,
configureOptions: null,
assertResult: response =>
{
var result = JsonSerializer.Deserialize<CompleteResult>(response);
Assert.NotNull(result?.Completion);
Assert.Empty(result.Completion.Values);
Assert.Equal(0, result.Completion.Total);
Assert.False(result.Completion.HasMore);
});
}
[Fact]
public async Task Can_Handle_Completion_Requests_With_Handler()
{
await Can_Handle_Requests(
serverCapabilities: null,
method: RequestMethods.CompletionComplete,
configureOptions: options =>
{
options.GetCompletionHandler = (request, ct) =>
Task.FromResult(new CompleteResult
{
Completion = new()
{
Values = ["test"],
Total = 2,
HasMore = true
}
});
},
assertResult: response =>
{
CompleteResult? result = JsonSerializer.Deserialize<CompleteResult>(response);
Assert.NotNull(result?.Completion);
Assert.NotEmpty(result.Completion.Values);
Assert.Equal("test", result.Completion.Values[0]);
Assert.Equal(["test"], result.Completion.Values);
Assert.Equal(2, result.Completion.Total);
Assert.True(result.Completion.HasMore);
});