Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Sep 10, 2025

Updates the MCP server template to align with the new Model Context Protocol registry specification. The MCP registry has updated its server.json schema, requiring several property name changes and structural modifications for successful package ingestion.

Changes Made

The following updates were applied to both the main template and test snapshot files:

  • Root level changes:

    • Kept name property (root identifier remains unchanged)
    • Moved version from nested version_detail object to root level
    • Removed the version_detail wrapper object
  • Package configuration updates:

    • Changed registry_nameregistry_type
    • Changed nameidentifier for package identification
    • Added required transport property with {"type": "stdio"} configuration
  • Schema URI updates:

    • Updated from https://modelcontextprotocol.io/schemas/draft/2025-07-09/server.json
    • To https://static.modelcontextprotocol.io/schemas/2025-07-09/server.schema.json
    • Removed /draft/ from path and updated filename to server.schema.json

Updated Structure

The template now follows this format aligned with the registry specification:

{
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-07-09/server.schema.json",
  "name": "io.github.<your GitHub username here>/<your repo name>",
  "version": "0.1.0-beta",
  "packages": [
    {
      "registry_type": "nuget",
      "identifier": "<your package ID here>",
      "version": "0.1.0-beta",
      "transport": {
        "type": "stdio"
      },
      "package_arguments": [],
      "environment_variables": []
    }
  ]
}

Files Modified

  • src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/McpServer/McpServer-CSharp/.mcp/server.json
  • test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Snapshots/mcpserver.Basic.verified/mcpserver/.mcp/server.json

These changes ensure that MCP server projects created from this template will successfully publish to the MCP registry using mcp-publisher without encountering missing property errors.

Fixes #5467

Warning

