> ## Documentation Index
> Fetch the complete documentation index at: https://help.onetsolutions.net/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP Server

> Connect AI agents like Claude Desktop, Claude Code, or Cursor to OnetSolutions through the Model Context Protocol

The OnetSolutions MCP server lets AI agents act on your account — manage VPS instances, domains, billing, and any other resource exposed by the public API — directly from your assistant of choice.

<Note>
  **Beta** — the MCP server is in preview. Endpoints, tool names, and capabilities may evolve. We recommend testing on a non-production organization first.
</Note>

<Info>
  **Prerequisites**

  * An OnetSolutions account with at least one organization
  * An MCP-compatible client (Claude Desktop, Claude Code, Cursor, or any client supporting the [Model Context Protocol](https://modelcontextprotocol.io))
</Info>

## Server endpoint

|                                 |                                                                       |
| ------------------------------- | --------------------------------------------------------------------- |
| **URL**                         | `https://mcp.onetsolutions.net/mcp`                                   |
| **Transport**                   | Streamable HTTP                                                       |
| **Authentication**              | OAuth 2.1 with PKCE                                                   |
| **Dynamic Client Registration** | Supported ([RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591)) |

The server exposes the same surface as the [OnetSolutions REST API](/api-reference/introduction): anything you can do with an API key, an agent can do through MCP — provided your account has the required permissions.

## Authentication

The server uses standard OAuth 2.1. You don't need to create or paste an API key — when you add the server to an MCP client, the client opens a browser, you sign in to OnetSolutions, and you grant access. Tokens are stored by the client and refreshed automatically.

<Warning>
  The agent acts on your behalf with your account permissions. Review every action your agent proposes before confirming, especially destructive ones (deleting an instance, transferring a domain, cancelling a subscription).
</Warning>

## Connecting a client

<Tabs>
  <Tab title="Claude Desktop">
    <Steps>
      <Step title="Open Connectors">
        In Claude Desktop, open **Settings → Connectors**.
      </Step>

      <Step title="Add a custom connector">
        Click **Add custom connector**, then enter:

        * **Name**: `OnetSolutions`
        * **Remote MCP server URL**: `https://mcp.onetsolutions.net/mcp`
      </Step>

      <Step title="Authenticate">
        Claude Desktop opens a browser window. Sign in to your OnetSolutions account and approve the requested permissions.
      </Step>

      <Step title="Use it">
        Start a new conversation and ask Claude to work with your OnetSolutions resources, for example: *"List my VPS instances and their current status."*
      </Step>
    </Steps>
  </Tab>

  <Tab title="Claude Code">
    Add the server with one command:

    ```bash theme={null}
    claude mcp add --transport http onetsolutions https://mcp.onetsolutions.net/mcp
    ```

    Then run `/mcp` inside Claude Code and select **onetsolutions → Authenticate**. A browser window opens to complete the OAuth flow.

    To remove the server later:

    ```bash theme={null}
    claude mcp remove onetsolutions
    ```
  </Tab>

  <Tab title="Cursor">
    Edit `~/.cursor/mcp.json` (create the file if it doesn't exist) and add:

    ```json theme={null}
    {
      "mcpServers": {
        "onetsolutions": {
          "url": "https://mcp.onetsolutions.net/mcp"
        }
      }
    }
    ```

    Restart Cursor, open **Settings → MCP**, and click **Authenticate** next to the `onetsolutions` server. The OAuth flow opens in your browser.
  </Tab>
</Tabs>

## What you can ask

Because the MCP server mirrors the REST API, agents can help with anything covered by the [API Reference](/api-reference/introduction). A few examples to get you started:

* *"Reboot my VPS named `web-01`."*
* *"Show me the upcoming renewals on my domains."*
* *"Create a snapshot of `db-prod` before I run the migration."*
* *"Summarise my last three invoices."*

The exact tool list is advertised by the server itself — your client will display it once connected.

## Revoking access

To disconnect an agent from your account:

1. Go to **Console → Settings → Security** ([console.onetsolutions.net](https://console.onetsolutions.net)).
2. Find the OAuth application matching your client (e.g., `Claude Desktop`).
3. Click **Revoke**.

The agent loses access immediately. Any active session will fail on the next request.

## Troubleshooting

<AccordionGroup>
  <Accordion title="The browser doesn't open during authentication">
    Some clients don't auto-launch a browser. Copy the authorization URL printed in the client logs and open it manually.
  </Accordion>

  <Accordion title="`401 Unauthorized` after a long idle period">
    Your refresh token may have expired. Re-run the authentication step in your client (`/mcp` in Claude Code, or **Reconnect** in Claude Desktop / Cursor).
  </Accordion>

  <Accordion title="The agent says a tool is missing">
    The MCP server is in beta and the tool catalogue evolves. Restart your client to pick up the latest list, or check the [changelog](/changelog/overview).
  </Accordion>

  <Accordion title="An action is refused with `403 Forbidden`">
    Your account or the role you used to authenticate does not have permission for that resource. Check your organization role in **Console → Organizations**.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="API Reference" icon="book" href="/api-reference/introduction">
    Full list of resources and operations exposed through MCP.
  </Card>

  <Card title="API Keys" icon="key" href="/console/api-keys">
    Use static API keys instead — useful for CI/CD pipelines or scripts.
  </Card>
</CardGroup>
