Both were already fixed on https://modelcontextprotocol.io; this copy is behind. - `faq.mdx`: capitalize PyPI correctly in the abuse reporting steps. https://github.com/modelcontextprotocol/modelcontextprotocol/pull/3153 - `remote-servers.mdx`: recommend Streamable HTTP and link the deprecated features page. The 2026-07-28 draft reclassifies the HTTP+SSE transport as deprecated under the feature lifecycle policy, so SSE should no longer be presented as an equal option. https://github.com/modelcontextprotocol/modelcontextprotocol/pull/3064 ## 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) - [x] Documentation update ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply. --> - [x] I have read the [MCP Documentation](https://modelcontextprotocol.io) - [x] My code follows the repository's style guidelines - [x] New and existing tests pass locally - [x] I have added appropriate error handling - [x] I have added or updated documentation as needed
170 lines
5.1 KiB
Text
170 lines
5.1 KiB
Text
---
|
|
title: Publishing Remote Servers
|
|
sidebarTitle: Remote Servers
|
|
---
|
|
|
|
<Note>
|
|
The MCP Registry is currently in preview. Breaking changes or data resets may occur before general availability. If you encounter any issues, please report them on [GitHub](https://github.com/modelcontextprotocol/registry/issues).
|
|
</Note>
|
|
|
|
The MCP Registry supports remote MCP servers via the `remotes` property in `server.json`:
|
|
|
|
```json server.json highlight={7-12}
|
|
{
|
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
"name": "com.example/acme-analytics",
|
|
"title": "ACME Analytics",
|
|
"description": "Real-time business intelligence and reporting platform",
|
|
"version": "2.0.0",
|
|
"remotes": [
|
|
{
|
|
"type": "streamable-http",
|
|
"url": "https://analytics.example.com/mcp"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
A remote server **MUST** be publicly accessible at its specified URL.
|
|
|
|
## Transport Type
|
|
|
|
Remote servers should use the Streamable HTTP transport. The SSE transport is [deprecated](/specification/draft/deprecated), so publish an `"sse"` remote only to support existing clients. Remote servers can also support both transports simultaneously at different URLs.
|
|
|
|
Specify the transport by setting the `type` property of the `remotes` entry to either `"streamable-http"` or `"sse"`:
|
|
|
|
```json server.json highlight={9,13}
|
|
{
|
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
"name": "com.example/acme-analytics",
|
|
"title": "ACME Analytics",
|
|
"description": "Real-time business intelligence and reporting platform",
|
|
"version": "2.0.0",
|
|
"remotes": [
|
|
{
|
|
"type": "streamable-http",
|
|
"url": "https://analytics.example.com/mcp"
|
|
},
|
|
{
|
|
"type": "sse",
|
|
"url": "https://analytics.example.com/sse"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## URL Template Variables
|
|
|
|
Remote servers can 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:
|
|
|
|
```json server.json highlight={10-17}
|
|
{
|
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
"name": "com.example/acme-analytics",
|
|
"title": "ACME Analytics",
|
|
"description": "Real-time business intelligence and reporting platform",
|
|
"version": "2.0.0",
|
|
"remotes": [
|
|
{
|
|
"type": "streamable-http",
|
|
"url": "https://{tenant_id}.analytics.example.com/mcp",
|
|
"variables": {
|
|
"tenant_id": {
|
|
"description": "Your tenant identifier (e.g., 'us-cell1', 'emea-cell1')",
|
|
"isRequired": true
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
When configuring this server, users provide their `tenant_id` value, and the URL template gets resolved to the appropriate endpoint (e.g., `https://us-cell1.analytics.example.com/mcp`).
|
|
|
|
Variables support additional properties like `default`, `choices`, and `isSecret`:
|
|
|
|
```json server.json highlight={12-22}
|
|
{
|
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
"name": "com.example/multi-region-mcp",
|
|
"title": "Multi-Region MCP",
|
|
"description": "MCP server with regional endpoints",
|
|
"version": "1.0.0",
|
|
"remotes": [
|
|
{
|
|
"type": "streamable-http",
|
|
"url": "https://api.example.com/{region}/mcp",
|
|
"variables": {
|
|
"region": {
|
|
"description": "Deployment region",
|
|
"isRequired": true,
|
|
"choices": [
|
|
"us-east-1",
|
|
"eu-west-1",
|
|
"ap-southeast-1"
|
|
],
|
|
"default": "us-east-1"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## HTTP Headers
|
|
|
|
MCP clients can be instructed to send specific HTTP headers by adding the `headers` property to the `remotes` entry:
|
|
|
|
```json server.json highlight={11-18}
|
|
{
|
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
"name": "com.example/acme-analytics",
|
|
"title": "ACME Analytics",
|
|
"description": "Real-time business intelligence and reporting platform",
|
|
"version": "2.0.0",
|
|
"remotes": [
|
|
{
|
|
"type": "streamable-http",
|
|
"url": "https://analytics.example.com/mcp",
|
|
"headers": [
|
|
{
|
|
"name": "X-API-Key",
|
|
"description": "API key for authentication",
|
|
"isRequired": true,
|
|
"isSecret": true
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## Supporting Remote and Non-remote Installation
|
|
|
|
The `remotes` property can coexist with the `packages` property in `server.json` in order to allow MCP host applications to choose the preferred method of installation.
|
|
|
|
```json server.json highlight={7-22}
|
|
{
|
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
"name": "io.github.username/email-integration-mcp",
|
|
"title": "Email Integration",
|
|
"description": "Send emails and manage email accounts",
|
|
"version": "1.0.0",
|
|
"remotes": [
|
|
{
|
|
"type": "streamable-http",
|
|
"url": "https://email.example.com/mcp"
|
|
}
|
|
],
|
|
"packages": [
|
|
{
|
|
"registryType": "npm",
|
|
"identifier": "@example/email-integration-mcp",
|
|
"version": "1.0.0",
|
|
"transport": {
|
|
"type": "stdio"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|