Make RequestId non-required (#984)

This commit is contained in:
Mackinnon Buck 2025-11-18 16:03:31 -08:00 • committed by GitHub
commit d540dc1fb1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 2 additions and 20 deletions

View file

@ -250,7 +250,6 @@ internal sealed class StreamableHttpHandler(
{ {
var jsonRpcError = new JsonRpcError var jsonRpcError = new JsonRpcError
{ {
Id = default,
Error = new() Error = new()
{ {
Code = errorCode, Code = errorCode,

View file

@ -26,5 +26,5 @@ public abstract class JsonRpcMessageWithId : JsonRpcMessage
/// Each ID is expected to be unique within the context of a given session. /// Each ID is expected to be unique within the context of a given session.
/// </remarks> /// </remarks>
[JsonPropertyName("id")] [JsonPropertyName("id")]
public required RequestId Id { get; set; } public RequestId Id { get; set; }
} }

View file

@ -203,7 +203,6 @@ public class StatelessServerTests(ITestOutputHelper outputHelper) : KestrelInMem
var ex = await Assert.ThrowsAsync<InvalidOperationException>(() => server.SendRequestAsync(new JsonRpcRequest var ex = await Assert.ThrowsAsync<InvalidOperationException>(() => server.SendRequestAsync(new JsonRpcRequest
{ {
Id = default,
Method = RequestMethods.SamplingCreateMessage Method = RequestMethods.SamplingCreateMessage
})); }));
return ex.Message; return ex.Message;
@ -222,7 +221,6 @@ public class StatelessServerTests(ITestOutputHelper outputHelper) : KestrelInMem
var ex = await Assert.ThrowsAsync<InvalidOperationException>(() => server.SendRequestAsync(new JsonRpcRequest var ex = await Assert.ThrowsAsync<InvalidOperationException>(() => server.SendRequestAsync(new JsonRpcRequest
{ {
Id = default,
Method = RequestMethods.RootsList Method = RequestMethods.RootsList
})); }));
return ex.Message; return ex.Message;
@ -241,7 +239,6 @@ public class StatelessServerTests(ITestOutputHelper outputHelper) : KestrelInMem
var ex = await Assert.ThrowsAsync<InvalidOperationException>(() => server.SendRequestAsync(new JsonRpcRequest var ex = await Assert.ThrowsAsync<InvalidOperationException>(() => server.SendRequestAsync(new JsonRpcRequest
{ {
Id = default,
Method = RequestMethods.ElicitationCreate Method = RequestMethods.ElicitationCreate
})); }));
return ex.Message; return ex.Message;

View file

@ -204,7 +204,6 @@ public class McpClientExtensionsTests
.Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>())) .Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new JsonRpcResponse .ReturnsAsync(new JsonRpcResponse
{ {
Id = default,
Result = JsonSerializer.SerializeToNode(new object(), McpJsonUtilities.DefaultOptions), Result = JsonSerializer.SerializeToNode(new object(), McpJsonUtilities.DefaultOptions),
}); });
@ -226,7 +225,6 @@ public class McpClientExtensionsTests
.Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>())) .Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new JsonRpcResponse .ReturnsAsync(new JsonRpcResponse
{ {
Id = default,
Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions), Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions),
}); });
@ -249,7 +247,6 @@ public class McpClientExtensionsTests
.Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>())) .Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new JsonRpcResponse .ReturnsAsync(new JsonRpcResponse
{ {
Id = default,
Result = JsonSerializer.SerializeToNode(callResult, McpJsonUtilities.DefaultOptions), Result = JsonSerializer.SerializeToNode(callResult, McpJsonUtilities.DefaultOptions),
}); });
@ -270,7 +267,6 @@ public class McpClientExtensionsTests
.Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>())) .Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new JsonRpcResponse .ReturnsAsync(new JsonRpcResponse
{ {
Id = default,
Result = JsonSerializer.SerializeToNode(new EmptyResult(), McpJsonUtilities.DefaultOptions), Result = JsonSerializer.SerializeToNode(new EmptyResult(), McpJsonUtilities.DefaultOptions),
}); });
@ -290,7 +286,6 @@ public class McpClientExtensionsTests
.Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>())) .Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new JsonRpcResponse .ReturnsAsync(new JsonRpcResponse
{ {
Id = default,
Result = JsonSerializer.SerializeToNode(new EmptyResult(), McpJsonUtilities.DefaultOptions), Result = JsonSerializer.SerializeToNode(new EmptyResult(), McpJsonUtilities.DefaultOptions),
}); });
@ -313,7 +308,6 @@ public class McpClientExtensionsTests
.Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>())) .Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new JsonRpcResponse .ReturnsAsync(new JsonRpcResponse
{ {
Id = default,
Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions), Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions),
}); });
@ -336,7 +330,6 @@ public class McpClientExtensionsTests
.Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>())) .Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new JsonRpcResponse .ReturnsAsync(new JsonRpcResponse
{ {
Id = default,
Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions), Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions),
}); });
@ -359,7 +352,6 @@ public class McpClientExtensionsTests
.Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>())) .Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new JsonRpcResponse .ReturnsAsync(new JsonRpcResponse
{ {
Id = default,
Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions), Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions),
}); });
@ -382,7 +374,6 @@ public class McpClientExtensionsTests
.Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>())) .Setup(c => c.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new JsonRpcResponse .ReturnsAsync(new JsonRpcResponse
{ {
Id = default,
Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions), Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions),
}); });

View file

@ -57,7 +57,6 @@ public class McpEndpointExtensionsTests
.Setup(s => s.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>())) .Setup(s => s.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new JsonRpcResponse .ReturnsAsync(new JsonRpcResponse
{ {
Id = default,
Result = JsonSerializer.SerializeToNode(42, McpJsonUtilities.DefaultOptions), Result = JsonSerializer.SerializeToNode(42, McpJsonUtilities.DefaultOptions),
}); });

View file

@ -94,7 +94,6 @@ public class McpServerExtensionsTests
.Setup(s => s.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>())) .Setup(s => s.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new JsonRpcResponse .ReturnsAsync(new JsonRpcResponse
{ {
Id = default,
Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions), Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions),
}); });
@ -146,7 +145,6 @@ public class McpServerExtensionsTests
}) })
.ReturnsAsync(new JsonRpcResponse .ReturnsAsync(new JsonRpcResponse
{ {
Id = default,
Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions), Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions),
}); });
@ -180,7 +178,6 @@ public class McpServerExtensionsTests
.Setup(s => s.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>())) .Setup(s => s.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new JsonRpcResponse .ReturnsAsync(new JsonRpcResponse
{ {
Id = default,
Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions), Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions),
}); });
@ -207,7 +204,6 @@ public class McpServerExtensionsTests
.Setup(s => s.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>())) .Setup(s => s.SendRequestAsync(It.IsAny<JsonRpcRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(new JsonRpcResponse .ReturnsAsync(new JsonRpcResponse
{ {
Id = default,
Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions), Result = JsonSerializer.SerializeToNode(resultPayload, McpJsonUtilities.DefaultOptions),
}); });