Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,8 @@
<PackageVersion Include="Microsoft.DataFactory.MCP.Core" Version="0.21.0-beta" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.2" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.2" />
<PackageVersion Include="ModelContextProtocol" Version="2.0.0-preview.1" />
<PackageVersion Include="ModelContextProtocol.AspNetCore" Version="2.0.0-preview.1" />
<PackageVersion Include="ModelContextProtocol" Version="2.0.0-preview.3" />
<PackageVersion Include="ModelContextProtocol.AspNetCore" Version="2.0.0-preview.3" />
<PackageVersion Include="MySqlConnector" Version="2.4.0" />
<PackageVersion Include="Npgsql" Version="10.0.1" />
<PackageVersion Include="YamlDotNet" Version="16.3.0" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ private static McpServerOptions CreateOptions(McpServerHandlers? serverHandlers
{
return new McpServerOptions
{
ProtocolVersion = "2024",
// Use a supported protocol version. preview.3 tightened validation and
// rejects bare '2024'; supported versions: 2024-11-05, 2025-11-25, 2026-07-28.
ProtocolVersion = "2025-11-25",
InitializationTimeout = TimeSpan.FromSeconds(30),
Handlers = serverHandlers ?? new(),
ServerInfo = new Implementation { Name = "Azure MCP", Version = "1.0.0-beta" }
Expand Down Expand Up @@ -50,7 +52,7 @@ await Invoke_Request_To_Server(
Assert.NotNull(result);
Assert.Equal("Azure MCP", result.ServerInfo.Name);
Assert.Equal("1.0.0-beta", result.ServerInfo.Version);
Assert.Equal("2024", result.ProtocolVersion);
Assert.Equal("2025-11-25", result.ProtocolVersion);
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,13 @@ public async Task Should_Error_When_Resources_Unsubscribe_Not_Supported()
[Fact]
public async Task Should_Not_Hang_On_Logging_SetLevel_Not_Supported()
{
await Client.SetLoggingLevelAsync(LoggingLevel.Info, cancellationToken: TestContext.Current.CancellationToken);
// logging/setLevel was removed in MCP 2026-07-28 (SDK 2.0.0-preview.3).
// The method is no longer supported; per-request log level is now set via
// _meta/io.modelcontextprotocol/logLevel. The call should throw rather than hang.
var ex = await Assert.ThrowsAsync<McpProtocolException>(
async () => await Client.SetLoggingLevelAsync(LoggingLevel.Info,
cancellationToken: TestContext.Current.CancellationToken));
Assert.Contains("logging/setLevel", ex.Message, StringComparison.OrdinalIgnoreCase);
}

[Fact]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
changes:
- section: "Other Changes"
description: "Updated ModelContextProtocol packages to 2.0.0-preview.3."
subsection: "Dependency Updates"
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public async Task ConsolidatedMode_HttpTransport_Should_List_Tools_On_Root_Endpo
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, $"http://127.0.0.1:{port}/")
{
Content = new StringContent("{" + "\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}" + "}", System.Text.Encoding.UTF8, "application/json")
Content = new StringContent("{" + "\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{\"_meta\":{\"io.modelcontextprotocol/protocolVersion\":\"2026-07-28\",\"io.modelcontextprotocol/clientInfo\":{\"name\":\"test-client\",\"version\":\"1.0\"},\"io.modelcontextprotocol/clientCapabilities\":{}}}" + "}", System.Text.Encoding.UTF8, "application/json")
};
Comment thread
g2vinay marked this conversation as resolved.
request.Headers.TryAddWithoutValidation("Accept", "application/json, text/event-stream");
request.Headers.TryAddWithoutValidation("MCP-Protocol-Version", "2026-07-28");
Expand Down Expand Up @@ -95,7 +95,7 @@ public async Task ConsolidatedMode_HttpTransport_Should_Accept_Meta_In_Request_P
{
Content = new StringContent(
"{" +
"\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{\"_meta\":{\"traceparent\":\"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01\",\"clientId\":\"phase2-hardening-test\"}}" +
"\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{\"_meta\":{\"io.modelcontextprotocol/protocolVersion\":\"2026-07-28\",\"io.modelcontextprotocol/clientInfo\":{\"name\":\"test-client\",\"version\":\"1.0\"},\"io.modelcontextprotocol/clientCapabilities\":{},\"traceparent\":\"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01\",\"clientId\":\"phase2-hardening-test\"}}" +
"}",
System.Text.Encoding.UTF8,
"application/json")
Expand Down Expand Up @@ -154,7 +154,7 @@ public async Task ConsolidatedMode_HttpTransport_Should_Support_ServerDiscover_W
{
Content = new StringContent(
"{" +
"\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"server/discover\",\"params\":{}" +
"\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"server/discover\",\"params\":{\"_meta\":{\"io.modelcontextprotocol/protocolVersion\":\"2026-07-28\",\"io.modelcontextprotocol/clientInfo\":{\"name\":\"test-client\",\"version\":\"1.0\"},\"io.modelcontextprotocol/clientCapabilities\":{}}}" +
"}",
System.Text.Encoding.UTF8,
"application/json")
Expand Down Expand Up @@ -213,7 +213,7 @@ public async Task ConsolidatedMode_HttpTransport_Should_Handle_Repeated_ToolsLis

using var request1 = new HttpRequestMessage(HttpMethod.Post, $"http://127.0.0.1:{port}/")
{
Content = new StringContent("{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}}", System.Text.Encoding.UTF8, "application/json")
Content = new StringContent("{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{\"_meta\":{\"io.modelcontextprotocol/protocolVersion\":\"2026-07-28\",\"io.modelcontextprotocol/clientInfo\":{\"name\":\"test-client\",\"version\":\"1.0\"},\"io.modelcontextprotocol/clientCapabilities\":{}}}}", System.Text.Encoding.UTF8, "application/json")
};
request1.Headers.TryAddWithoutValidation("Accept", "application/json, text/event-stream");
request1.Headers.TryAddWithoutValidation("MCP-Protocol-Version", "2026-07-28");
Expand All @@ -225,7 +225,7 @@ public async Task ConsolidatedMode_HttpTransport_Should_Handle_Repeated_ToolsLis

using var request2 = new HttpRequestMessage(HttpMethod.Post, $"http://127.0.0.1:{port}/")
{
Content = new StringContent("{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\",\"params\":{}}", System.Text.Encoding.UTF8, "application/json")
Content = new StringContent("{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\",\"params\":{\"_meta\":{\"io.modelcontextprotocol/protocolVersion\":\"2026-07-28\",\"io.modelcontextprotocol/clientInfo\":{\"name\":\"test-client\",\"version\":\"1.0\"},\"io.modelcontextprotocol/clientCapabilities\":{}}}}", System.Text.Encoding.UTF8, "application/json")
};
request2.Headers.TryAddWithoutValidation("Accept", "application/json, text/event-stream");
request2.Headers.TryAddWithoutValidation("MCP-Protocol-Version", "2026-07-28");
Expand Down Expand Up @@ -345,6 +345,9 @@ public async Task ConsolidatedMode_HttpTransport_Should_Propagate_W3C_Trace_Cont
"{" +
"\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{" +
"\"_meta\":{" +
"\"io.modelcontextprotocol/protocolVersion\":\"2026-07-28\"," +
"\"io.modelcontextprotocol/clientInfo\":{\"name\":\"test-client\",\"version\":\"1.0\"}," +
"\"io.modelcontextprotocol/clientCapabilities\":{}," +
"\"traceparent\":\"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01\"," +
"\"tracestate\":\"vendor1=opaquevalue1,vendor2=opaquevalue2\"," +
"\"baggage\":\"userId=alice,serverNode=DF:28,isProduction=false\"" +
Expand Down Expand Up @@ -634,7 +637,7 @@ public async Task ConsolidatedMode_HttpTransport_Should_Accept_NonNamedMethod_Wi
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, $"http://127.0.0.1:{port}/")
{
Content = new StringContent("{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}}", System.Text.Encoding.UTF8, "application/json")
Content = new StringContent("{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{\"_meta\":{\"io.modelcontextprotocol/protocolVersion\":\"2026-07-28\",\"io.modelcontextprotocol/clientInfo\":{\"name\":\"test-client\",\"version\":\"1.0\"},\"io.modelcontextprotocol/clientCapabilities\":{}}}}", System.Text.Encoding.UTF8, "application/json")
};
request.Headers.TryAddWithoutValidation("Accept", "application/json, text/event-stream");
request.Headers.TryAddWithoutValidation("MCP-Protocol-Version", "2026-07-28");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public async Task Server_Should_List_Tools_Over_Http_Root_Endpoint()
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, $"http://127.0.0.1:{port}/")
{
Content = new StringContent("{" + "\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}" + "}", System.Text.Encoding.UTF8, "application/json")
Content = new StringContent("{" + "\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{\"_meta\":{\"io.modelcontextprotocol/protocolVersion\":\"2026-07-28\",\"io.modelcontextprotocol/clientInfo\":{\"name\":\"test-client\",\"version\":\"1.0\"},\"io.modelcontextprotocol/clientCapabilities\":{}}}" + "}", System.Text.Encoding.UTF8, "application/json")
};
Comment thread
g2vinay marked this conversation as resolved.
request.Headers.TryAddWithoutValidation("Accept", "application/json, text/event-stream");
request.Headers.TryAddWithoutValidation("MCP-Protocol-Version", "2026-07-28");
Expand Down
Loading