Skip to content

Commit 772bfde

Browse files
tadasantclaude
andcommitted
chore: Release server.json schema version 2025-12-11
This release introduces LocalTransport/RemoteTransport with URL template variables (#570). Key Changes: - New LocalTransport type for packages (non-breaking rename) - New RemoteTransport type with `variables` property for URL templating - URL template variables using {curly_braces} notation - Pattern validation for URLs allowing template variables Schema version: 2025-10-17 → 2025-12-11 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent b58836c commit 772bfde

File tree

13 files changed

+66
-38
lines changed

13 files changed

+66
-38
lines changed

cmd/publisher/commands/publish_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ func TestPublishCommand_DeprecatedSchema(t *testing.T) {
4444
errorSubstr: "deprecated schema detected",
4545
},
4646
{
47-
name: "current 2025-10-17 schema should pass validation",
48-
schema: "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
47+
name: "current 2025-12-11 schema should pass validation",
48+
schema: "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
4949
expectError: false,
5050
},
5151
{

data/seed.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[
22
{
3-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
3+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
44
"name": "io.github.domdomegg/airtable-mcp-server",
55
"description": "Read and write access to Airtable database schemas, tables, and records.",
66
"repository": {
@@ -62,7 +62,7 @@
6262
]
6363
},
6464
{
65-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
65+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
6666
"name": "io.github.domdomegg/airtable-mcp-server",
6767
"description": "Read and write access to Airtable database schemas, tables, and records.",
6868
"repository": {
@@ -115,7 +115,7 @@
115115
]
116116
},
117117
{
118-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
118+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
119119
"name": "io.github.domdomegg/time-mcp-nuget",
120120
"description": "Get the current UTC time in RFC 3339 format.",
121121
"repository": {
@@ -136,7 +136,7 @@
136136
]
137137
},
138138
{
139-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
139+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
140140
"name": "io.github.domdomegg/time-mcp-pypi",
141141
"description": "Get the current UTC time in RFC 3339 format.",
142142
"repository": {

docs/modelcontextprotocol-io/package-types.mdx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ npm packages use `"registryType": "npm"` in `server.json`. For example:
1515

1616
```json server.json highlight={9}
1717
{
18-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
18+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
1919
"name": "io.github.username/email-integration-mcp",
2020
"title": "Email Integration",
2121
"description": "Send emails and manage email accounts",
@@ -53,7 +53,7 @@ PyPI packages use `"registryType": "pypi"` in `server.json`. For example:
5353

5454
```json server.json highlight={9}
5555
{
56-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
56+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
5757
"name": "io.github.username/database-query-mcp",
5858
"title": "Database Query",
5959
"description": "Execute SQL queries and manage database connections",
@@ -91,7 +91,7 @@ NuGet packages use `"registryType": "nuget"` in `server.json`. For example:
9191

9292
```json server.json highlight={9}
9393
{
94-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
94+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
9595
"name": "io.github.username/azure-devops-mcp",
9696
"title": "Azure DevOps",
9797
"description": "Manage Azure DevOps work items and pipelines",
@@ -135,7 +135,7 @@ Docker/OCI images use `"registryType": "oci"` in `server.json`. For example:
135135

136136
```json server.json highlight={9}
137137
{
138-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
138+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
139139
"name": "io.github.username/kubernetes-manager-mcp",
140140
"title": "Kubernetes Manager",
141141
"description": "Deploy and manage Kubernetes resources",
@@ -170,7 +170,7 @@ MCPB packages use `"registryType": "mcpb"` in `server.json`. For example:
170170

171171
```json server.json highlight={9}
172172
{
173-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
173+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
174174
"name": "io.github.username/image-processor-mcp",
175175
"title": "Image Processor",
176176
"description": "Process and transform images with various filters",

docs/modelcontextprotocol-io/quickstart.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ Open the generated `server.json` file, and you should see contents like:
143143

144144
```json server.json
145145
{
146-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
146+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
147147
"name": "io.github.my-username/weather",
148148
"description": "An MCP server for weather information.",
149149
"repository": {
@@ -177,7 +177,7 @@ Edit the contents as necessary:
177177

178178
```diff server.json
179179
{
180-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
180+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
181181
"name": "io.github.my-username/weather",
182182
"description": "An MCP server for weather information.",
183183
"repository": {

docs/modelcontextprotocol-io/registry-aggregators.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ The subregistry OpenAPI spec allows subregistries to inject custom metadata via
7575

7676
```json server.json highlight={17-26}
7777
{
78-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
78+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
7979
"name": "io.github.username/email-integration-mcp",
8080
"title": "Email Integration",
8181
"description": "Send emails and manage email accounts",

docs/modelcontextprotocol-io/remote-servers.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The MCP Registry supports remote MCP servers via the `remotes` property in `serv
77

88
```json server.json highlight={7-12}
99
{
10-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
10+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
1111
"name": "com.example/acme-analytics",
1212
"title": "ACME Analytics",
1313
"description": "Real-time business intelligence and reporting platform",
@@ -31,7 +31,7 @@ Specify the transport by setting the `type` property of the `remotes` entry to e
3131

3232
```json server.json highlight={9,13}
3333
{
34-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
34+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3535
"name": "com.example/acme-analytics",
3636
"title": "ACME Analytics",
3737
"description": "Real-time business intelligence and reporting platform",
@@ -55,7 +55,7 @@ MCP clients can be instructed to send specific HTTP headers by adding the `heade
5555

5656
```json server.json highlight={11-18}
5757
{
58-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
58+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
5959
"name": "com.example/acme-analytics",
6060
"title": "ACME Analytics",
6161
"description": "Real-time business intelligence and reporting platform",
@@ -83,7 +83,7 @@ The `remotes` property can coexist with the `packages` property in `server.json`
8383

8484
```json server.json highlight={7-22}
8585
{
86-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
86+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
8787
"name": "io.github.username/email-integration-mcp",
8888
"title": "Email Integration",
8989
"description": "Send emails and manage email accounts",

docs/modelcontextprotocol-io/versioning.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ MCP servers **MUST** define a version string in `server.json`. For example:
77

88
```json server.json highlight={6}
99
{
10-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
10+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
1111
"name": "io.github.username/email-integration-mcp",
1212
"title": "Email Integration",
1313
"description": "Send emails and manage email accounts",

docs/reference/api/openapi.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,7 @@ components:
728728
type: string
729729
format: uri
730730
description: JSON Schema URI for this server.json format
731-
example: "https://static.modelcontextprotocol.io/schemas/draft/server.schema.json"
731+
example: "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json"
732732
packages:
733733
type: array
734734
items:

docs/reference/server-json/CHANGELOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,34 @@ When ready for release, changes in this section will be moved to a dated version
1616

1717
---
1818

19+
## 2025-12-11
20+
21+
### Changed
22+
23+
#### URL Template Variables for Remote Servers ([#570](https://github.com/modelcontextprotocol/registry/pull/570))
24+
25+
Remote servers can now define URL template variables using `{curly_braces}` notation. This enables multi-tenant deployments where a single server definition can support multiple endpoints with configurable values.
26+
27+
**Example:**
28+
```json
29+
{
30+
"remotes": [{
31+
"type": "streamable-http",
32+
"url": "https://{tenant_id}.api.example.com/mcp",
33+
"variables": {
34+
"tenant_id": {
35+
"description": "Your tenant identifier",
36+
"isRequired": true
37+
}
38+
}
39+
}]
40+
}
41+
```
42+
43+
**Migration:** No changes required. Existing servers continue to work unchanged.
44+
45+
---
46+
1947
## 2025-10-17
2048

2149
### Changed

docs/reference/server-json/generic-server-json.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ When publishing to the official registry, custom metadata must be placed under t
3838

3939
```json
4040
{
41-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
41+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
4242
"name": "io.modelcontextprotocol.anonymous/brave-search",
4343
"description": "MCP server for Brave Search API integration",
4444
"title": "Brave Search",
@@ -85,7 +85,7 @@ For MCP servers located within a subdirectory of a larger repository (monorepo s
8585

8686
```json
8787
{
88-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
88+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
8989
"name": "io.modelcontextprotocol/everything",
9090
"description": "MCP server that exercises all the features of the MCP protocol",
9191
"title": "Everything",
@@ -124,7 +124,7 @@ Suppose your MCP server application requires a `mcp start` CLI arguments to star
124124

125125
```json
126126
{
127-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
127+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
128128
"name": "io.github.joelverhagen/knapcode-samplemcpserver",
129129
"description": "Sample NuGet MCP server for a random number and random weather",
130130
"version": "0.4.0-beta",
@@ -168,7 +168,7 @@ This will essentially instruct the MCP client to execute `dnx Knapcode.SampleMcp
168168

169169
```json
170170
{
171-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
171+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
172172
"name": "io.github.modelcontextprotocol/filesystem",
173173
"description": "Node.js server implementing Model Context Protocol (MCP) for filesystem operations.",
174174
"title": "Filesystem",
@@ -268,7 +268,7 @@ This will essentially instruct the MCP client to execute `dnx Knapcode.SampleMcp
268268

269269
```json
270270
{
271-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
271+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
272272
"name": "io.modelcontextprotocol.anonymous/mcp-fs",
273273
"description": "Cloud-hosted MCP filesystem server",
274274
"repository": {
@@ -302,7 +302,7 @@ This will essentially instruct the MCP client to execute `dnx Knapcode.SampleMcp
302302

303303
```json
304304
{
305-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
305+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
306306
"name": "io.github.example/weather-mcp",
307307
"description": "Python MCP server for weather data access",
308308
"title": "Weather",
@@ -358,7 +358,7 @@ The `dnx` tool ships with the .NET 10 SDK, starting with Preview 6.
358358

359359
```json
360360
{
361-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
361+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
362362
"name": "io.github.joelverhagen/knapcode-samplemcpserver",
363363
"description": "Sample NuGet MCP server for a random number and random weather",
364364
"repository": {
@@ -407,7 +407,7 @@ The `dnx` tool ships with the .NET 10 SDK, starting with Preview 6.
407407

408408
```json
409409
{
410-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
410+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
411411
"name": "io.github.example/database-manager",
412412
"description": "MCP server for database operations with support for multiple database types",
413413
"repository": {
@@ -516,7 +516,7 @@ The `dnx` tool ships with the .NET 10 SDK, starting with Preview 6.
516516

517517
```json
518518
{
519-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
519+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
520520
"name": "io.modelcontextprotocol.anonymous/hybrid-mcp",
521521
"description": "MCP server available as both local package and remote service",
522522
"title": "Hybrid",
@@ -602,7 +602,7 @@ The `dnx` tool ships with the .NET 10 SDK, starting with Preview 6.
602602

603603
```json
604604
{
605-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
605+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
606606
"name": "io.modelcontextprotocol/text-editor",
607607
"description": "MCP Bundle server for advanced text editing capabilities",
608608
"title": "Text Editor",
@@ -645,7 +645,7 @@ Some CLI tools bundle an MCP server, without a standalone MCP package or a publi
645645

646646
```json
647647
{
648-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
648+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
649649
"name": "io.snyk/cli-mcp",
650650
"description": "MCP server provided by the Snyk CLI",
651651
"title": "Snyk",
@@ -680,7 +680,7 @@ For MCP servers that follow a custom installation path or are embedded in applic
680680

681681
```json
682682
{
683-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
683+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
684684
"name": "io.modelcontextprotocol.anonymous/embedded-mcp",
685685
"description": "MCP server embedded in a Desktop app",
686686
"websiteUrl": "https://anonymous.modelcontextprotocol.io/embedded-mcp-guide",
@@ -695,7 +695,7 @@ This example demonstrates URL templating for remote servers, useful for multi-te
695695

696696
```json
697697
{
698-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
698+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
699699
"name": "io.modelcontextprotocol.anonymous/multi-tenant-server",
700700
"description": "MCP server with configurable remote endpoint",
701701
"title": "Multi-Tenant Server",
@@ -721,7 +721,7 @@ The same URL templating works with SSE transport:
721721

722722
```json
723723
{
724-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
724+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
725725
"name": "io.modelcontextprotocol.anonymous/events-server",
726726
"description": "MCP server using SSE with tenant-specific endpoints",
727727
"version": "1.0.0",
@@ -746,7 +746,7 @@ This example demonstrates URL templating for local/package servers, where variab
746746

747747
```json
748748
{
749-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json",
749+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
750750
"name": "io.github.example/configurable-server",
751751
"description": "Local MCP server with configurable port",
752752
"title": "Configurable Server",

0 commit comments

Comments
 (0)