# Quick Start: OpenClaw MCP

Canonical page: https://www.kuudo.com/docs/quick-start/openclaw/

OpenClaw runs long Amazon jobs end to end. Give it a goal — pull the week's Sponsored Products performance, find the ASINs losing the Buy Box, draft the listing fixes — and it plans, calls the Amazon tools in order, and hands back the result with every tool call traced.

Use OpenClaw's MCP client registry when you want an OpenClaw-managed runtime to know about your private MCP server.

For the official reference, see [OpenClaw `mcp`](https://docs.openclaw.ai/cli/mcp).

Your MCP server hostname is private to your deployment. It comes from your cloud provider, belongs to your environment, and is not shared across customers. Replace `{your-private-mcp-host}` with the private host shown in your dashboard.

## Before you start

- Install and configure OpenClaw.
- Create an API key from the dashboard **Keys** tab.
- Keep the key in `MCP_API_KEY` or another local secret source.
- Confirm the private MCP endpoint ends with `/mcp`.

```text
https://{your-private-mcp-host}/mcp
```

## Understand OpenClaw MCP modes

OpenClaw's MCP command has two different modes:

| Command shape | What it does |
| --- | --- |
| `openclaw mcp serve` | Runs OpenClaw itself as a stdio MCP server for another MCP client. |
| `openclaw mcp set/list/show/unset` | Manages outbound MCP server definitions saved under `mcp.servers`. |

Use `openclaw mcp set` to register your existing private MCP server. This saves configuration only; it does not open a live MCP session or validate that the remote server is reachable.

## Register the server

Set your key in the environment OpenClaw or its runtime adapter will use:

```bash
export MCP_API_KEY="mcp_live_..."
```

Add the remote MCP server definition:

```bash
openclaw mcp set private-mcp '{"transport":"streamable-http","url":"https://{your-private-mcp-host}/mcp","headers":{"Authorization":"Bearer ${MCP_API_KEY}"}}'
```

Keep the single quotes around the JSON so OpenClaw stores the literal environment-variable reference.

## Inspect the saved definition

List saved MCP servers:

```bash
openclaw mcp list
```

Show the saved server:

```bash
openclaw mcp show private-mcp --json
```

If the entry appears, OpenClaw has saved the registry definition. A runtime adapter still has to load that definition and open a connection before tools are available.

## Manual config form

OpenClaw stores MCP definitions under `mcp.servers`. The manual shape is:

```json
{
  "mcp": {
    "servers": {
      "private-mcp": {
        "transport": "streamable-http",
        "url": "https://{your-private-mcp-host}/mcp",
        "headers": {
          "Authorization": "Bearer ${MCP_API_KEY}"
        }
      }
    }
  }
}
```

OpenClaw supports stdio, SSE/HTTP, and streamable HTTP definitions. For a modern remote MCP endpoint, set `"transport": "streamable-http"`. If `transport` is omitted, OpenClaw treats a URL-based entry as SSE/HTTP.

## Troubleshooting

### The server is saved but tools do not appear

`openclaw mcp set` only writes configuration. Restart or reload the OpenClaw runtime adapter that consumes MCP registry entries, then check whether it opens the saved server.

### Authentication fails

Confirm `MCP_API_KEY` is set in the environment that launches the runtime adapter, not only in a separate terminal. If you changed the variable while OpenClaw was already running, restart the process.

### The endpoint does not connect

Confirm the endpoint uses your private host and the normal bearer-auth MCP path:

```text
https://{your-private-mcp-host}/mcp
```

Do not use a Claude-only signed connector URL such as `/mcp/connect/{signed-token}` for OpenClaw.

## Related docs

- [MCP Client Configuration](/docs/mcp-client-configuration/)
- [Claude Code MCP](/docs/quick-start/claude-code-mcp/)
- [Codex MCP](/docs/quick-start/codex/)

