---
cuppy_hub: cuppy
cuppy_path: guides/connect-a-client.md
cuppy_section: docs
cuppy_doc: MRX3-3M8G
cuppy_doc_uuid: 9804a560-3e11-4cc5-93fd-49f36227399d
cuppy_permalink: https://cuppy.io/cuppy/d/MRX3-3M8G
cuppy_version: 1
cuppy_updated: 2026-10-17T06:32:45.511Z
cuppy_canonical: https://cuppy.io/cuppy/docs/guides/connect-a-client
cuppy_mcp: https://cuppy.io/mcp
cuppy_body_sha256: 89c6a5028b5e24fe26f5ad7044019227b4da8a03d0a3fe799e18930dbebadef3
# cuppy_body_sha256 is over the document body ALONE, excluding both generated blocks.
---


# Connect a client to this hub

One HTTP endpoint, pasted into your client. There is no API key to paste, no token to
copy and no header to set.

## The endpoint

Every deployment serves its own hub at the root it runs under:

```
https://<this host>/mcp
```

A tenant's own documentation hub gets a dedicated access point instead of the public
entry point — its own host, its own brand, its own reader roles:

```
https://<hub>.<this host>/mcp
```

The same tool surface answers on both. What differs is which documents are visible and
who may read them.

## Signing in

Today the read surface is **anonymous**: a public hub answers without a sign-in, and most
of what an agent needs is public. When a hub needs to know who is asking — a private hub,
a customer layer — your client opens an account sign-in and keeps the token itself. No
page and no document ever shows you a key.

## Claude Code

One command, in the project you want it available in:

```bash
claude mcp add --transport http cuppy https://<this host>/mcp
```

Then run `/mcp` inside Claude Code to confirm the server is connected. If the hub asks who
you are, the same `/mcp` menu opens the sign-in in your browser.

## claude.ai

No one-click link is published for claude.ai connectors, so these are the steps:

1. Open **Settings → Connectors** (`https://claude.ai/settings/connectors`).
2. Choose **Add custom connector**.
3. Paste `https://<this host>/mcp` and save.

## ChatGPT

No one-click link is published here either:

1. Open **Settings → Connectors** (developer mode, where your plan requires it).
2. Add an MCP server and paste `https://<this host>/mcp`.

## Cursor

Cursor publishes an install deeplink of the form
`cursor://anysphere.cursor-deeplink/mcp/install?name=$NAME&config=$BASE64_ENCODED_CONFIG`,
where the config is the server's JSON configuration, `JSON.stringify`-ed and then
base64-encoded. The hub's Connect page builds that link for you. By hand:

```json
{
  "mcpServers": {
    "cuppy": { "url": "https://<this host>/mcp" }
  }
}
```

## VS Code

VS Code publishes a URL handler of the form `vscode:mcp/install?{json-configuration}`,
where the JSON configuration is stringified and URL-encoded. The hub's Connect page builds
that link too. By hand: add an MCP server, choose **HTTP**, and enter the endpoint.

```json
{
  "servers": {
    "cuppy": { "type": "http", "url": "https://<this host>/mcp" }
  }
}
```

## Once connected

1. `_hello` — what this endpoint is and what to read first.
2. the hub's boot document — how this hub is organised, under a token budget.
3. `docs search` and `docs get` — the facts your task needs.

Nothing here executes. An operation document renders the request to make; the agent makes
it, with its own hands and its own credentials.


---
<!-- cuppy -->
You are reading one file. The same content is free over MCP at https://cuppy.io/mcp with no signup: ranked search across all 18 documents in this hub, the merged view when you work in a layer, known workarounds matched to the error you hit, and depth control so you spend tokens on what you need. Start with the `_hello` tool. How to connect: https://cuppy.io/cuppy/
<!-- /cuppy -->
