# Connecting a Client



One URL, and a browser sign-in:

```
https://mcp.vitalsentinel.com/mcp
```

Most clients handle the rest. You paste the URL, the client discovers the authorization server, opens a browser tab, you approve the connection, and the tools appear.

## Before you start [#before-you-start]

* You need a VitalSentinel account with at least one domain being monitored.
* The connection reaches only the workspaces you select on the consent screen.
* A connection made this way is **not read-only**. The consent screen requests read, write, and run scopes together, so review it before approving. For a narrower connection, see [Option B](#option-b-connect-with-an-api-key).

## Option A: connect with your account (recommended) [#option-a-connect-with-your-account-recommended]

This is the OAuth 2.1 flow. No secret is ever stored in a configuration file.

### Claude [#claude]

Claude supports remote MCP servers as custom connectors on the web, desktop, and mobile apps.

1. Open **Settings**, then **Connectors**.
2. Choose **Add custom connector**.
3. Name it `VitalSentinel` and paste the URL: `https://mcp.vitalsentinel.com/mcp`
4. Save, then click **Connect** on the new connector.
5. A VitalSentinel sign-in page opens. Sign in if you are not already.
6. On the consent screen, **choose which workspaces to grant access to**, review the permissions, and approve.

The connector shows as connected, and VitalSentinel tools become available in your conversations.

<Callout type="info">
  Custom connectors are available on paid Claude plans. Menu names shift between releases; look for "Connectors", "Custom connectors", or "MCP servers" in Settings.
</Callout>

### Claude Code [#claude-code]

```bash
claude mcp add --transport http vitalsentinel https://mcp.vitalsentinel.com/mcp
```

Then run `/mcp` inside Claude Code and follow the authentication prompt. It opens a browser for the same consent flow.

### ChatGPT [#chatgpt]

ChatGPT supports remote MCP servers as custom connectors on paid plans.

1. Open **Settings**, then **Connectors**.
2. Choose to add a custom connector, enabling developer mode first if your account requires it.
3. Name it `VitalSentinel` and paste `https://mcp.vitalsentinel.com/mcp` as the MCP server URL.
4. Choose OAuth authentication, then complete the browser sign-in and approve the workspaces.

Once connected, enable the connector in a conversation to make the tools available.

<Callout type="info">
  Connector support varies by ChatGPT plan and rolls out gradually. If you cannot find custom connectors in Settings, your plan may not include them yet.
</Callout>

### Cursor [#cursor]

Add the server to `~/.cursor/mcp.json` for all projects, or `.cursor/mcp.json` inside one project:

```json
{
  "mcpServers": {
    "vitalsentinel": {
      "url": "https://mcp.vitalsentinel.com/mcp"
    }
  }
}
```

Restart Cursor. Open **Settings**, then **MCP**, and click to authenticate. A browser opens for the consent flow.

### VS Code [#vs-code]

Add `.vscode/mcp.json` to your workspace:

```json
{
  "servers": {
    "vitalsentinel": {
      "type": "http",
      "url": "https://mcp.vitalsentinel.com/mcp"
    }
  }
}
```

Start the server from the editor and complete the browser sign-in when prompted.

### Any other MCP client [#any-other-mcp-client]

The server implements the standard remote MCP contract, so a spec-compliant client needs nothing bespoke:

| Property             | Value                                                                                                   |
| -------------------- | ------------------------------------------------------------------------------------------------------- |
| Endpoint             | `https://mcp.vitalsentinel.com/mcp`                                                                     |
| Transport            | Streamable HTTP (`POST` for requests, `GET` for the server-to-client stream, `DELETE` to end a session) |
| Authorization        | `Authorization: Bearer <token>`                                                                         |
| Discovery            | `GET https://mcp.vitalsentinel.com/.well-known/oauth-protected-resource` (RFC 9728)                     |
| Authorization server | Advertised in that document, and in the `WWW-Authenticate` header on any `401`                          |
| Resource identifier  | `https://mcp.vitalsentinel.com`                                                                         |

If you are implementing the flow by hand, see [Authentication](/api/authentication#oauth-21). The one detail that catches people out is the `resource` parameter: it must be `https://mcp.vitalsentinel.com` for a token used here. A token minted for the REST API is rejected with a `401`. The reverse is not true, so an MCP token also works against the REST API. See [Resource binding](/api/authentication#resource-binding-is-mandatory).

## Option B: connect with an API key [#option-b-connect-with-an-api-key]

Use this when you want an assistant that can **change** things, not just read them, or when you are connecting from an automated context where a browser flow is impractical.

1. Create an API key in the dashboard under **Settings** → **API access**. See [Quick start](/api/quick-start#1-create-an-api-key).
2. Grant the scopes matching the tools you want. Every `write:` or `run:` scope you grant makes the corresponding tools visible.
3. Configure your client to send the key as a bearer token.

```json
{
  "mcpServers": {
    "vitalsentinel": {
      "url": "https://mcp.vitalsentinel.com/mcp",
      "headers": {
        "Authorization": "Bearer vsk_live_your_key_here"
      }
    }
  }
}
```

The exact configuration shape depends on your client; the header is what matters.

<Callout type="warning">
  An API key is a long-lived secret in a configuration file. Keep it out of version control, scope it to the minimum the assistant needs, and set an expiry. If you only need reading, use [Option A](#option-a-connect-with-your-account-recommended) instead: it stores no secret anywhere.
</Callout>

An API key reaches exactly one workspace. For several workspaces, use the OAuth flow, which can span every workspace you select at consent.

## Confirming it worked [#confirming-it-worked]

Ask the assistant:

> List my VitalSentinel workspaces and domains.

That calls `list_workspaces` and `list_domains`, the two cheapest tools. Both are free of credit cost, so it is a safe smoke test.

Then try something real:

> Give me a health snapshot for example.com.

## Which tools you will see [#which-tools-you-will-see]

The tool list is built once per connection, from what your credential can actually do:

| Credential                              | Tools available                                                 |
| --------------------------------------- | --------------------------------------------------------------- |
| OAuth connection (browser sign-in)      | All 70, once you approve the scopes the consent screen requests |
| API key with read scopes only           | The read tools matching those scopes                            |
| API key with `write:` and `run:` scopes | Read tools, plus the matching write and run tools               |

A tool you cannot use is not shown, rather than shown and failing. If a tool you expected is missing, the credential does not carry the scope, or the creator's workspace role strips it. Ask the assistant to call `get_credit_balance`, or check `GET /me` on the API, to see your effective scopes.

## Reconnecting [#reconnecting]

Sessions are held in memory and are not persisted across restarts. If the server restarts, your client reconnects and re-authenticates transparently. You will not usually notice.

Access tokens last 60 minutes and refresh automatically. You only sign in again if you revoke the connection or leave it unused past the 90-day refresh window.

## Disconnecting [#disconnecting]

**In VitalSentinel:** go to **Settings** → **Connected apps**. Every app you have connected is listed with the workspaces it reaches. Revoking is immediate and kills tokens already issued, not just future refreshes.

**In your client:** remove the connector or the configuration entry. Do both if you want the grant gone as well as the client entry.

## Next [#next]

<Cards>
  <Card title="Tool reference" href="/mcp/tools">
    What each of the 70 tools answers.
  </Card>

  <Card title="Troubleshooting" href="/mcp/troubleshooting">
    Connection failures, missing tools, and empty results.
  </Card>
</Cards>
