> For the complete documentation index, see [llms.txt](https://mcp-test-kitchen-docs.cakewalk.security/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mcp-test-kitchen-docs.cakewalk.security/start-here/connect-a-client.md).

# Connect a Client

The configuration object, what your client has to support and how to confirm the connection landed.

One endpoint, one header. The server has no OAuth flow and no discovery document, so whatever your client needs to reach it, it needs from you.

***

## The Configuration

The token modal in the console generates this with your own values already in it. Copy from there rather than typing it.

```json
{
  "mcpServers": {
    "mcp-test-server": {
      "url": "https://mcp-test-server.cakewalk.security/mcp",
      "headers": {
        "Authorization": "Bearer mcp_..."
      }
    }
  }
}
```

| Field           | Value                                                                     |
| --------------- | ------------------------------------------------------------------------- |
| `url`           | The endpoint. Always ends in `/mcp`                                       |
| `Authorization` | `Bearer` followed by your personal access token, which starts with `mcp_` |
| The server key  | A local name. Change it freely, your client uses it as a label            |

Most clients that support remote MCP servers read this shape from a JSON configuration file. If yours takes the URL and headers through a form instead, the two values above are all it needs.

***

## What Your Client Has to Support

Two requirements, and one of them rules clients out.

**Streamable HTTP.** The server speaks MCP over streamable HTTP at a single path. There is no stdio option, because the point of the exercise is a remote server on the other side of a network.

**A custom request header.** This is the one that rules clients out. The server authenticates a static bearer token and publishes no OAuth metadata, so a client that only knows how to add a remote server through an OAuth sign in flow cannot connect. Check your specific client surface rather than the vendor, because header support and OAuth support vary between surfaces from the same vendor.

{% hint style="info" %}
The `elicitation.approval` scenario adds a third requirement on top of these two: your client has to advertise elicitation support and handle an `elicitation/create` request. Every other scenario runs on any client that connects.
{% endhint %}

***

## No Client Yet

The console generates a working TypeScript client, already wired to your endpoint and your token, with run instructions and a downloadable zip. It handles elicitation, so it covers every scenario including the approval one.

C# and Python are listed in the console and not available yet.

***

## Confirm the Connection

Connect, then look at the Messages pane. A completed handshake produces an `INITIALIZE` entry followed by `CLIENT INITIALIZED`, and most clients follow those with a `DISCOVERY` entry for `tools/list`.

Open the `initialize` entry. The detail drawer carries the protocol revision your client declared and the recorded request headers, which together answer what your client negotiated rather than what its documentation claims it negotiates.

If the pane stays empty, work through [If Nothing Appears](/start-here/quickstart.md#if-nothing-appears) in the Quickstart. A rejected token produces no entry you can see.

***

## Applying a Scenario

Saving a scenario in the console does not change a connection that is already open. The server reads your saved selection when your client sends `initialize`, so reconnecting your client is what applies it.

{% hint style="warning" %}
Reconnecting with the same scenario and the same parameters reuses your existing session, including its invocation counter. Click **Terminate** in the Scenarios pane to force a fresh session before a run that depends on `onInvocation`.
{% endhint %}

You hold one active scenario session at a time. See [How Scenarios Work](/scenarios/scenarios.md) for the counters and the reconnect rules.

***

## Rotating the Token

**Regenerate** in the token modal issues a new token and invalidates the old one immediately. Any client still configured with the previous token starts failing with 401 at the next request, so update every client you have configured, not only the one in front of you.
