Skip to content

Commit 6b8c288

Browse files
authored
Make McpJsonUtilities public and remove IVT to sample (#5)
Also adds in the same encoder used by AIJsonUtilities.
1 parent 555933a commit 6b8c288

File tree

13 files changed

+56
-27
lines changed

13 files changed

+56
-27
lines changed

samples/AspNetCoreSseServer/McpEndpointRouteBuilderExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public static IEndpointConventionBuilder MapMcpSse(this IEndpointRouteBuilder en
4545
return;
4646
}
4747

48-
var message = await context.Request.ReadFromJsonAsync<IJsonRpcMessage>(JsonSerializerOptionsExtensions.DefaultOptions, context.RequestAborted);
48+
var message = await context.Request.ReadFromJsonAsync<IJsonRpcMessage>(McpJsonUtilities.DefaultOptions, context.RequestAborted);
4949
if (message is null)
5050
{
5151
await Results.BadRequest("No message in request body.").ExecuteAsync(context);

samples/AspNetCoreSseServer/SseServerStreamTransport.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ void WriteJsonRpcMessageToBuffer(SseItem<IJsonRpcMessage?> item, IBufferWriter<b
2828
return;
2929
}
3030

31-
JsonSerializer.Serialize(GetUtf8JsonWriter(writer), item.Data, JsonSerializerOptionsExtensions.DefaultOptions);
31+
JsonSerializer.Serialize(GetUtf8JsonWriter(writer), item.Data, McpJsonUtilities.DefaultOptions);
3232
}
3333

3434
// The very first SSE event isn't really an IJsonRpcMessage, but there's no API to write a single item of a different type,

src/ModelContextProtocol/Client/McpClient.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ private async Task InitializeAsync(CancellationToken cancellationToken)
139139

140140
// Store server information
141141
_logger.ServerCapabilitiesReceived(EndpointName,
142-
capabilities: JsonSerializer.Serialize(initializeResponse.Capabilities, JsonSerializerOptionsExtensions.JsonContext.Default.ServerCapabilities),
143-
serverInfo: JsonSerializer.Serialize(initializeResponse.ServerInfo, JsonSerializerOptionsExtensions.JsonContext.Default.Implementation));
142+
capabilities: JsonSerializer.Serialize(initializeResponse.Capabilities, McpJsonUtilities.JsonContext.Default.ServerCapabilities),
143+
serverInfo: JsonSerializer.Serialize(initializeResponse.ServerInfo, McpJsonUtilities.JsonContext.Default.Implementation));
144144

145145
ServerCapabilities = initializeResponse.Capabilities;
146146
ServerInfo = initializeResponse.ServerInfo;

src/ModelContextProtocol/Client/McpClientExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,7 @@ private sealed class McpAIFunction(IMcpClient client, Tool tool) : AIFunction
483483
["description"] = tool.Description ?? string.Empty,
484484
["properties"] = tool.InputSchema?.Properties ?? [],
485485
["required"] = tool.InputSchema?.Required ?? []
486-
}, JsonSerializerOptionsExtensions.JsonContext.Default.DictionaryStringObject);
486+
}, McpJsonUtilities.JsonContext.Default.DictionaryStringObject);
487487

488488
/// <inheritdoc/>
489489
protected async override Task<object?> InvokeCoreAsync(
@@ -501,7 +501,7 @@ private sealed class McpAIFunction(IMcpClient client, Tool tool) : AIFunction
501501
}
502502

503503
CallToolResponse result = await client.CallToolAsync(tool.Name, argDict, cancellationToken).ConfigureAwait(false);
504-
return JsonSerializer.SerializeToElement(result, JsonSerializerOptionsExtensions.JsonContext.Default.CallToolResponse);
504+
return JsonSerializer.SerializeToElement(result, McpJsonUtilities.JsonContext.Default.CallToolResponse);
505505
}
506506
}
507507
}

src/ModelContextProtocol/Configuration/McpServerBuilderExtensions.Tools.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public static IMcpServerBuilder WithTools(this IMcpServerBuilder builder, params
9696
{
9797
Name = function.Name,
9898
Description = function.Description,
99-
InputSchema = JsonSerializer.Deserialize(function.JsonSchema, JsonSerializerOptionsExtensions.JsonContext.Default.JsonSchema),
99+
InputSchema = JsonSerializer.Deserialize(function.JsonSchema, McpJsonUtilities.JsonContext.Default.JsonSchema),
100100
});
101101

102102
callbacks.Add(function.Name, async (request, cancellationToken) =>

src/ModelContextProtocol/ModelContextProtocol.csproj

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,11 @@
1212
<PropertyGroup Condition="'$(TargetFramework)' != 'netstandard2.0'">
1313
<IsAotCompatible>true</IsAotCompatible>
1414
</PropertyGroup>
15-
15+
1616
<ItemGroup>
1717
<InternalsVisibleTo Include="ModelContextProtocol.Tests" />
18-
<InternalsVisibleTo Include="AspNetCoreSseServer" />
1918
</ItemGroup>
20-
19+
2120
<ItemGroup>
2221
<PackageReference Include="Microsoft.Extensions.AI.Abstractions"/>
2322
<PackageReference Include="Microsoft.Extensions.AI" />

src/ModelContextProtocol/Protocol/Transport/HttpListenerSseServerTransport.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public HttpListenerSseServerTransport(string serverName, int port, ILoggerFactor
4242
{
4343
_serverName = serverName;
4444
_logger = loggerFactory.CreateLogger<HttpListenerSseServerTransport>();
45-
_jsonOptions = JsonSerializerOptionsExtensions.DefaultOptions;
45+
_jsonOptions = McpJsonUtilities.DefaultOptions;
4646
_httpServerProvider = new HttpListenerServerProvider(port);
4747
}
4848

src/ModelContextProtocol/Protocol/Transport/SseClientTransport.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public SseClientTransport(SseClientTransportOptions transportOptions, McpServerC
6565
_httpClient = httpClient;
6666
_connectionCts = new CancellationTokenSource();
6767
_logger = (ILogger?)loggerFactory?.CreateLogger<SseClientTransport>() ?? NullLogger.Instance;
68-
_jsonOptions = JsonSerializerOptionsExtensions.DefaultOptions;
68+
_jsonOptions = McpJsonUtilities.DefaultOptions;
6969
_connectionEstablished = new TaskCompletionSource<bool>();
7070
_ownsHttpClient = ownsHttpClient;
7171
}

src/ModelContextProtocol/Protocol/Transport/StdioClientTransport.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public StdioClientTransport(StdioClientTransportOptions options, McpServerConfig
4343
_options = options;
4444
_serverConfig = serverConfig;
4545
_logger = (ILogger?)loggerFactory?.CreateLogger<StdioClientTransport>() ?? NullLogger.Instance;
46-
_jsonOptions = JsonSerializerOptionsExtensions.DefaultOptions;
46+
_jsonOptions = McpJsonUtilities.DefaultOptions;
4747
}
4848

4949
/// <inheritdoc/>

src/ModelContextProtocol/Protocol/Transport/StdioServerTransport.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public sealed class StdioServerTransport : TransportBase, IServerTransport
2121
private readonly string _serverName;
2222
private readonly ILogger _logger;
2323

24-
private readonly JsonSerializerOptions _jsonOptions = JsonSerializerOptionsExtensions.DefaultOptions;
24+
private readonly JsonSerializerOptions _jsonOptions = McpJsonUtilities.DefaultOptions;
2525
private readonly TextReader _stdin = Console.In;
2626
private readonly TextWriter _stdout = Console.Out;
2727

0 commit comments

Comments
 (0)