> ## Documentation Index
> Fetch the complete documentation index at: https://docs.valkyrieapp.azumo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Set up the MCP server

> Register the Valkyrie MCP server in your client, with the transport and auth details.

## What you need

* A Valkyrie **MCP API key** (prefixed `vk_mcp_`), created on the
  [API Keys](/dashboard/api-keys) screen for the environment you want to operate.
* Your API base URL (e.g. `https://valkyrie-back.azumo.com`).

## Connection details that matter

The Valkyrie MCP endpoint has two specifics that trip people up:

<Warning>
  1. **Transport:** use **streamable HTTP** at the path **`/mcp-http/mcp`**.
  2. **Auth:** the key must be passed as the **`api_key` query parameter**, not as a
     header. Supplied as a header, the transport connects but tools report
     *"No API key configured."*
</Warning>

So the full URL is:

```
https://valkyrie-back.azumo.com/mcp-http/mcp?api_key=YOUR_VALKYRIE_MCP_KEY
```

## Claude Code

```bash theme={null}
claude mcp add --transport http valkyrie \
  "https://valkyrie-back.azumo.com/mcp-http/mcp?api_key=YOUR_VALKYRIE_MCP_KEY"
```

Restart Claude Code and run `claude mcp list` to confirm it's connected.

## Claude Desktop

Edit Claude Desktop's config file:

* **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
* **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`

Add Valkyrie under `mcpServers`:

```json theme={null}
{
  "mcpServers": {
    "valkyrie": {
      "url": "https://valkyrie-back.azumo.com/mcp-http/mcp?api_key=YOUR_VALKYRIE_MCP_KEY"
    }
  }
}
```

Restart the app.

## Cursor

Add an MCP server in Cursor's settings with the same streamable-HTTP URL, including
the `api_key` query parameter.

## Verify it works

Connecting is not the same as being authenticated. `server_info` reporting that a key
was *supplied* does **not** mean the key is *valid*. To confirm, call a data tool such
as `list_deployments`:

* **Valid key** → returns your deployments.
* **Invalid key** → returns `{"error": "Invalid API key"}`.

<Note>
  Keys are **per-environment**. An MCP key from one environment returns
  *Invalid API key* against another. Issue the key from the dashboard of the
  environment you intend to operate.
</Note>
