Skip to content

Latest commit

 

History

History
152 lines (122 loc) · 3.53 KB

File metadata and controls

152 lines (122 loc) · 3.53 KB

Server JSON Schema Changelog

Changes to the server.json schema and format.

Unreleased

Added

  • Support for on_device registryType for pre-installed/system-managed MCP servers.
  • New optional manifest field on package objects (used with on_device) to embed an MCPB-style manifest.
  • New optional __dirname field on package objects to specify the local directory containing on-device server assets.

2025-09-29

⚠️ BREAKING CHANGES

Schema Simplification

Removed registry-managed fields from publisher-controlled server.json schema.

Removed fields:

  • status field from Server object (now managed by registry in API responses)
  • io.modelcontextprotocol.registry/official from _meta (read-only, added by registry)

Migration: Publishers should remove these fields from their server.json files. The registry will manage server status and official metadata separately.

Changed

  • Schema version: 2025-09-162025-09-29

2025-09-16

⚠️ BREAKING CHANGES

Field Names: snake_case → camelCase (#428)

All JSON field names standardized to camelCase. All existing server.json files must be updated.

Changed fields:

  • registry_typeregistryType
  • registry_base_urlregistryBaseUrl
  • file_sha256fileSha256
  • runtime_hintruntimeHint
  • runtime_argumentsruntimeArguments
  • package_argumentspackageArguments
  • environment_variablesenvironmentVariables
  • is_requiredisRequired
  • is_secretisSecret
  • value_hintvalueHint
  • is_repeatedisRepeated
  • website_urlwebsiteUrl

Migration Examples

Package Configuration:

// OLD - Will be rejected
{
  "packages": [{
    "registry_type": "npm",
    "registry_base_url": "https://registry.npmjs.org",
    "file_sha256": "abc123...",
    "runtime_hint": "node",
    "runtime_arguments": [...],
    "package_arguments": [...],
    "environment_variables": [...]
  }]
}

// NEW - Required format
{
  "packages": [{
    "registryType": "npm",
    "registryBaseUrl": "https://registry.npmjs.org",
    "fileSha256": "abc123...",
    "runtimeHint": "node",
    "runtimeArguments": [...],
    "packageArguments": [...],
    "environmentVariables": [...]
  }]
}

Arguments Configuration:

// OLD - Will be rejected
{
  "runtime_arguments": [
    {
      "name": "port",
      "is_required": true,
      "is_repeated": false,
      "value_hint": "8080"
    }
  ]
}

// NEW - Required format
{
  "runtimeArguments": [
    {
      "name": "port",
      "isRequired": true,
      "isRepeated": false,
      "valueHint": "8080"
    }
  ]
}

Environment Variables:

// OLD - Will be rejected
{
  "environment_variables": [
    {
      "name": "API_KEY",
      "is_required": true,
      "is_secret": true
    }
  ]
}

// NEW - Required format
{
  "environmentVariables": [
    {
      "name": "API_KEY",
      "isRequired": true,
      "isSecret": true
    }
  ]
}

Migration Checklist for Publishers

  • Update your server.json files to use camelCase field names
  • Test server publishing with new CLI version
  • Update any automation scripts that reference old field names
  • Update documentation referencing old field names

Updated Schema Reference

🔗 Current schema: https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json

Changed

  • Schema version: 2025-07-092025-09-16

2025-07-09

Initial release of the server.json schema.