The xCloud MCP server lets Claude, Cursor, or any MCP-compatible client manage your servers and sites. It’s built into xCloud — connect in seconds.
https://app.xcloud.host/mcp
Add this URL to your client. Most clients authenticate over OAuth: the browser opens, you approve the access you want to grant, and the connection is live — no API key to create or store. If your client can’t do browser sign-in, use an API key.
Point your client at the endpoint. No token, no headers.
claude mcp add xcloud --transport http https://app.xcloud.host/mcp
Then run /mcp inside Claude Code and pick Authenticate.
Open Settings → Connectors → Add custom connector, name it
xcloud, and paste the URL:
https://app.xcloud.host/mcp
Claude Desktop opens the browser sign-in for you.
Open Settings → MCP → Add new MCP server, or add this to
~/.cursor/mcp.json:
{
"mcpServers": {
"xcloud": {
"url": "https://app.xcloud.host/mcp"
}
}
}Cursor shows a Needs login prompt — click it to sign in.
Any client that supports the MCP Streamable HTTP transport can connect. Point it at the URL — it discovers the OAuth endpoints automatically:
https://app.xcloud.host/mcp
Client only supports local (stdio) servers? Bridge with npx mcp-remote https://app.xcloud.host/mcp.
xCloud opens in a browser tab. Sign in if you aren’t already, then grant one of:
mcp:read) — view servers, sites, and account details.mcp:write) — view, plus make changes such
as deploying a site or restarting a service.Access is scoped to the team you’re signed in to, and every connection is listed with your API keys so you can revoke it at any time.
Done. Ask your assistant “who am I on xCloud?” to check the connection.
Create an xCloud access token with the explicit mcp:invoke scope. Add
read:servers and read:sites to let the assistant view things,
or the write: scopes to let it make changes. Full access alone does not
enable MCP.
Pass the key as an Authorization header, replacing YOUR_TOKEN.
claude mcp add xcloud --transport http https://app.xcloud.host/mcp \
--header 'Authorization: Bearer YOUR_TOKEN'{
"mcpServers": {
"xcloud": {
"type": "http",
"url": "https://app.xcloud.host/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}Add to your Claude Desktop config, then restart the app.
{
"mcpServers": {
"xcloud": {
"url": "https://app.xcloud.host/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}Add to ~/.cursor/mcp.json.
URL: https://app.xcloud.host/mcp
Header: Authorization: Bearer YOUR_TOKENStdio-only client? Bridge with npx mcp-remote https://app.xcloud.host/mcp --header "Authorization: Bearer YOUR_TOKEN".
| Symptom | Cause & fix |
|---|---|
| Client asks for a token | It doesn’t support browser sign-in. Use the API key path instead. |
| 403 on connect | The approval was declined or granted read-only for a write action — reconnect and approve read & write. On the API-key path, the key lacks explicit mcp:invoke. |
| “Lacks the … ability” | The connection isn’t permitted that action. Reconnect with write access, or add the missing scope (e.g. write:sites) to your API key. |
| “Site not found” | The connection is scoped to a different team than the site. Switch teams in xCloud, then reconnect. |
| 401 Unauthorized | Sign-in expired — reconnect. On the API-key path, the key is invalid or the Authorization header was mangled; check the single-quoting around the |. |
| — keep the single quotes so your shell doesn’t read it as a pipe.