Skip to content

Commit 3727dc4

Browse files
Copilotstephentoub
andauthored
Omit null mimeType from ResourceContents JSON serialization (#1325)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> Co-authored-by: Stephen Toub <stoub@microsoft.com>
1 parent 54283a8 commit 3727dc4

2 files changed

Lines changed: 34 additions & 1 deletion

File tree

src/ModelContextProtocol.Core/Protocol/ResourceContents.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,10 @@ public override void Write(Utf8JsonWriter writer, ResourceContents value, JsonSe
158158

159159
writer.WriteStartObject();
160160
writer.WriteString("uri", value.Uri);
161-
writer.WriteString("mimeType", value.MimeType);
161+
if (value.MimeType is not null)
162+
{
163+
writer.WriteString("mimeType", value.MimeType);
164+
}
162165

163166
Debug.Assert(value is BlobResourceContents or TextResourceContents);
164167
if (value is BlobResourceContents blobResource)

tests/ModelContextProtocol.Tests/Protocol/ResourceContentsTests.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,4 +459,34 @@ public static void BlobResourceContents_MissingUri_UsesEmptyString()
459459
Assert.Equal(string.Empty, blobResource.Uri);
460460
Assert.Equal("YmxvYg==", System.Text.Encoding.UTF8.GetString(blobResource.Blob.ToArray()));
461461
}
462+
463+
[Fact]
464+
public static void TextResourceContents_NullMimeType_OmittedFromJson()
465+
{
466+
var resource = new TextResourceContents
467+
{
468+
Uri = "file:///test.txt",
469+
MimeType = null,
470+
Text = "hello"
471+
};
472+
473+
var json = JsonSerializer.Serialize<ResourceContents>(resource, McpJsonUtilities.DefaultOptions);
474+
475+
Assert.DoesNotContain("mimeType", json);
476+
}
477+
478+
[Fact]
479+
public static void BlobResourceContents_NullMimeType_OmittedFromJson()
480+
{
481+
var resource = new BlobResourceContents
482+
{
483+
Uri = "file:///test.bin",
484+
MimeType = null,
485+
Blob = new byte[] { 1, 2, 3 }
486+
};
487+
488+
var json = JsonSerializer.Serialize<ResourceContents>(resource, McpJsonUtilities.DefaultOptions);
489+
490+
Assert.DoesNotContain("mimeType", json);
491+
}
462492
}

0 commit comments

Comments
 (0)