Skip to content

Commit e59e5d8

Browse files
author
Tarek Mahmoud Sayed
committed
Move McpHeaderEncoder from Client to Protocol namespace
McpHeaderEncoder is a shared utility used by both client-side (McpHeaderExtractor) and server-side (StreamableHttpHandler) code. Placing it in the Client namespace forced server code to reference ModelContextProtocol.Client, creating a misleading dependency. Move it to ModelContextProtocol.Protocol alongside McpHttpHeaders where it logically belongs as a transport-level concern.
1 parent 417930b commit e59e5d8

4 files changed

Lines changed: 5 additions & 7 deletions

File tree

src/ModelContextProtocol.AspNetCore/StreamableHttpHandler.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -732,7 +732,7 @@ argForMissing is not null &&
732732
return false;
733733
}
734734

735-
var decodedActual = Client.McpHeaderEncoder.DecodeValue(actualHeaderValue);
735+
var decodedActual = McpHeaderEncoder.DecodeValue(actualHeaderValue);
736736
if (decodedActual is null)
737737
{
738738
errorMessage = $"Header mismatch: {fullHeaderName} header contains invalid Base64 encoding.";
@@ -747,7 +747,7 @@ argForMissing is not null &&
747747
var expectedHeaderValue = ConvertJsonNodeToHeaderValue(argNode);
748748
if (expectedHeaderValue is not null)
749749
{
750-
var decodedExpected = Client.McpHeaderEncoder.DecodeValue(expectedHeaderValue);
750+
var decodedExpected = McpHeaderEncoder.DecodeValue(expectedHeaderValue);
751751
if (!string.Equals(decodedActual, decodedExpected, StringComparison.Ordinal))
752752
{
753753
errorMessage = $"Header mismatch: {fullHeaderName} header value does not match body argument '{property.Name}'.";
@@ -807,7 +807,7 @@ private static bool IsValidHeaderValue(string value)
807807
_ => null
808808
};
809809

810-
return Client.McpHeaderEncoder.EncodeValue(value);
810+
return McpHeaderEncoder.EncodeValue(value);
811811
}
812812

813813
private static bool MatchesApplicationJsonMediaType(MediaTypeHeaderValue acceptHeaderValue)

src/ModelContextProtocol.Core/Client/McpHeaderEncoder.cs renamed to src/ModelContextProtocol.Core/Protocol/McpHeaderEncoder.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System.Text;
2-
using ModelContextProtocol.Protocol;
32

4-
namespace ModelContextProtocol.Client;
3+
namespace ModelContextProtocol.Protocol;
54

65
/// <summary>
76
/// Encodes and decodes parameter values for use in MCP HTTP headers according to the

tests/ModelContextProtocol.AspNetCore.Tests/Sep2243HeaderTests.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using Microsoft.AspNetCore.Builder;
22
using Microsoft.Extensions.DependencyInjection;
33
using ModelContextProtocol.AspNetCore.Tests.Utils;
4-
using ModelContextProtocol.Client;
54
using ModelContextProtocol.Protocol;
65
using ModelContextProtocol.Server;
76
using ModelContextProtocol.Tests.Utils;

tests/ModelContextProtocol.Tests/Client/McpHeaderEncoderTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using ModelContextProtocol.Client;
1+
using ModelContextProtocol.Protocol;
22

33
namespace ModelContextProtocol.Tests.Client;
44

0 commit comments

Comments
 (0)