Update MCP template for new registry specification#6796
Merged
jeffhandley merged 4 commits intomainfrom Sep 30, 2025
Merged
Conversation
Co-authored-by: timheuer <4821+timheuer@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Changes in MCP template for registry ingestion needed
Update MCP template for new registry specification
Sep 10, 2025
Member
|
Sorry @copilot -- the root "name" property should still be named |
…mplate Co-authored-by: timheuer <4821+timheuer@users.noreply.github.com>
Contributor
Author
joelverhagen
approved these changes
Sep 11, 2025
Contributor
There was a problem hiding this comment.
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
versionto root level and removingversion_detailwrapper - Updated package configuration property names and added required
transportconfiguration - 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.
...tTemplates/Microsoft.Extensions.AI.Templates/src/McpServer/McpServer-CSharp/.mcp/server.json
Outdated
Show resolved
Hide resolved
…hema.json Co-authored-by: joelverhagen <94054+joelverhagen@users.noreply.github.com>
Contributor
Author
|
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:
If you need me to access, download, or install something from one of these locations, you can either:
|
joelverhagen
approved these changes
Sep 11, 2025
jeffhandley
approved these changes
Sep 11, 2025
MackinnonBuck
approved these changes
Sep 30, 2025
This was referenced Oct 29, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updates the MCP server template to align with the new Model Context Protocol registry specification. The MCP registry has updated its
server.jsonschema, 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:
nameproperty (root identifier remains unchanged)versionfrom nestedversion_detailobject to root levelversion_detailwrapper objectPackage configuration updates:
registry_name→registry_typename→identifierfor package identificationtransportproperty with{"type": "stdio"}configurationSchema URI updates:
https://modelcontextprotocol.io/schemas/draft/2025-07-09/server.jsonhttps://static.modelcontextprotocol.io/schemas/2025-07-09/server.schema.json/draft/from path and updated filename toserver.schema.jsonUpdated 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.jsontest/ProjectTemplates/Microsoft.Extensions.AI.Templates.IntegrationTests/Snapshots/mcpserver.Basic.verified/mcpserver/.mcp/server.jsonThese changes ensure that MCP server projects created from this template will successfully publish to the MCP registry using
mcp-publisherwithout encountering missing property errors.Fixes #5467
Warning
0t3vsblobprodcus362.vsblob.vsassets.iodotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj(dns block)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.iodotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj(dns block)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.iodotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj(dns block)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.iodotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj(dns block)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.iodotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj(dns block)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.iodotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj(dns block)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.iodotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj(dns block)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.iodotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj(dns block)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.iodotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj(dns block)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.iodotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj(dns block)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.iodotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj(dns block)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.iodotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj(dns block)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.iodotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj(dns block)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.iodotnet build src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj(dns block)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.