diff --git a/docs/concepts/elicitation/samples/server/Elicitation.http b/docs/concepts/elicitation/samples/server/Elicitation.http
index 04dcdb343..ba41db84a 100644
--- a/docs/concepts/elicitation/samples/server/Elicitation.http
+++ b/docs/concepts/elicitation/samples/server/Elicitation.http
@@ -5,7 +5,7 @@
POST {{HostAddress}}/
Accept: application/json, text/event-stream
Content-Type: application/json
-MCP-Protocol-Version: 2025-06-18
+MCP-Protocol-Version: 2025-11-25
{
"jsonrpc": "2.0",
@@ -34,7 +34,7 @@ Content-Type: application/json
"capabilities": {
"elicitation": {}
},
- "protocolVersion": "2025-06-18"
+ "protocolVersion": "2025-11-25"
}
}
@@ -46,7 +46,7 @@ POST {{HostAddress}}/
Accept: application/json, text/event-stream
Content-Type: application/json
Mcp-Session-Id: {{SessionId}}
-MCP-Protocol-Version: 2025-06-18
+MCP-Protocol-Version: 2025-11-25
{
"jsonrpc": "2.0",
diff --git a/docs/concepts/httpcontext/samples/HttpContext.http b/docs/concepts/httpcontext/samples/HttpContext.http
index 838457e9b..715b87a46 100644
--- a/docs/concepts/httpcontext/samples/HttpContext.http
+++ b/docs/concepts/httpcontext/samples/HttpContext.http
@@ -3,7 +3,7 @@
POST {{HostAddress}}/
Accept: application/json, text/event-stream
Content-Type: application/json
-MCP-Protocol-Version: 2025-06-18
+MCP-Protocol-Version: 2025-11-25
{
"jsonrpc": "2.0",
diff --git a/docs/concepts/logging/logging.md b/docs/concepts/logging/logging.md
index fa5b6ed0e..5a74af088 100644
--- a/docs/concepts/logging/logging.md
+++ b/docs/concepts/logging/logging.md
@@ -9,7 +9,7 @@ uid: logging
MCP servers can expose log messages to clients through the [Logging utility].
-[Logging utility]: https://modelcontextprotocol.io/specification/2025-06-18/server/utilities/logging
+[Logging utility]: https://modelcontextprotocol.io/specification/2025-11-25/server/utilities/logging
This document describes how to implement logging in MCP servers and how clients can consume log messages.
@@ -43,7 +43,7 @@ dropped when sending messages to the client.
MCP servers that implement the Logging utility must declare this in the capabilities sent in the
[Initialization] phase at the beginning of the MCP session.
-[Initialization]: https://modelcontextprotocol.io/specification/2025-06-18/basic/lifecycle#initialization
+[Initialization]: https://modelcontextprotocol.io/specification/2025-11-25/basic/lifecycle#initialization
Servers built with the C# SDK always declare the logging capability. Doing so does not obligate the server
to send log messages—only allows it. Note that stateless MCP servers might not be capable of sending log
diff --git a/docs/concepts/logging/samples/server/Logging.http b/docs/concepts/logging/samples/server/Logging.http
index 3f0f028b7..6059cac19 100644
--- a/docs/concepts/logging/samples/server/Logging.http
+++ b/docs/concepts/logging/samples/server/Logging.http
@@ -14,7 +14,7 @@ Content-Type: application/json
"version": "0.1.0"
},
"capabilities": {},
- "protocolVersion": "2025-06-18"
+ "protocolVersion": "2025-11-25"
}
}
@@ -27,7 +27,7 @@ Content-Type: application/json
POST {{HostAddress}}/
Accept: application/json, text/event-stream
Content-Type: application/json
-MCP-Protocol-Version: 2025-06-18
+MCP-Protocol-Version: 2025-11-25
Mcp-Session-Id: {{SessionId}}
{
diff --git a/docs/concepts/progress/progress.md b/docs/concepts/progress/progress.md
index c941550c8..abb4ee691 100644
--- a/docs/concepts/progress/progress.md
+++ b/docs/concepts/progress/progress.md
@@ -9,7 +9,7 @@ uid: progress
The Model Context Protocol (MCP) supports [progress tracking] for long-running operations through notification messages.
-[progress tracking]: https://modelcontextprotocol.io/specification/2025-06-18/basic/utilities/progress
+[progress tracking]: https://modelcontextprotocol.io/specification/2025-11-25/basic/utilities/progress
Typically progress tracking is supported by server tools that perform operations that take a significant amount of time to complete, such as image generation or complex calculations.
However, progress tracking is defined in the MCP specification as a general feature that can be implemented for any request that's handled by either a server or a client.
diff --git a/docs/concepts/progress/samples/server/Progress.http b/docs/concepts/progress/samples/server/Progress.http
index 3b40db854..053c2ec54 100644
--- a/docs/concepts/progress/samples/server/Progress.http
+++ b/docs/concepts/progress/samples/server/Progress.http
@@ -3,7 +3,7 @@
POST {{HostAddress}}/
Accept: application/json, text/event-stream
Content-Type: application/json
-MCP-Protocol-Version: 2025-06-18
+MCP-Protocol-Version: 2025-11-25
{
"jsonrpc": "2.0",
diff --git a/samples/EverythingServer/EverythingServer.http b/samples/EverythingServer/EverythingServer.http
index 4903f9407..433a8a90e 100644
--- a/samples/EverythingServer/EverythingServer.http
+++ b/samples/EverythingServer/EverythingServer.http
@@ -14,7 +14,7 @@ Content-Type: application/json
"version": "0.1.0"
},
"capabilities": {},
- "protocolVersion": "2025-06-18"
+ "protocolVersion": "2025-11-25"
}
}
@@ -25,7 +25,7 @@ Content-Type: application/json
POST {{HostAddress}}/
Accept: application/json, text/event-stream
Content-Type: application/json
-MCP-Protocol-Version: 2025-06-18
+MCP-Protocol-Version: 2025-11-25
Mcp-Session-Id: {{SessionId}}
{
@@ -41,7 +41,7 @@ Mcp-Session-Id: {{SessionId}}
POST {{HostAddress}}/
Accept: application/json, text/event-stream
Content-Type: application/json
-MCP-Protocol-Version: 2025-06-18
+MCP-Protocol-Version: 2025-11-25
Mcp-Session-Id: {{SessionId}}
{
@@ -58,7 +58,7 @@ Mcp-Session-Id: {{SessionId}}
POST {{HostAddress}}/
Accept: application/json, text/event-stream
Content-Type: application/json
-MCP-Protocol-Version: 2025-06-18
+MCP-Protocol-Version: 2025-11-25
Mcp-Session-Id: {{SessionId}}
{
@@ -73,5 +73,5 @@ Mcp-Session-Id: {{SessionId}}
###
DELETE {{HostAddress}}/
-MCP-Protocol-Version: 2025-06-18
+MCP-Protocol-Version: 2025-11-25
Mcp-Session-Id: {{SessionId}}
diff --git a/src/ModelContextProtocol.AspNetCore/HttpServerTransportOptions.cs b/src/ModelContextProtocol.AspNetCore/HttpServerTransportOptions.cs
index 67f4f4e1d..a0e894a3e 100644
--- a/src/ModelContextProtocol.AspNetCore/HttpServerTransportOptions.cs
+++ b/src/ModelContextProtocol.AspNetCore/HttpServerTransportOptions.cs
@@ -6,10 +6,10 @@ namespace ModelContextProtocol.AspNetCore;
///
/// Represents configuration options for ,
/// which implements the Streaming HTTP transport for the Model Context Protocol.
-/// See the protocol specification for details on the Streamable HTTP transport.
+/// See the protocol specification for details on the Streamable HTTP transport.
///
///
-/// For details on the Streamable HTTP transport, see the protocol specification.
+/// For details on the Streamable HTTP transport, see the protocol specification.
///
public class HttpServerTransportOptions
{
diff --git a/src/ModelContextProtocol.AspNetCore/McpEndpointRouteBuilderExtensions.cs b/src/ModelContextProtocol.AspNetCore/McpEndpointRouteBuilderExtensions.cs
index 8c78d7516..28f732f44 100644
--- a/src/ModelContextProtocol.AspNetCore/McpEndpointRouteBuilderExtensions.cs
+++ b/src/ModelContextProtocol.AspNetCore/McpEndpointRouteBuilderExtensions.cs
@@ -21,7 +21,7 @@ public static class McpEndpointRouteBuilderExtensions
/// Returns a builder for configuring additional endpoint conventions like authorization policies.
/// The required MCP services have not been registered. Ensure has been called during application startup.
///
- /// For details about the Streamable HTTP transport, see the 2025-06-18 protocol specification.
+ /// For details about the Streamable HTTP transport, see the 2025-11-25 protocol specification.
/// This method also maps legacy SSE endpoints for backward compatibility at the path "/sse" and "/message". For details about the HTTP with SSE transport, see the 2024-11-05 protocol specification.
///
public static IEndpointConventionBuilder MapMcp(this IEndpointRouteBuilder endpoints, [StringSyntax("Route")] string pattern = "")
diff --git a/src/ModelContextProtocol.Core/Client/HttpClientTransportOptions.cs b/src/ModelContextProtocol.Core/Client/HttpClientTransportOptions.cs
index 43b6ef30d..70a2eb7df 100644
--- a/src/ModelContextProtocol.Core/Client/HttpClientTransportOptions.cs
+++ b/src/ModelContextProtocol.Core/Client/HttpClientTransportOptions.cs
@@ -44,7 +44,7 @@ public required Uri Endpoint
/// When set to (the default), the client will first attempt to use
/// Streamable HTTP transport and automatically fall back to SSE transport if the server doesn't support it.
///
- /// Streamable HTTP transport specification.
+ /// Streamable HTTP transport specification.
/// HTTP with SSE transport specification.
public HttpTransportMode TransportMode { get; set; } = HttpTransportMode.AutoDetect;
diff --git a/src/ModelContextProtocol.Core/McpSessionHandler.cs b/src/ModelContextProtocol.Core/McpSessionHandler.cs
index 0b915c9f1..b816e246d 100644
--- a/src/ModelContextProtocol.Core/McpSessionHandler.cs
+++ b/src/ModelContextProtocol.Core/McpSessionHandler.cs
@@ -29,13 +29,14 @@ internal sealed partial class McpSessionHandler : IAsyncDisposable
"mcp.server.operation.duration", "Measures the duration of inbound message processing.", longBuckets: false);
/// The latest version of the protocol supported by this implementation.
- internal const string LatestProtocolVersion = "2025-06-18";
+ internal const string LatestProtocolVersion = "2025-11-25";
/// All protocol versions supported by this implementation.
internal static readonly string[] SupportedProtocolVersions =
[
"2024-11-05",
"2025-03-26",
+ "2025-06-18",
LatestProtocolVersion,
];
diff --git a/tests/ModelContextProtocol.AspNetCore.Tests/MapMcpStreamableHttpTests.cs b/tests/ModelContextProtocol.AspNetCore.Tests/MapMcpStreamableHttpTests.cs
index cce2e4f0f..b85e689d0 100644
--- a/tests/ModelContextProtocol.AspNetCore.Tests/MapMcpStreamableHttpTests.cs
+++ b/tests/ModelContextProtocol.AspNetCore.Tests/MapMcpStreamableHttpTests.cs
@@ -178,10 +178,10 @@ public async Task StreamableHttpClient_SendsMcpProtocolVersionHeader_AfterInitia
await using var mcpClient = await ConnectAsync(clientOptions: new()
{
- ProtocolVersion = "2025-03-26",
+ ProtocolVersion = "2025-06-18",
});
- Assert.Equal("2025-03-26", mcpClient.NegotiatedProtocolVersion);
+ Assert.Equal("2025-06-18", mcpClient.NegotiatedProtocolVersion);
await mcpClient.ListToolsAsync(cancellationToken: TestContext.Current.CancellationToken);
await mcpClient.DisposeAsync();
@@ -190,7 +190,7 @@ public async Task StreamableHttpClient_SendsMcpProtocolVersionHeader_AfterInitia
// Stateless mode due to the lack of an Mcp-Session-Id, but the header should be included in the
// initialized notification and the tools/list call at a minimum.
Assert.True(protocolVersionHeaderValues.Count > 1);
- Assert.All(protocolVersionHeaderValues, v => Assert.Equal("2025-03-26", v));
+ Assert.All(protocolVersionHeaderValues, v => Assert.Equal("2025-06-18", v));
}
[Fact]
diff --git a/tests/ModelContextProtocol.AspNetCore.Tests/StreamableHttpClientConformanceTests.cs b/tests/ModelContextProtocol.AspNetCore.Tests/StreamableHttpClientConformanceTests.cs
index 366b9f413..e4ee2a1d2 100644
--- a/tests/ModelContextProtocol.AspNetCore.Tests/StreamableHttpClientConformanceTests.cs
+++ b/tests/ModelContextProtocol.AspNetCore.Tests/StreamableHttpClientConformanceTests.cs
@@ -217,7 +217,7 @@ public async Task ResumeSessionStartsGetImmediately()
{
const string sessionId = "resume-session-123";
const string resumeInstructions = "Use cached instructions";
- const string resumeProtocolVersion = "2025-06-18";
+ const string resumeProtocolVersion = "2025-11-25";
var resumeServer = await StartResumeServerAsync(sessionId);
await using var transport = new HttpClientTransport(new()
diff --git a/tests/ModelContextProtocol.ConformanceServer/ModelContextProtocol.ConformanceServer.http b/tests/ModelContextProtocol.ConformanceServer/ModelContextProtocol.ConformanceServer.http
index 27173de10..00317fcbd 100644
--- a/tests/ModelContextProtocol.ConformanceServer/ModelContextProtocol.ConformanceServer.http
+++ b/tests/ModelContextProtocol.ConformanceServer/ModelContextProtocol.ConformanceServer.http
@@ -26,7 +26,7 @@ Content-Type: application/json
"version": "0.1.0"
},
"capabilities": {},
- "protocolVersion": "2025-06-18"
+ "protocolVersion": "2025-11-25"
}
}
@@ -37,7 +37,7 @@ Content-Type: application/json
POST {{HostAddress}}/
Accept: application/json, text/event-stream
Content-Type: application/json
-MCP-Protocol-Version: 2025-06-18
+MCP-Protocol-Version: 2025-11-25
Mcp-Session-Id: {{SessionId}}
{
@@ -51,7 +51,7 @@ Mcp-Session-Id: {{SessionId}}
POST {{HostAddress}}/
Accept: application/json, text/event-stream
Content-Type: application/json
-MCP-Protocol-Version: 2025-06-18
+MCP-Protocol-Version: 2025-11-25
Mcp-Session-Id: {{SessionId}}
{
@@ -65,7 +65,7 @@ Mcp-Session-Id: {{SessionId}}
POST {{HostAddress}}/
Accept: application/json, text/event-stream
Content-Type: application/json
-MCP-Protocol-Version: 2025-06-18
+MCP-Protocol-Version: 2025-11-25
Mcp-Session-Id: {{SessionId}}
{
diff --git a/tests/ModelContextProtocol.Tests/Client/McpClientTests.cs b/tests/ModelContextProtocol.Tests/Client/McpClientTests.cs
index 86cefcf10..122a5cc5b 100644
--- a/tests/ModelContextProtocol.Tests/Client/McpClientTests.cs
+++ b/tests/ModelContextProtocol.Tests/Client/McpClientTests.cs
@@ -488,11 +488,11 @@ public async Task AsClientLoggerProvider_MessagesSentToClient()
[Theory]
[InlineData(null)]
- [InlineData("2025-03-26")]
+ [InlineData("2025-06-18")]
public async Task ReturnsNegotiatedProtocolVersion(string? protocolVersion)
{
await using McpClient client = await CreateMcpClientForServer(new() { ProtocolVersion = protocolVersion });
- Assert.Equal(protocolVersion ?? "2025-06-18", client.NegotiatedProtocolVersion);
+ Assert.Equal(protocolVersion ?? "2025-11-25", client.NegotiatedProtocolVersion);
}
[Fact]