Sharing a gateway with clients
Give client teams the gateway's address, headers and tools as one downloadable document.
The team that configures an AI agent needs three things from you - where the MCP gateway is, how to authenticate and what tools it serves. The Export link in each gateway's row on the gateway list downloads all three as one server.json document in the official MCP server registry format.
Document contents
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "com.example/billing",
"description": "MCP gateway billing",
"version": "1.0.0",
"remotes": [
{
"type": "streamable-http",
"url": "https://api.example.com/mcp/billing",
"protocolVersions": ["2025-06-18", "2026-07-28"],
"headers": [
{"name": "X-API-Key", "description": "API key", "isRequired": true, "isSecret": true}
]
}
],
"_meta": {
"zato": {
"tools": [
{"name": "billing.get-invoice", "description": "...", "inputSchema": {}, "outputSchema": {}}
],
"security": [
{"name": "partner.key", "type": "apikey"}
]
}
}
}
- The
remotesentry names the endpoint URL and the two protocol revisions the gateway speaks. headerslists the HTTP headers clients must send, one per security type assigned to the gateway. Secrets themselves are never exported, only the fact that a header is required and secret.- The registry format has no top-level place for tools or security definitions, so the full details live under
_meta.zato, its extension point - every tool with its description and both schemas, and the names and types of the security definitions. A service assigned to the gateway but not currently deployed is reported with aNot deployednote in place of its schemas. - The document's
nameis the host of the server's address in reverse-DNS form plus a slug of the gateway's name.
The externally visible address
The URL in remotes is built from the Zato_Server_Address environment variable, e.g. https://api.example.com - set it on the server to the address clients reach the gateway under. Without it, the export falls back to the server's own IP address and plain HTTP port, which is right for local work and wrong behind any proxy.
Connect a client
Connecting a client takes one command or one configuration block. Claude Code:
claude mcp add --transport http billing https://api.example.com/mcp/billing \
--header "X-API-Key: the-actual-key"
Clients configured through JSON, e.g. Cursor or Claude Desktop, take the same two facts in their mcpServers block:
{
"mcpServers": {
"billing": {
"url": "https://api.example.com/mcp/billing",
"headers": {"X-API-Key": "the-actual-key"}
}
}
}
The key itself comes from the person who manages the security definitions - the export never contains it.
To connect a copilot to the Zato documentation itself, rather than to your own gateways, see connect your AI copilot.
See also
| Feature | What it does |
|---|---|
| Security | The definitions behind the headers the document lists |
| Tool schemas | The schemas exported under _meta.zato |
| Connect your copilot | Point an AI assistant at the Zato documentation over MCP |
| MCP gateways | Configuration, endpoint behavior and the governance controls |