Fix _meta field format for MCP spec compliance (#367)
## Summary
Updates the `_meta` field structure to be compliant with the MCP
specification by using proper `prefix/name` format for vendor
extensions.
### Changes
- **Registry metadata**: `io.modelcontextprotocol.registry` →
`io.modelcontextprotocol.registry/official`
- **Publisher metadata**: `publisher` →
`io.modelcontextprotocol.registry/publisher-provided`
- **Database migration**: Updates indexes to use new field paths
- **Updated all code**: Service layer, validators, tests, and seed data
### Format Before
```json
{
"_meta": {
"publisher": { "license": "MIT" },
"io.modelcontextprotocol.registry": { "id": "...", "is_latest": true }
}
}
```
### Format After
```json
{
"_meta": {
"io.modelcontextprotocol.registry/publisher-provided": { "license": "MIT" },
"io.modelcontextprotocol.registry/official": { "id": "...", "is_latest": true }
}
}
```
This resolves the naming collision with the planned top-level
`publisher` field and ensures compliance with MCP specification
requirements.
Fixes #356
This commit is contained in:
parent
8f5e17d0fe
commit
ef4607720d
3 changed files with 490 additions and 466 deletions
|
|
@ -105,7 +105,7 @@ paths:
|
|||
identifier: "@modelcontextprotocol/server-filesystem"
|
||||
version: "1.0.2"
|
||||
_meta:
|
||||
publisher:
|
||||
io.modelcontextprotocol.registry/publisher-provided:
|
||||
tool: "publisher-cli"
|
||||
version: "1.2.3"
|
||||
build_info:
|
||||
|
|
@ -128,7 +128,7 @@ paths:
|
|||
identifier: "@example/mcp-demo-server"
|
||||
version: "1.0.0"
|
||||
_meta:
|
||||
publisher:
|
||||
io.modelcontextprotocol.registry/publisher-provided:
|
||||
contact_email: "maintainer@example.com"
|
||||
build_metadata:
|
||||
commit: "abc123"
|
||||
|
|
@ -496,7 +496,7 @@ components:
|
|||
type: object
|
||||
description: Extension metadata using reverse DNS namespacing
|
||||
properties:
|
||||
publisher:
|
||||
io.modelcontextprotocol.registry/publisher-provided:
|
||||
type: object
|
||||
description: Publisher-specific metadata and build information
|
||||
additionalProperties: true
|
||||
|
|
@ -507,7 +507,7 @@ components:
|
|||
commit: "abc123def456"
|
||||
timestamp: "2023-12-01T10:30:00Z"
|
||||
pipeline_id: "build-789"
|
||||
io.modelcontextprotocol.registry:
|
||||
io.modelcontextprotocol.registry/official:
|
||||
type: object
|
||||
description: Registry-specific metadata managed by the MCP registry system
|
||||
required:
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ The official registry has some more restrictions on top of this. See the [offici
|
|||
}
|
||||
],
|
||||
"_meta": {
|
||||
"publisher": {
|
||||
"io.modelcontextprotocol.registry/publisher-provided": {
|
||||
"tool": "npm-publisher",
|
||||
"version": "1.0.1",
|
||||
"build_info": {
|
||||
|
|
@ -94,7 +94,7 @@ For MCP servers located within a subdirectory of a larger repository (monorepo s
|
|||
}
|
||||
],
|
||||
"_meta": {
|
||||
"publisher": {
|
||||
"io.modelcontextprotocol.registry/publisher-provided": {
|
||||
"tool": "npm-publisher",
|
||||
"version": "1.0.1",
|
||||
"build_info": {
|
||||
|
|
@ -138,7 +138,7 @@ Suppose your MCP server application requires a `mcp start` CLI arguments to star
|
|||
}
|
||||
],
|
||||
"_meta": {
|
||||
"publisher": {
|
||||
"io.modelcontextprotocol.registry/publisher-provided": {
|
||||
"tool": "nuget-publisher",
|
||||
"version": "2.1.0",
|
||||
"build_info": {
|
||||
|
|
@ -242,7 +242,7 @@ This will essentially instruct the MCP client to execute `dnx Knapcode.SampleMcp
|
|||
}
|
||||
],
|
||||
"_meta": {
|
||||
"publisher": {
|
||||
"io.modelcontextprotocol.registry/publisher-provided": {
|
||||
"tool": "ci-publisher",
|
||||
"version": "3.2.1",
|
||||
"build_info": {
|
||||
|
|
@ -277,7 +277,7 @@ This will essentially instruct the MCP client to execute `dnx Knapcode.SampleMcp
|
|||
}
|
||||
],
|
||||
"_meta": {
|
||||
"publisher": {
|
||||
"io.modelcontextprotocol.registry/publisher-provided": {
|
||||
"tool": "cloud-deployer",
|
||||
"version": "2.4.0",
|
||||
"build_info": {
|
||||
|
|
@ -331,7 +331,7 @@ This will essentially instruct the MCP client to execute `dnx Knapcode.SampleMcp
|
|||
}
|
||||
],
|
||||
"_meta": {
|
||||
"publisher": {
|
||||
"io.modelcontextprotocol.registry/publisher-provided": {
|
||||
"tool": "poetry-publisher",
|
||||
"version": "1.8.3",
|
||||
"build_info": {
|
||||
|
|
@ -382,7 +382,7 @@ The `dnx` tool ships with the .NET 10 SDK, starting with Preview 6.
|
|||
}
|
||||
],
|
||||
"_meta": {
|
||||
"publisher": {
|
||||
"io.modelcontextprotocol.registry/publisher-provided": {
|
||||
"tool": "dotnet-publisher",
|
||||
"version": "8.0.100",
|
||||
"build_info": {
|
||||
|
|
@ -494,7 +494,7 @@ The `dnx` tool ships with the .NET 10 SDK, starting with Preview 6.
|
|||
}
|
||||
],
|
||||
"_meta": {
|
||||
"publisher": {
|
||||
"io.modelcontextprotocol.registry/publisher-provided": {
|
||||
"tool": "docker-buildx",
|
||||
"version": "0.12.1",
|
||||
"build_info": {
|
||||
|
|
@ -578,7 +578,7 @@ The `dnx` tool ships with the .NET 10 SDK, starting with Preview 6.
|
|||
}
|
||||
],
|
||||
"_meta": {
|
||||
"publisher": {
|
||||
"io.modelcontextprotocol.registry/publisher-provided": {
|
||||
"tool": "hybrid-deployer",
|
||||
"version": "1.7.2",
|
||||
"build_info": {
|
||||
|
|
@ -622,7 +622,7 @@ The `dnx` tool ships with the .NET 10 SDK, starting with Preview 6.
|
|||
}
|
||||
],
|
||||
"_meta": {
|
||||
"publisher": {
|
||||
"io.modelcontextprotocol.registry/publisher-provided": {
|
||||
"tool": "mcpb-publisher",
|
||||
"version": "1.0.0",
|
||||
"build_info": {
|
||||
|
|
@ -711,7 +711,7 @@ Some CLI tools bundle an MCP server, without a standalone MCP package or a publi
|
|||
}
|
||||
],
|
||||
"_meta": {
|
||||
"publisher": {
|
||||
"io.modelcontextprotocol.registry/publisher-provided": {
|
||||
"tool": "legacy-publisher",
|
||||
"version": "0.8.1",
|
||||
"build_info": {
|
||||
|
|
|
|||
|
|
@ -453,12 +453,12 @@
|
|||
"description": "Extension metadata using reverse DNS namespacing for vendor-specific data",
|
||||
"additionalProperties": true,
|
||||
"properties": {
|
||||
"publisher": {
|
||||
"io.modelcontextprotocol.registry/publisher-provided": {
|
||||
"type": "object",
|
||||
"description": "Publisher-provided metadata for downstream registries",
|
||||
"additionalProperties": true
|
||||
},
|
||||
"io.modelcontextprotocol.registry": {
|
||||
"io.modelcontextprotocol.registry/official": {
|
||||
"type": "object",
|
||||
"description": "Official MCP registry metadata (read-only, added by registry)",
|
||||
"additionalProperties": true
|
||||
|
|
|
|||
Loading…
Reference in a new issue