This PR reorganizes and extends the existing documentation in preparation for publishing on https://modelcontextprotocol.io/. The current plan is for docs to remain in this repo, and be synced to the `modelcontextprotocol/modelcontextprotocol` whenever necessary (e.g., accompanying a release of the registry). I have included a script in https://github.com/modelcontextprotocol/modelcontextprotocol/pull/1725 (`bin/pull-registry-docs.sh`) that can be run manually to perform the sync. If we later decide to permanently move the docs to the `modelcontextprotocol/modelcontextprotocol` repo, that also works. This PR puts all https://modelcontextprotocol.io/ docs into `docs/modelcontextprotocol-io/`. Docs outside that subdirectory, such as `docs/administration/admin-operations.md`, are intended to be accessible solely via this repo. One major exception is the `docs/reference/server-json/` subdirectory, which will depend on the resolution of https://github.com/modelcontextprotocol/modelcontextprotocol/issues/1649. However, I think we could address that in a follow-up PR. --------- Co-authored-by: Adam Jones <adamj+git@anthropic.com> Co-authored-by: Claude <noreply@anthropic.com>
108 lines
3 KiB
Text
108 lines
3 KiB
Text
---
|
|
title: Publishing Remote Servers
|
|
sidebarTitle: Remote Servers
|
|
---
|
|
|
|
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-10-17/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 can use the Streamable HTTP transport (recommended) or the SSE transport. 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-10-17/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"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## 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-10-17/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-10-17/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": "@username/email-integration-mcp",
|
|
"version": "1.0.0",
|
|
"transport": {
|
|
"type": "stdio"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|