---
title: "Add a remote MCP server to Claude Code, Cursor, VS Code"
description: "Add a remote MCP server over Streamable HTTP with OAuth to Claude Code, the Claude app, Cursor and VS Code. Exact config for each, which we tested, and fixes."
canonical: https://actionlake.com/guides/add-mcp-server-to-claude-code-cursor-vscode
updated: 2026-10-24
---

Guide · Setup

# How to add a remote MCP server to Claude Code, Cursor and VS Code (Streamable HTTP, OAuth)

**On this page**

Updated 24 October 2026 Published 22 October 2026 By the actionlake team

To add a remote MCP server, give your client the server's HTTPS URL and let it sign in with OAuth. In Claude Code that is one command: `claude mcp add --transport http <name> <url>`. In Cursor and VS Code it is a few lines in an `mcp.json` file. In the Claude app it is Settings, Connectors, Add custom connector. This guide uses the URL of actionlake, an MCP gateway, `https://connect.actionlake.com/mcp`, and marks which paths we tested ourselves and which follow the vendor's documentation.

**Start free - 100,000 calls a month, no card.** [Create a sandbox](https://actionlake.com/console) or read the [quickstart](https://actionlake.com/docs/quickstart).

[Start free](https://actionlake.com/console?start=sandbox)

## Remote vs local MCP servers

A local MCP server runs on your machine as a process the client starts; the client talks to it over standard input and output. A [remote MCP server](https://actionlake.com/glossary/remote-mcp-server) runs on the internet, and the client talks to it over HTTPS using the [Streamable HTTP transport](https://actionlake.com/glossary/streamable-http). Remote servers usually sign you in with OAuth instead of reading a token from an environment variable.

|  | Local (stdio) | Remote (Streamable HTTP) |
| --- | --- | --- |
| Runs on | Your machine | The provider's servers |
| Configured with | A command and arguments | A URL |
| Credentials | Often an env variable on each machine | OAuth sign-in, or a bearer header |
| Updates | You update the package | The provider updates the server |
| Works in browser and mobile clients | No | Yes, where the client supports it |

actionlake's server is remote. It supports OAuth 2.1 with [dynamic client registration](https://actionlake.com/glossary/oauth-dynamic-client-registration), so a client registers itself with no client id to copy. It also accepts an actionlake key as `Authorization: Bearer`.

## What we tested

| Client | Method | Status |
| --- | --- | --- |
| Claude Code | `claude mcp add` | Tested by us |
| Claude app (claude.ai, desktop) | Custom connector | Tested by us, on our own account, with an existing key; creating a new sandbox from the Claude app is not yet tested |
| Cursor | `mcp.json` with `url` | From Cursor's documentation, checked 22 October 2026; not yet tested by us |
| VS Code (Copilot agent mode) | `.vscode/mcp.json` or `code --add-mcp` | From VS Code's documentation, checked 22 October 2026; not yet tested by us |
| Other MCP clients | URL plus OAuth or bearer | Not tested by us: needs Streamable HTTP on revision 2025-06-18 or 2025-11-25, and OAuth with dynamic client registration or a bearer key |

## Claude Code

Run:

```bash
claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
```

Start `claude`. When the first tool call needs a tenant, the server answers 401 with an OAuth challenge, and Claude Code opens the consent page in your browser. Paste an actionlake key, or press **Create one** for a free sandbox tenant with no signup and no card. Approve, and the eight tools are available: `help`, `find_actions`, `get_action`, `do`, `ask`, `check`, `cost` and `account`.

Useful checks:

```bash
claude mcp list          # is actionlake registered, and is it connected?
```

Inside a session, `/mcp` shows each server's status and lets you sign in again.

Prefer a fixed key over OAuth, for example on a CI runner? Send it as a header instead:

```bash
claude mcp add --transport http actionlake https://connect.actionlake.com/mcp \
  --header "Authorization: Bearer $ACTIONLAKE_KEY"
```

## The Claude app

1. Open **Settings**, then **Connectors**.
2. Choose **Add custom connector**.
3. Name it `actionlake` and paste `https://connect.actionlake.com/mcp`. Add it.
4. Press **Connect**. The consent page opens: paste an existing actionlake key, then approve. We tested this path with an existing key. **Create one** is offered here too, but we have not yet tested it from the Claude app; if it fails, create the sandbox in Claude Code or the [console](https://actionlake.com/console) and paste its key.
5. Ask Claude: "help". The tools answer.

On Team and Enterprise plans, your workspace owner may need to add a custom connector before members can connect it.

## Cursor

Cursor reads MCP servers from `~/.cursor/mcp.json` (every project) or `.cursor/mcp.json` (one project). A remote server has a `url` instead of a `command`:

```json
{
  "mcpServers": {
    "actionlake": {
      "url": "https://connect.actionlake.com/mcp"
    }
  }
}
```

Cursor's documentation says it supports OAuth for remote servers that need it, and discovers the server's OAuth settings itself. Our server publishes them at `https://connect.actionlake.com/.well-known/oauth-protected-resource`. To use a key instead, add a header:

```json
{
  "mcpServers": {
    "actionlake": {
      "url": "https://connect.actionlake.com/mcp",
      "headers": { "Authorization": "Bearer ${env:ACTIONLAKE_KEY}" }
    }
  }
}
```

## VS Code

VS Code's own format uses a top-level `servers` object. For one workspace, create `.vscode/mcp.json`:

```json
{
  "servers": {
    "actionlake": {
      "type": "http",
      "url": "https://connect.actionlake.com/mcp"
    }
  }
}
```

Or add it to your user profile from the command line:

```bash
code --add-mcp '{"name":"actionlake","type":"http","url":"https://connect.actionlake.com/mcp"}'
```

With `type: http`, VS Code tries the Streamable HTTP transport first. A browser window opens for sign-in on the first connection when the server asks for it. Use the tools in Copilot's agent mode.

## Other MCP clients

We have not tested other clients. One that supports remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way. Give it three facts:

```text
URL     https://connect.actionlake.com/mcp
Auth    OAuth 2.1 with dynamic client registration and PKCE
        or  Authorization: Bearer al_…
Scopes  actions, account, billing (the consent page names what it grants)
```

A client that does not support OAuth can use the bearer header. A client that supports neither remote servers nor headers needs a local bridge; check its documentation.

## Project or user configuration?

| Put it in | When |
| --- | --- |
| User configuration (`~/.cursor/mcp.json`, the VS Code user profile, `claude mcp add --scope user`) | You want the server in every project on your machine |
| Project configuration (`.cursor/mcp.json`, `.vscode/mcp.json`, `claude mcp add --scope project`) | A team shares the repository and should share the server entry |

A project file is committed with the code, so never put a key in it. Commit the URL only, and let each person sign in with OAuth, or read the key from an environment variable as in the Cursor example above.

## Troubleshooting

| Symptom | Likely cause | Fix |
| --- | --- | --- |
| No browser window, and every call fails with 401 | The client does not handle the OAuth challenge | Use the bearer header with an actionlake key |
| The server connects, but `do` says "not permitted" | The key does not allow that action | Use a key whose `allowed_actions` covers it; `help` explains the refusal |
| "missing confirmation" on a delete | Destructive actions need `confirm: true` | The agent confirms, or a person approves, depending on the key's `confirm_policy` |
| Tools list is empty | The client saved the server but did not start it | Restart the client; in Claude Code run `/mcp` |
| Connection refused or a web page instead of tools | The URL points at the website, not the server | Use `https://connect.actionlake.com/mcp` exactly |

When something fails, ask the agent to call `help` with `about: "why did that fail?"`. It reads your last run and says what went wrong. `help` is free.

## After it connects

Ask for something real. The credential-free public services, such as exchange rates, public holidays and DNS lookups, need no setup, so the first call works at once. Then connect a business system: see [connect Claude to Xero](https://actionlake.com/guides/connect-claude-to-xero) or [connect Claude to Autotask](https://actionlake.com/guides/connect-claude-to-autotask). Before you hand the server to a team, give each agent its own scoped key: [seven controls for agent access](https://actionlake.com/guides/ai-agent-access-to-business-systems).

## Frequently asked questions

**What is the Streamable HTTP transport?**

It is the MCP transport for remote servers. The client sends JSON-RPC requests over HTTPS POST, and the server can stream responses back on the same connection. It replaced the older HTTP with server-sent events transport.

**Do I need a separate MCP server for every system?**

Not with a gateway. One remote server, actionlake, fronts 1,000+ connectors, and your client sees eight tools however many systems you connect. See MCP server vs MCP gateway.

See [MCP server vs MCP gateway](https://actionlake.com/guides/mcp-server-vs-mcp-gateway)

**Is a bearer key less secure than OAuth?**

They protect different things. OAuth lets you approve access in a browser and revoke the client's token without touching the key. A bearer key suits headless runners. Either way, scope the key and give it a cap, and the agent never holds a vendor credential.

**Does adding the server cost anything?**

No. Connecting, listing tools, help, find_actions, get_action, check, cost and account are free. You pay only for upstream calls sent to a vendor, and the Free plan includes 100,000 a month. See pricing.

See [pricing](https://actionlake.com/pricing)

**Start free - 100,000 calls a month, no card.** Add `https://connect.actionlake.com/mcp` to your client and press **Create one**.

[Start free](https://actionlake.com/console?start=sandbox)

## Related guides

- [Guide · Xero How to connect Claude to Xero (MCP), step by step](https://actionlake.com/guides/connect-claude-to-xero)
- [Guide · Autotask Connect Claude, or another MCP client, to Autotask PSA](https://actionlake.com/guides/connect-claude-to-autotask)
- [Guide · Control How to give an AI agent access to your business systems: permissions, approvals, caps and a record](https://actionlake.com/guides/ai-agent-access-to-business-systems)

[All guides](https://actionlake.com/guides)

## Try it on your own systems.

[Start free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

100,000 free calls a month. No card. Hard caps on every key.

---

Source: https://actionlake.com/guides/add-mcp-server-to-claude-code-cursor-vscode
More: https://actionlake.com/llms.txt
