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

# Connect your client

> Config snippets for Claude Code, Claude Desktop, Cursor, VS Code, Codex CLI, and any other Streamable HTTP MCP client.

Any Streamable HTTP MCP client works. The snippets below pass an API key as a header, which every client supports. A client that drives OAuth itself needs no key here — point it at the URL and it discovers the flow from the endpoint's own `401` challenge; see [Authentication](/mcp/authentication).

<Tabs>
  <Tab title="Claude Code">
    ```bash theme={null}
    claude mcp add --transport http lofty https://mcp.lofty.com/mcp \
      --header "Authorization: Bearer $LOFTY_CUSTOMER_KEY"
    ```

    Verify with `claude mcp list`, then `/mcp` inside a session.
  </Tab>

  <Tab title="Claude Desktop">
    `~/Library/Application Support/Claude/claude_desktop_config.json`

    ```json theme={null}
    {
      "mcpServers": {
        "lofty": {
          "type": "http",
          "url": "https://mcp.lofty.com/mcp",
          "headers": { "Authorization": "Bearer YOUR_KEY" }
        }
      }
    }
    ```

    Restart the app after editing. The Lofty tools appear under the connector icon.
  </Tab>

  <Tab title="Cursor">
    `~/.cursor/mcp.json` — or `.cursor/mcp.json` for one project

    ```json theme={null}
    {
      "mcpServers": {
        "lofty": {
          "url": "https://mcp.lofty.com/mcp",
          "headers": { "Authorization": "Bearer YOUR_KEY" }
        }
      }
    }
    ```
  </Tab>

  <Tab title="VS Code">
    `.vscode/mcp.json` — prompts for the key

    ```json theme={null}
    {
      "inputs": [
        { "id": "lofty-key", "type": "promptString",
          "description": "Lofty API key", "password": true }
      ],
      "servers": {
        "lofty": {
          "type": "http",
          "url": "https://mcp.lofty.com/mcp",
          "headers": { "Authorization": "Bearer ${input:lofty-key}" }
        }
      }
    }
    ```

    The `inputs` block makes VS Code prompt for the key and store it in its secret store, so the token never lands in a file you might commit.
  </Tab>

  <Tab title="Codex CLI">
    `~/.codex/config.toml`

    ```toml theme={null}
    [mcp_servers.lofty]
    url = "https://mcp.lofty.com/mcp"
    bearer_token_env_var = "LOFTY_CUSTOMER_KEY"
    ```

    Reads the key from the environment rather than the config file — the same variable the Lofty CLI already uses.
  </Tab>

  <Tab title="Other clients">
    Follow your client's MCP setup instructions with:

    * Transport: **Streamable HTTP** (not SSE, not stdio)
    * URL: `https://mcp.lofty.com/mcp`
    * Header: `Authorization: Bearer <your key>`

    To test with no client at all, the endpoint is plain JSON-RPC over HTTP:

    ```bash theme={null}
    curl https://mcp.lofty.com/mcp \
      -H "Content-Type: application/json" \
      -H "Accept: application/json, text/event-stream" \
      -H "Authorization: Bearer $LOFTY_CUSTOMER_KEY" \
      -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
    ```
  </Tab>
</Tabs>
