Skip to content

Guide · Setup

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

Updated Published 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.

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 runs on the internet, and the client talks to it over HTTPS using the Streamable HTTP transport. Remote servers usually sign you in with OAuth instead of reading a token from an environment variable.

Local (stdio)Remote (Streamable HTTP)
Runs onYour machineThe provider's servers
Configured withA command and argumentsA URL
CredentialsOften an env variable on each machineOAuth sign-in, or a bearer header
UpdatesYou update the packageThe provider updates the server
Works in browser and mobile clientsNoYes, where the client supports it

actionlake's server is remote. It supports OAuth 2.1 with 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

ClientMethodStatus
Claude Codeclaude mcp addTested by us
Claude app (claude.ai, desktop)Custom connectorTested by us, on our own account, with an existing key; creating a new sandbox from the Claude app is not yet tested
Cursormcp.json with urlFrom Cursor's documentation, checked 22 October 2026; not yet tested by us
VS Code (Copilot agent mode).vscode/mcp.json or code --add-mcpFrom VS Code's documentation, checked 22 October 2026; not yet tested by us
Other MCP clientsURL plus OAuth or bearerNot 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:

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:

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:

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 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:

{
  "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:

{
  "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:

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

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

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:

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 inWhen
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

SymptomLikely causeFix
No browser window, and every call fails with 401The client does not handle the OAuth challengeUse the bearer header with an actionlake key
The server connects, but do says "not permitted"The key does not allow that actionUse a key whose allowed_actions covers it; help explains the refusal
"missing confirmation" on a deleteDestructive actions need confirm: trueThe agent confirms, or a person approves, depending on the key's confirm_policy
Tools list is emptyThe client saved the server but did not start itRestart the client; in Claude Code run /mcp
Connection refused or a web page instead of toolsThe URL points at the website, not the serverUse 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 or connect Claude to Autotask. Before you hand the server to a team, give each agent its own scoped key: seven controls for agent access.

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.

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.

Try it on your own systems.

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