From 571e4dc1277f653b11052e9349d8b353367982c1 Mon Sep 17 00:00:00 2001
From: Copilot <198982749+Copilot@users.noreply.github.com>
Date: Mon, 23 Feb 2026 11:37:35 -0500
Subject: [PATCH] Make LoggingMessageNotificationParams.Data required per MCP
spec (#1353)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
---
.../Protocol/LoggingMessageNotificationParams.cs | 5 +++--
tests/ModelContextProtocol.Tests/Client/McpClientTests.cs | 4 +---
.../Protocol/LoggingMessageNotificationParamsTests.cs | 8 ++++----
3 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/src/ModelContextProtocol.Core/Protocol/LoggingMessageNotificationParams.cs b/src/ModelContextProtocol.Core/Protocol/LoggingMessageNotificationParams.cs
index 23e5727..600f620 100644
--- a/src/ModelContextProtocol.Core/Protocol/LoggingMessageNotificationParams.cs
+++ b/src/ModelContextProtocol.Core/Protocol/LoggingMessageNotificationParams.cs
@@ -45,8 +45,9 @@ public sealed class LoggingMessageNotificationParams : NotificationParams
public string? Logger { get; set; }
///
- /// Gets or sets the data to be logged, such as a string message.
+ /// Gets or sets the data to be logged, such as a string message or an object.
+ /// Any JSON serializable type is allowed here.
///
[JsonPropertyName("data")]
- public JsonElement? Data { get; set; }
+ public required JsonElement Data { get; set; }
}
diff --git a/tests/ModelContextProtocol.Tests/Client/McpClientTests.cs b/tests/ModelContextProtocol.Tests/Client/McpClientTests.cs
index 26906f2..32e04da 100644
--- a/tests/ModelContextProtocol.Tests/Client/McpClientTests.cs
+++ b/tests/ModelContextProtocol.Tests/Client/McpClientTests.cs
@@ -539,11 +539,9 @@ public class McpClientTests : ClientServerTestBase
{
var m = await channel.Reader.ReadAsync(TestContext.Current.CancellationToken);
Assert.NotNull(m);
- Assert.NotNull(m.Data);
-
Assert.Equal("TestLogger", m.Logger);
- string? s = JsonSerializer.Deserialize(m.Data.Value, McpJsonUtilities.DefaultOptions);
+ string? s = JsonSerializer.Deserialize(m.Data, McpJsonUtilities.DefaultOptions);
Assert.NotNull(s);
if (s.Contains("Information"))
diff --git a/tests/ModelContextProtocol.Tests/Protocol/LoggingMessageNotificationParamsTests.cs b/tests/ModelContextProtocol.Tests/Protocol/LoggingMessageNotificationParamsTests.cs
index 449db33..2e8e473 100644
--- a/tests/ModelContextProtocol.Tests/Protocol/LoggingMessageNotificationParamsTests.cs
+++ b/tests/ModelContextProtocol.Tests/Protocol/LoggingMessageNotificationParamsTests.cs
@@ -23,8 +23,7 @@ public static class LoggingMessageNotificationParamsTests
Assert.NotNull(deserialized);
Assert.Equal(LoggingLevel.Warning, deserialized.Level);
Assert.Equal("MyApp.Services", deserialized.Logger);
- Assert.NotNull(deserialized.Data);
- Assert.Equal("Something went wrong", deserialized.Data.Value.GetString());
+ Assert.Equal("Something went wrong", deserialized.Data.GetString());
Assert.NotNull(deserialized.Meta);
Assert.Equal("value", (string)deserialized.Meta["key"]!);
}
@@ -34,7 +33,8 @@ public static class LoggingMessageNotificationParamsTests
{
var original = new LoggingMessageNotificationParams
{
- Level = LoggingLevel.Error
+ Level = LoggingLevel.Error,
+ Data = JsonDocument.Parse("\"error occurred\"").RootElement.Clone(),
};
string json = JsonSerializer.Serialize(original, McpJsonUtilities.DefaultOptions);
@@ -43,7 +43,7 @@ public static class LoggingMessageNotificationParamsTests
Assert.NotNull(deserialized);
Assert.Equal(LoggingLevel.Error, deserialized.Level);
Assert.Null(deserialized.Logger);
- Assert.Null(deserialized.Data);
+ Assert.Equal("error occurred", deserialized.Data.GetString());
Assert.Null(deserialized.Meta);
}
}