Make mcpb package version optional and fix schema validation (#686)
<!-- Provide a brief summary of your changes --> ## Motivation and Context <!-- Why is this change needed? What problem does it solve? --> The following PR: * Makes mcpb package version property optional * Bumps the schema and reflects that in the code * Makes sure the publisher tests are being covered by doing `make check` ## How Has This Been Tested? <!-- Have you tested this in a real application? Which scenarios were tested? --> ## Breaking Changes <!-- Will users need to update their code or configurations? --> ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [ ] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Documentation update ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply. --> - [ ] I have read the [MCP Documentation](https://modelcontextprotocol.io) - [ ] My code follows the repository's style guidelines - [ ] New and existing tests pass locally - [ ] I have added appropriate error handling - [ ] I have added or updated documentation as needed ## Additional context <!-- Add any other context, implementation notes, or design decisions --> --------- Signed-off-by: Radoslav Dimitrov <radoslav@stacklok.com>
This commit is contained in:
parent
f870a4c000
commit
0828bc483c
2 changed files with 131 additions and 81 deletions
|
|
@ -38,7 +38,7 @@ const (
|
|||
// Schema versions
|
||||
const (
|
||||
// CurrentSchemaVersion is the current supported schema version date
|
||||
CurrentSchemaVersion = "2025-09-29"
|
||||
CurrentSchemaVersion = "2025-10-17"
|
||||
// CurrentSchemaURL is the full URL to the current schema
|
||||
CurrentSchemaURL = "https://static.modelcontextprotocol.io/schemas/" + CurrentSchemaVersion + "/server.schema.json"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ type Transport struct {
|
|||
// - PyPI: RegistryType, Identifier (package name), Version, RegistryBaseURL (optional)
|
||||
// - NuGet: RegistryType, Identifier (package ID), Version, RegistryBaseURL (optional)
|
||||
// - OCI: RegistryType, Identifier (full image reference like "ghcr.io/owner/repo:tag")
|
||||
// - MCPB: RegistryType, Identifier (download URL), FileSHA256 (required)
|
||||
// - MCPB: RegistryType, Identifier (download URL), Version (optional), FileSHA256 (required)
|
||||
type Package struct {
|
||||
// RegistryType indicates how to download packages (e.g., "npm", "pypi", "oci", "nuget", "mcpb")
|
||||
RegistryType string `json:"registryType" minLength:"1" doc:"Registry type indicating how to download packages (e.g., 'npm', 'pypi', 'oci', 'nuget', 'mcpb')" example:"npm"`
|
||||
|
|
@ -31,7 +31,7 @@ type Package struct {
|
|||
// - For OCI: full image reference (e.g., "ghcr.io/owner/repo:v1.0.0")
|
||||
// - For MCPB: direct download URL
|
||||
Identifier string `json:"identifier" minLength:"1" doc:"Package identifier - either a package name (for registries) or URL (for direct downloads)" example:"@modelcontextprotocol/server-brave-search"`
|
||||
// Version is the package version (used by npm, pypi, nuget; not used by oci, mcpb where version is in the identifier)
|
||||
// Version is the package version (required for npm, pypi, nuget; optional for mcpb; not used by oci where version is in the identifier)
|
||||
Version string `json:"version,omitempty" minLength:"1" doc:"Package version. Must be a specific version. Version ranges are rejected (e.g., '^1.2.3', '~1.2.3', '>=1.2.3', '1.x', '1.*')." example:"1.0.2"`
|
||||
// FileSHA256 is the SHA-256 hash for integrity verification (required for mcpb, optional for others)
|
||||
FileSHA256 string `json:"fileSha256,omitempty" pattern:"^[a-f0-9]{64}$" doc:"SHA-256 hash of the package file for integrity verification. Required for MCPB packages and optional for other package types. Authors are responsible for generating correct SHA-256 hashes when creating server.json. If present, MCP clients must validate the downloaded file matches the hash before running packages to ensure file integrity." example:"fe333e598595000ae021bd27117db32ec69af6987f507ba7a63c90638ff633ce"`
|
||||
|
|
|
|||
Loading…
Reference in a new issue