0t3vsblobprodcus362.vsblob.vsassets.io

  • Triggering command: dotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj (dns block)
  • Triggering command: dotnet test test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Microsoft.Extensions.AI.Templates.Tests.csproj --filter FullyQualifiedName~McpServerSnapshotTests --verbosity minimal (dns block)
  • 1oavsblobprodcus350.vsblob.vsassets.io
    • Triggering command: dotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj (dns block)
    • Triggering command: dotnet test test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Microsoft.Extensions.AI.Templates.Tests.csproj --filter FullyQualifiedName~McpServerSnapshotTests --verbosity minimal (dns block)
  • 4vyvsblobprodcus361.vsblob.vsassets.io
    • Triggering command: dotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj (dns block)
    • Triggering command: dotnet test test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Microsoft.Extensions.AI.Templates.Tests.csproj --filter FullyQualifiedName~McpServerSnapshotTests --verbosity minimal (dns block)
  • 4zjvsblobprodcus390.vsblob.vsassets.io
    • Triggering command: dotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj (dns block)
    • Triggering command: dotnet test test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Microsoft.Extensions.AI.Templates.Tests.csproj --filter FullyQualifiedName~McpServerSnapshotTests --verbosity minimal (dns block)
  • 51yvsblobprodcus36.vsblob.vsassets.io
    • Triggering command: dotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj (dns block)
    • Triggering command: dotnet test test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Microsoft.Extensions.AI.Templates.Tests.csproj --filter FullyQualifiedName~McpServerSnapshotTests --verbosity minimal (dns block)
  • 96bvsblobprodcus338.vsblob.vsassets.io
    • Triggering command: dotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj (dns block)
    • Triggering command: dotnet test test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Microsoft.Extensions.AI.Templates.Tests.csproj --filter FullyQualifiedName~McpServerSnapshotTests --verbosity minimal (dns block)
  • c50vsblobprodcus330.vsblob.vsassets.io
    • Triggering command: dotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj (dns block)
    • Triggering command: dotnet test test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Microsoft.Extensions.AI.Templates.Tests.csproj --filter FullyQualifiedName~McpServerSnapshotTests --verbosity minimal (dns block)
  • c78vsblobprodcus322.vsblob.vsassets.io
    • Triggering command: dotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj (dns block)
    • Triggering command: dotnet test test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Microsoft.Extensions.AI.Templates.Tests.csproj --filter FullyQualifiedName~McpServerSnapshotTests --verbosity minimal (dns block)
  • h6tvsblobprodcus346.vsblob.vsassets.io
    • Triggering command: dotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj (dns block)
    • Triggering command: dotnet test test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Microsoft.Extensions.AI.Templates.Tests.csproj --filter FullyQualifiedName~McpServerSnapshotTests --verbosity minimal (dns block)
  • kmuvsblobprodcus389.vsblob.vsassets.io
    • Triggering command: dotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj (dns block)
    • Triggering command: dotnet test test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Microsoft.Extensions.AI.Templates.Tests.csproj --filter FullyQualifiedName~McpServerSnapshotTests --verbosity minimal (dns block)
  • l49vsblobprodcus358.vsblob.vsassets.io
    • Triggering command: dotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj (dns block)
    • Triggering command: dotnet test test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Microsoft.Extensions.AI.Templates.Tests.csproj --filter FullyQualifiedName~McpServerSnapshotTests --verbosity minimal (dns block)
  • pdfvsblobprodcus380.vsblob.vsassets.io
    • Triggering command: dotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj (dns block)
    • Triggering command: dotnet test test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Microsoft.Extensions.AI.Templates.Tests.csproj --filter FullyQualifiedName~McpServerSnapshotTests --verbosity minimal (dns block)
  • s8mvsblobprodcus38.vsblob.vsassets.io
    • Triggering command: dotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj (dns block)
    • Triggering command: dotnet test test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Microsoft.Extensions.AI.Templates.Tests.csproj --filter FullyQualifiedName~McpServerSnapshotTests --verbosity minimal (dns block)
  • sqdvsblobprodcus333.vsblob.vsassets.io
    • Triggering command: dotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj (dns block)
    • Triggering command: dotnet test test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Microsoft.Extensions.AI.Templates.Tests.csproj --filter FullyQualifiedName~McpServerSnapshotTests --verbosity minimal (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Fixes #6788

Fixes #6788

Fixes #6788


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI changed the title [WIP] Changes in MCP template for registry ingestion needed Update MCP template for new registry specification Sep 10, 2025
Copilot finished work on behalf of timheuer September 10, 2025 15:50
Copilot AI requested a review from timheuer September 10, 2025 15:50
@timheuer
Copy link
Member

Sorry @copilot -- the root "name" property should still be named name

Copy link
Contributor Author

Copilot AI commented Sep 10, 2025

Sorry @copilot -- the root "name" property should still be named name

Fixed! Changed the root property back to name instead of id. All other registry specification updates remain in place. See commit fc6cf7f.

Copilot finished work on behalf of timheuer September 10, 2025 16:03
Copy link
Member

@timheuer timheuer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@joelverhagen joelverhagen marked this pull request as ready for review September 11, 2025 13:17
@joelverhagen joelverhagen requested a review from a team as a code owner September 11, 2025 13:17
Copilot AI review requested due to automatic review settings September 11, 2025 13:17
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Updates the MCP server template to align with the new Model Context Protocol registry specification, addressing schema changes required for successful package ingestion with mcp-publisher.

  • Restructured version information by moving version to root level and removing version_detail wrapper
  • Updated package configuration property names and added required transport configuration
  • Applied identical changes to both template and test snapshot files

Reviewed Changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/McpServer/McpServer-CSharp/.mcp/server.json Updated MCP server template configuration to match new registry specification
test/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Snapshots/mcpserver.Basic.verified/mcpserver/.mcp/server.json Updated test snapshot to reflect template changes

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copy link
Contributor Author

Copilot AI commented Sep 11, 2025

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • static.modelcontextprotocol.io
    • Triggering command: curl -s REDACTED (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI requested a review from joelverhagen September 11, 2025 13:41
Copilot finished work on behalf of joelverhagen September 11, 2025 13:41
Copilot finished work on behalf of joelverhagen September 11, 2025 13:52
This was referenced Oct 29, 2025
@github-actions github-actions bot locked and limited conversation to collaborators Oct 31, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Changes in MCP template for registry ingestion needed

5 participants