diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index b3a969212d8f..aad45c6e9281 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -59,6 +59,7 @@ This file should be imported by eng/Versions.props
11.0.0-preview.4.26208.110
11.0.0-preview.4.26208.110
11.0.0-preview.4.26208.110
+ 11.0.0-preview.4.26208.110
11.0.0-preview.4.26208.110
11.0.0-beta.26208.110
11.0.0-beta.26208.110
@@ -202,6 +203,7 @@ This file should be imported by eng/Versions.props
$(MicrosoftDotNetSignToolPackageVersion)
$(MicrosoftDotNetWebItemTemplates110PackageVersion)
$(MicrosoftDotNetWebProjectTemplates110PackageVersion)
+ $(MicrosoftMcpServerProjectTemplatesPackageVersion)
$(MicrosoftDotnetWinFormsProjectTemplatesPackageVersion)
$(MicrosoftDotNetWpfProjectTemplatesPackageVersion)
$(MicrosoftDotNetXliffTasksPackageVersion)
diff --git a/src/Layout/redist/targets/BundledTemplates.targets b/src/Layout/redist/targets/BundledTemplates.targets
index 586977f2c69e..3cc6b6047b01 100644
--- a/src/Layout/redist/targets/BundledTemplates.targets
+++ b/src/Layout/redist/targets/BundledTemplates.targets
@@ -8,6 +8,7 @@
+
diff --git a/test/dotnet-new.IntegrationTests/McpServerTemplateTests.cs b/test/dotnet-new.IntegrationTests/McpServerTemplateTests.cs
new file mode 100644
index 000000000000..d854c18d6f32
--- /dev/null
+++ b/test/dotnet-new.IntegrationTests/McpServerTemplateTests.cs
@@ -0,0 +1,69 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using Xunit.Sdk;
+
+namespace Microsoft.DotNet.Cli.New.IntegrationTests
+{
+ public class McpServerTemplateTests : BaseIntegrationTest, IClassFixture
+ {
+ private readonly McpServerTemplateFixture _fixture;
+ private readonly ITestOutputHelper _log;
+
+ public McpServerTemplateTests(McpServerTemplateFixture fixture, ITestOutputHelper log) : base(log)
+ {
+ _fixture = fixture;
+ _log = log;
+ }
+
+ [Theory]
+ [InlineData("mcpserver_local", "mcpserver", "--transport", "local")]
+ [InlineData("mcpserver_remote", "mcpserver", "--transport", "remote")]
+ [InlineData("mcpserver_local_no_selfcontained", "mcpserver", "--transport", "local", "--self-contained", "false")]
+ [InlineData("mcpserver_remote_no_selfcontained", "mcpserver", "--transport", "remote", "--self-contained", "false")]
+ [InlineData("mcpserver_local_aot", "mcpserver", "--transport", "local", "--aot", "true")]
+ [InlineData("mcpserver_remote_aot", "mcpserver", "--transport", "remote", "--aot", "true")]
+ public void AllMcpServerProjectsRestoreAndBuild(string testName, params string[] args)
+ {
+ string workingDir = Path.Combine(_fixture.BaseWorkingDirectory, testName);
+ Directory.CreateDirectory(workingDir);
+
+ new DotnetNewCommand(_log, args)
+ .WithCustomHive(_fixture.HomeDirectory)
+ .WithWorkingDirectory(workingDir)
+ .Execute()
+ .Should()
+ .ExitWith(0)
+ .And
+ .NotHaveStdErr();
+
+ new DotnetRestoreCommand(_log)
+ .WithWorkingDirectory(workingDir)
+ .Execute()
+ .Should()
+ .ExitWith(0)
+ .And
+ .NotHaveStdErr();
+
+ new DotnetBuildCommand(_log)
+ .WithWorkingDirectory(workingDir)
+ .Execute()
+ .Should()
+ .ExitWith(0)
+ .And
+ .NotHaveStdErr();
+
+ Directory.Delete(workingDir, true);
+ }
+ }
+
+ public sealed class McpServerTemplateFixture : SharedHomeDirectory
+ {
+ public McpServerTemplateFixture(IMessageSink messageSink) : base(messageSink)
+ {
+ BaseWorkingDirectory = Utilities.CreateTemporaryFolder(nameof(McpServerTemplateTests));
+ }
+
+ internal string BaseWorkingDirectory { get; private set; }
+ }
+}