Skip to content
Guides

MCP Server

Restore Hub runs a hosted Model Context Protocol server at https://mcp.restorehub.net/mcp. Connect Claude Desktop, Cursor, Zed, Claude Code, or any MCP-compatible agent to manage your Discord infrastructure in plain English.

Endpoint

  • URL: https://mcp.restorehub.net/mcp
  • Transport: Streamable HTTP (the modern MCP transport)
  • Auth: Authorization: Bearer rh_YOUR_KEY
  • Tool list: Generated live from your account scopes
Tools available to the agent are scoped to your API key. A key with only servers:read exposes only listing tools; restore/delete tools simply won't appear.

Claude Desktop setup

Open the Claude Desktop config:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\\Claude\\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Add (or merge) the mcpServers entry below:

{
  "mcpServers": {
    "restorehub": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.restorehub.net/mcp",
        "--header",
        "Authorization:${RESTOREHUB_AUTH}"
      ],
      "env": {
        "RESTOREHUB_AUTH": "Bearer rh_YOUR_KEY"
      }
    }
  }
}

Restart Claude Desktop. You'll see restorehub in the tools menu. Try a prompt: "List my Discord servers and their member counts."

Cursor setup

Open Cursor → Settings → MCP → Add MCP server and paste:

{
  "name": "restorehub",
  "url": "https://mcp.restorehub.net/mcp",
  "headers": {
    "Authorization": "Bearer rh_YOUR_KEY"
  }
}

Claude Code setup

Add the server with the CLI:

claude mcp add --transport http restorehub https://mcp.restorehub.net/mcp \
  --header "Authorization: Bearer rh_YOUR_KEY"

Custom HTTP client

Any MCP client that speaks streamable HTTP can connect. Send the bearer token on the initial request and the server will negotiate the session.

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const transport = new StreamableHTTPClientTransport(
  new URL("https://mcp.restorehub.net/mcp"),
  {
    requestInit: {
      headers: { Authorization: `Bearer ${process.env.RH_API_KEY}` },
    },
  },
);

const client = new Client({ name: "my-app", version: "1.0.0" });
await client.connect(transport);

const tools = await client.listTools();
console.log(tools);

Sample prompts to try

Each of these works out of the box once the MCP server is connected:

  • "Set up a new Discord server end-to-end: connect it, enable verification with captcha and VPN blocking, and schedule daily backups at 3am UTC."
  • "Kick all members who haven't verified in the last 7 days on server X." (uses members:read + audit checks; will refuse the kick step if scope missing)
  • "Show me the last 5 backups and the diff in member count between each."
  • "Pull every verified member from server A to server B."
  • "Post a verification panel to channel #verify on my main server."
  • "Mint a read-only API key, name it 'monitoring'."
  • "Mass-DM all verified members on server X with a welcome message."

Troubleshooting

"Authentication failed" or 401

Your API key is wrong, expired, or revoked. Mint a new one at /dashboard/api-keys.

"Tool not available" / agent says it can't do something

The tool exists but your key lacks the scope. Edit the key and add the scope, or mint a new key with the right tier. See scope catalog.

Connection drops mid-session

Streamable HTTP sessions auto-reconnect. If you see persistent disconnects, check your firewall — the MCP server uses long-polling SSE-style streams.

Security model

The MCP server is a thin translator over the REST API. Every tool call goes through the same scope checks, rate limits, and audit logging as direct API requests. There is no special trust given to MCP traffic.

For sensitive deployments mint a dedicated MCP key, scope it tightly, and rotate regularly. See Authentication.

MCP Server — Restore Hub | Restore Hub